Chapter 1. Device registration

Table of Contents

enum ieee80211_channel_flags — channel flags
struct ieee80211_channel — channel definition
enum ieee80211_rate_flags — rate flags
struct ieee80211_rate — bitrate definition
struct ieee80211_sta_ht_cap — STA's HT capabilities
struct ieee80211_supported_band — frequency band definition
enum cfg80211_signal_type — signal type
enum wiphy_params_flags — set_wiphy_params bitfield values
enum wiphy_flags — wiphy capability flags
struct wiphy — wireless hardware description
struct wireless_dev — wireless device state
wiphy_new — create a new wiphy for use with cfg80211
wiphy_register — register a wiphy with cfg80211
wiphy_unregister — deregister a wiphy from cfg80211
wiphy_free — free wiphy
wiphy_name — get wiphy name
wiphy_dev — get wiphy dev pointer
wiphy_priv — return priv from wiphy
priv_to_wiphy — return the wiphy containing the priv
set_wiphy_dev — set device pointer for wiphy
wdev_priv — return wiphy priv from wireless_dev
struct ieee80211_iface_limit — limit on certain interface types
struct ieee80211_iface_combination — possible interface combination
cfg80211_check_combinations — check interface combinations

In order for a driver to use cfg80211, it must register the hardware device with cfg80211. This happens through a number of hardware capability structs described below.

The fundamental structure for each device is the 'wiphy', of which each instance describes a physical wireless device connected to the system. Each such wiphy can have zero, one, or many virtual interfaces associated with it, which need to be identified as such by pointing the network interface's ieee80211_ptr pointer to a struct wireless_dev which further describes the wireless part of the interface, normally this struct is embedded in the network interface's private data area. Drivers can optionally allow creating or destroying virtual interfaces on the fly, but without at least one or the ability to create some the wireless device isn't useful.

Each wiphy structure contains device capability information, and also has a pointer to the various operations the driver offers. The definitions and structures here describe these capabilities in detail.