|
@@ -281,9 +281,13 @@ struct ieee80211_supported_band {
|
|
|
/**
|
|
|
* struct vif_params - describes virtual interface parameters
|
|
|
* @use_4addr: use 4-address frames
|
|
|
+ * @macaddr: address to use for this virtual interface. This will only
|
|
|
+ * be used for non-netdevice interfaces. If this parameter is set
|
|
|
+ * to zero address the driver may determine the address as needed.
|
|
|
*/
|
|
|
struct vif_params {
|
|
|
int use_4addr;
|
|
|
+ u8 macaddr[ETH_ALEN];
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -326,7 +330,7 @@ struct cfg80211_chan_def {
|
|
|
* cfg80211_get_chandef_type - return old channel type from chandef
|
|
|
* @chandef: the channel definition
|
|
|
*
|
|
|
- * Returns the old channel type (NOHT, HT20, HT40+/-) from a given
|
|
|
+ * Return: The old channel type (NOHT, HT20, HT40+/-) from a given
|
|
|
* chandef, which must have a bandwidth allowing this conversion.
|
|
|
*/
|
|
|
static inline enum nl80211_channel_type
|
|
@@ -364,7 +368,7 @@ void cfg80211_chandef_create(struct cfg80211_chan_def *chandef,
|
|
|
* @chandef1: first channel definition
|
|
|
* @chandef2: second channel definition
|
|
|
*
|
|
|
- * Returns %true if the channels defined by the channel definitions are
|
|
|
+ * Return: %true if the channels defined by the channel definitions are
|
|
|
* identical, %false otherwise.
|
|
|
*/
|
|
|
static inline bool
|
|
@@ -382,7 +386,7 @@ cfg80211_chandef_identical(const struct cfg80211_chan_def *chandef1,
|
|
|
* @chandef1: first channel definition
|
|
|
* @chandef2: second channel definition
|
|
|
*
|
|
|
- * Returns %NULL if the given channel definitions are incompatible,
|
|
|
+ * Return: %NULL if the given channel definitions are incompatible,
|
|
|
* chandef1 or chandef2 otherwise.
|
|
|
*/
|
|
|
const struct cfg80211_chan_def *
|
|
@@ -392,6 +396,7 @@ cfg80211_chandef_compatible(const struct cfg80211_chan_def *chandef1,
|
|
|
/**
|
|
|
* cfg80211_chandef_valid - check if a channel definition is valid
|
|
|
* @chandef: the channel definition to check
|
|
|
+ * Return: %true if the channel definition is valid. %false otherwise.
|
|
|
*/
|
|
|
bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef);
|
|
|
|
|
@@ -399,7 +404,8 @@ bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef);
|
|
|
* cfg80211_chandef_usable - check if secondary channels can be used
|
|
|
* @wiphy: the wiphy to validate against
|
|
|
* @chandef: the channel definition to check
|
|
|
- * @prohibited_flags: the regulatory chanenl flags that must not be set
|
|
|
+ * @prohibited_flags: the regulatory channel flags that must not be set
|
|
|
+ * Return: %true if secondary channels are usable. %false otherwise.
|
|
|
*/
|
|
|
bool cfg80211_chandef_usable(struct wiphy *wiphy,
|
|
|
const struct cfg80211_chan_def *chandef,
|
|
@@ -608,6 +614,8 @@ enum station_parameters_apply_mask {
|
|
|
* @sta_modify_mask: bitmap indicating which parameters changed
|
|
|
* (for those that don't have a natural "no change" value),
|
|
|
* see &enum station_parameters_apply_mask
|
|
|
+ * @local_pm: local link-specific mesh power save mode (no change when set
|
|
|
+ * to unknown)
|
|
|
*/
|
|
|
struct station_parameters {
|
|
|
u8 *supported_rates;
|
|
@@ -623,6 +631,7 @@ struct station_parameters {
|
|
|
struct ieee80211_vht_cap *vht_capa;
|
|
|
u8 uapsd_queues;
|
|
|
u8 max_sp;
|
|
|
+ enum nl80211_mesh_power_mode local_pm;
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -653,6 +662,9 @@ struct station_parameters {
|
|
|
* @STATION_INFO_STA_FLAGS: @sta_flags filled
|
|
|
* @STATION_INFO_BEACON_LOSS_COUNT: @beacon_loss_count filled
|
|
|
* @STATION_INFO_T_OFFSET: @t_offset filled
|
|
|
+ * @STATION_INFO_LOCAL_PM: @local_pm filled
|
|
|
+ * @STATION_INFO_PEER_PM: @peer_pm filled
|
|
|
+ * @STATION_INFO_NONPEER_PM: @nonpeer_pm filled
|
|
|
*/
|
|
|
enum station_info_flags {
|
|
|
STATION_INFO_INACTIVE_TIME = 1<<0,
|
|
@@ -676,6 +688,9 @@ enum station_info_flags {
|
|
|
STATION_INFO_STA_FLAGS = 1<<18,
|
|
|
STATION_INFO_BEACON_LOSS_COUNT = 1<<19,
|
|
|
STATION_INFO_T_OFFSET = 1<<20,
|
|
|
+ STATION_INFO_LOCAL_PM = 1<<21,
|
|
|
+ STATION_INFO_PEER_PM = 1<<22,
|
|
|
+ STATION_INFO_NONPEER_PM = 1<<23,
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -789,6 +804,9 @@ struct sta_bss_parameters {
|
|
|
* @sta_flags: station flags mask & values
|
|
|
* @beacon_loss_count: Number of times beacon loss event has triggered.
|
|
|
* @t_offset: Time offset of the station relative to this host.
|
|
|
+ * @local_pm: local mesh STA power save mode
|
|
|
+ * @peer_pm: peer mesh STA power save mode
|
|
|
+ * @nonpeer_pm: non-peer mesh STA power save mode
|
|
|
*/
|
|
|
struct station_info {
|
|
|
u32 filled;
|
|
@@ -818,6 +836,9 @@ struct station_info {
|
|
|
|
|
|
u32 beacon_loss_count;
|
|
|
s64 t_offset;
|
|
|
+ enum nl80211_mesh_power_mode local_pm;
|
|
|
+ enum nl80211_mesh_power_mode peer_pm;
|
|
|
+ enum nl80211_mesh_power_mode nonpeer_pm;
|
|
|
|
|
|
/*
|
|
|
* Note: Add a new enum station_info_flags value for each new field and
|
|
@@ -993,6 +1014,10 @@ struct bss_parameters {
|
|
|
* @dot11MeshHWMPconfirmationInterval: The minimum interval of time (in TUs)
|
|
|
* during which a mesh STA can send only one Action frame containing
|
|
|
* a PREQ element for root path confirmation.
|
|
|
+ * @power_mode: The default mesh power save mode which will be the initial
|
|
|
+ * setting for new peer links.
|
|
|
+ * @dot11MeshAwakeWindowDuration: The duration in TUs the STA will remain awake
|
|
|
+ * after transmitting its beacon.
|
|
|
*/
|
|
|
struct mesh_config {
|
|
|
u16 dot11MeshRetryTimeout;
|
|
@@ -1020,6 +1045,8 @@ struct mesh_config {
|
|
|
u32 dot11MeshHWMPactivePathToRootTimeout;
|
|
|
u16 dot11MeshHWMProotInterval;
|
|
|
u16 dot11MeshHWMPconfirmationInterval;
|
|
|
+ enum nl80211_mesh_power_mode power_mode;
|
|
|
+ u16 dot11MeshAwakeWindowDuration;
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -1034,6 +1061,8 @@ struct mesh_config {
|
|
|
* @ie_len: length of vendor information elements
|
|
|
* @is_authenticated: this mesh requires authentication
|
|
|
* @is_secure: this mesh uses security
|
|
|
+ * @dtim_period: DTIM period to use
|
|
|
+ * @beacon_interval: beacon interval to use
|
|
|
* @mcast_rate: multicat rate for Mesh Node [6Mbps is the default for 802.11a]
|
|
|
*
|
|
|
* These parameters are fixed when the mesh is created.
|
|
@@ -1049,6 +1078,8 @@ struct mesh_setup {
|
|
|
u8 ie_len;
|
|
|
bool is_authenticated;
|
|
|
bool is_secure;
|
|
|
+ u8 dtim_period;
|
|
|
+ u16 beacon_interval;
|
|
|
int mcast_rate[IEEE80211_NUM_BANDS];
|
|
|
};
|
|
|
|
|
@@ -1266,7 +1297,7 @@ struct cfg80211_bss {
|
|
|
*
|
|
|
* Note that the return value is an RCU-protected pointer, so
|
|
|
* rcu_read_lock() must be held when calling this function.
|
|
|
- * Returns %NULL if not found.
|
|
|
+ * Return: %NULL if not found.
|
|
|
*/
|
|
|
const u8 *ieee80211_bss_get_ie(struct cfg80211_bss *bss, u8 ie);
|
|
|
|
|
@@ -1434,6 +1465,7 @@ struct cfg80211_ibss_params {
|
|
|
* @ie: IEs for association request
|
|
|
* @ie_len: Length of assoc_ie in octets
|
|
|
* @privacy: indicates whether privacy-enabled APs should be used
|
|
|
+ * @mfp: indicate whether management frame protection is used
|
|
|
* @crypto: crypto settings
|
|
|
* @key_len: length of WEP key for shared key authentication
|
|
|
* @key_idx: index of WEP key for shared key authentication
|
|
@@ -1454,6 +1486,7 @@ struct cfg80211_connect_params {
|
|
|
u8 *ie;
|
|
|
size_t ie_len;
|
|
|
bool privacy;
|
|
|
+ enum nl80211_mfp mfp;
|
|
|
struct cfg80211_crypto_settings crypto;
|
|
|
const u8 *key;
|
|
|
u8 key_len, key_idx;
|
|
@@ -2092,6 +2125,7 @@ struct ieee80211_iface_limit {
|
|
|
* @beacon_int_infra_match: In this combination, the beacon intervals
|
|
|
* between infrastructure and AP types must match. This is required
|
|
|
* only in special cases.
|
|
|
+ * @radar_detect_widths: bitmap of channel widths supported for radar detection
|
|
|
*
|
|
|
* These examples can be expressed as follows:
|
|
|
*
|
|
@@ -2144,6 +2178,7 @@ struct ieee80211_iface_combination {
|
|
|
u16 max_interfaces;
|
|
|
u8 n_limits;
|
|
|
bool beacon_int_infra_match;
|
|
|
+ u8 radar_detect_widths;
|
|
|
};
|
|
|
|
|
|
struct mac_address {
|
|
@@ -2364,8 +2399,8 @@ struct wiphy {
|
|
|
struct ieee80211_supported_band *bands[IEEE80211_NUM_BANDS];
|
|
|
|
|
|
/* Lets us get back the wiphy on the callback */
|
|
|
- int (*reg_notifier)(struct wiphy *wiphy,
|
|
|
- struct regulatory_request *request);
|
|
|
+ void (*reg_notifier)(struct wiphy *wiphy,
|
|
|
+ struct regulatory_request *request);
|
|
|
|
|
|
/* fields below are read-only, assigned by cfg80211 */
|
|
|
|
|
@@ -2409,6 +2444,7 @@ static inline void wiphy_net_set(struct wiphy *wiphy, struct net *net)
|
|
|
* wiphy_priv - return priv from wiphy
|
|
|
*
|
|
|
* @wiphy: the wiphy whose priv pointer to return
|
|
|
+ * Return: The priv of @wiphy.
|
|
|
*/
|
|
|
static inline void *wiphy_priv(struct wiphy *wiphy)
|
|
|
{
|
|
@@ -2420,6 +2456,7 @@ static inline void *wiphy_priv(struct wiphy *wiphy)
|
|
|
* priv_to_wiphy - return the wiphy containing the priv
|
|
|
*
|
|
|
* @priv: a pointer previously returned by wiphy_priv
|
|
|
+ * Return: The wiphy of @priv.
|
|
|
*/
|
|
|
static inline struct wiphy *priv_to_wiphy(void *priv)
|
|
|
{
|
|
@@ -2442,6 +2479,7 @@ static inline void set_wiphy_dev(struct wiphy *wiphy, struct device *dev)
|
|
|
* wiphy_dev - get wiphy dev pointer
|
|
|
*
|
|
|
* @wiphy: The wiphy whose device struct to look up
|
|
|
+ * Return: The dev of @wiphy.
|
|
|
*/
|
|
|
static inline struct device *wiphy_dev(struct wiphy *wiphy)
|
|
|
{
|
|
@@ -2452,6 +2490,7 @@ static inline struct device *wiphy_dev(struct wiphy *wiphy)
|
|
|
* wiphy_name - get wiphy name
|
|
|
*
|
|
|
* @wiphy: The wiphy whose name to return
|
|
|
+ * Return: The name of @wiphy.
|
|
|
*/
|
|
|
static inline const char *wiphy_name(const struct wiphy *wiphy)
|
|
|
{
|
|
@@ -2467,8 +2506,8 @@ static inline const char *wiphy_name(const struct wiphy *wiphy)
|
|
|
* Create a new wiphy and associate the given operations with it.
|
|
|
* @sizeof_priv bytes are allocated for private use.
|
|
|
*
|
|
|
- * The returned pointer must be assigned to each netdev's
|
|
|
- * ieee80211_ptr for proper operation.
|
|
|
+ * Return: A pointer to the new wiphy. This pointer must be
|
|
|
+ * assigned to each netdev's ieee80211_ptr for proper operation.
|
|
|
*/
|
|
|
struct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv);
|
|
|
|
|
@@ -2477,7 +2516,7 @@ struct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv);
|
|
|
*
|
|
|
* @wiphy: The wiphy to register.
|
|
|
*
|
|
|
- * Returns a non-negative wiphy index or a negative error code.
|
|
|
+ * Return: A non-negative wiphy index or a negative error code.
|
|
|
*/
|
|
|
extern int wiphy_register(struct wiphy *wiphy);
|
|
|
|
|
@@ -2626,6 +2665,7 @@ static inline u8 *wdev_address(struct wireless_dev *wdev)
|
|
|
* wdev_priv - return wiphy priv from wireless_dev
|
|
|
*
|
|
|
* @wdev: The wireless device whose wiphy's priv pointer to return
|
|
|
+ * Return: The wiphy priv of @wdev.
|
|
|
*/
|
|
|
static inline void *wdev_priv(struct wireless_dev *wdev)
|
|
|
{
|
|
@@ -2643,12 +2683,14 @@ static inline void *wdev_priv(struct wireless_dev *wdev)
|
|
|
* ieee80211_channel_to_frequency - convert channel number to frequency
|
|
|
* @chan: channel number
|
|
|
* @band: band, necessary due to channel number overlap
|
|
|
+ * Return: The corresponding frequency (in MHz), or 0 if the conversion failed.
|
|
|
*/
|
|
|
extern int ieee80211_channel_to_frequency(int chan, enum ieee80211_band band);
|
|
|
|
|
|
/**
|
|
|
* ieee80211_frequency_to_channel - convert frequency to channel number
|
|
|
* @freq: center frequency
|
|
|
+ * Return: The corresponding channel, or 0 if the conversion failed.
|
|
|
*/
|
|
|
extern int ieee80211_frequency_to_channel(int freq);
|
|
|
|
|
@@ -2665,6 +2707,7 @@ extern struct ieee80211_channel *__ieee80211_get_channel(struct wiphy *wiphy,
|
|
|
* ieee80211_get_channel - get channel struct from wiphy for specified frequency
|
|
|
* @wiphy: the struct wiphy to get the channel for
|
|
|
* @freq: the center frequency of the channel
|
|
|
+ * Return: The channel struct from @wiphy at @freq.
|
|
|
*/
|
|
|
static inline struct ieee80211_channel *
|
|
|
ieee80211_get_channel(struct wiphy *wiphy, int freq)
|
|
@@ -2679,10 +2722,10 @@ ieee80211_get_channel(struct wiphy *wiphy, int freq)
|
|
|
* @basic_rates: bitmap of basic rates
|
|
|
* @bitrate: the bitrate for which to find the basic rate
|
|
|
*
|
|
|
- * This function returns the basic rate corresponding to a given
|
|
|
- * bitrate, that is the next lower bitrate contained in the basic
|
|
|
- * rate map, which is, for this function, given as a bitmap of
|
|
|
- * indices of rates in the band's bitrate table.
|
|
|
+ * Return: The basic rate corresponding to a given bitrate, that
|
|
|
+ * is the next lower bitrate contained in the basic rate map,
|
|
|
+ * which is, for this function, given as a bitmap of indices of
|
|
|
+ * rates in the band's bitrate table.
|
|
|
*/
|
|
|
struct ieee80211_rate *
|
|
|
ieee80211_get_response_rate(struct ieee80211_supported_band *sband,
|
|
@@ -2775,18 +2818,21 @@ extern const unsigned char bridge_tunnel_header[6];
|
|
|
/**
|
|
|
* ieee80211_get_hdrlen_from_skb - get header length from data
|
|
|
*
|
|
|
+ * @skb: the frame
|
|
|
+ *
|
|
|
* Given an skb with a raw 802.11 header at the data pointer this function
|
|
|
- * returns the 802.11 header length in bytes (not including encryption
|
|
|
- * headers). If the data in the sk_buff is too short to contain a valid 802.11
|
|
|
- * header the function returns 0.
|
|
|
+ * returns the 802.11 header length.
|
|
|
*
|
|
|
- * @skb: the frame
|
|
|
+ * Return: The 802.11 header length in bytes (not including encryption
|
|
|
+ * headers). Or 0 if the data in the sk_buff is too short to contain a valid
|
|
|
+ * 802.11 header.
|
|
|
*/
|
|
|
unsigned int ieee80211_get_hdrlen_from_skb(const struct sk_buff *skb);
|
|
|
|
|
|
/**
|
|
|
* ieee80211_hdrlen - get header length in bytes from frame control
|
|
|
* @fc: frame control field in little-endian format
|
|
|
+ * Return: The header length in bytes.
|
|
|
*/
|
|
|
unsigned int __attribute_const__ ieee80211_hdrlen(__le16 fc);
|
|
|
|
|
@@ -2794,7 +2840,7 @@ unsigned int __attribute_const__ ieee80211_hdrlen(__le16 fc);
|
|
|
* ieee80211_get_mesh_hdrlen - get mesh extension header length
|
|
|
* @meshhdr: the mesh extension header, only the flags field
|
|
|
* (first byte) will be accessed
|
|
|
- * Returns the length of the extension header, which is always at
|
|
|
+ * Return: The length of the extension header, which is always at
|
|
|
* least 6 bytes and at most 18 if address 5 and 6 are present.
|
|
|
*/
|
|
|
unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr);
|
|
@@ -2812,6 +2858,7 @@ unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr);
|
|
|
* @skb: the 802.11 data frame
|
|
|
* @addr: the device MAC address
|
|
|
* @iftype: the virtual interface type
|
|
|
+ * Return: 0 on success. Non-zero on error.
|
|
|
*/
|
|
|
int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,
|
|
|
enum nl80211_iftype iftype);
|
|
@@ -2823,6 +2870,7 @@ int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr,
|
|
|
* @iftype: the virtual interface type
|
|
|
* @bssid: the network bssid (used only for iftype STATION and ADHOC)
|
|
|
* @qos: build 802.11 QoS data frame
|
|
|
+ * Return: 0 on success, or a negative error code.
|
|
|
*/
|
|
|
int ieee80211_data_from_8023(struct sk_buff *skb, const u8 *addr,
|
|
|
enum nl80211_iftype iftype, u8 *bssid, bool qos);
|
|
@@ -2850,6 +2898,7 @@ void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list,
|
|
|
/**
|
|
|
* cfg80211_classify8021d - determine the 802.1p/1d tag for a data frame
|
|
|
* @skb: the data frame
|
|
|
+ * Return: The 802.1p/1d tag.
|
|
|
*/
|
|
|
unsigned int cfg80211_classify8021d(struct sk_buff *skb);
|
|
|
|
|
@@ -2860,12 +2909,13 @@ unsigned int cfg80211_classify8021d(struct sk_buff *skb);
|
|
|
* @ies: data consisting of IEs
|
|
|
* @len: length of data
|
|
|
*
|
|
|
- * This function will return %NULL if the element ID could
|
|
|
- * not be found or if the element is invalid (claims to be
|
|
|
- * longer than the given data), or a pointer to the first byte
|
|
|
- * of the requested element, that is the byte containing the
|
|
|
- * element ID. There are no checks on the element length
|
|
|
- * other than having to fit into the given data.
|
|
|
+ * Return: %NULL if the element ID could not be found or if
|
|
|
+ * the element is invalid (claims to be longer than the given
|
|
|
+ * data), or a pointer to the first byte of the requested
|
|
|
+ * element, that is the byte containing the element ID.
|
|
|
+ *
|
|
|
+ * Note: There are no checks on the element length other than
|
|
|
+ * having to fit into the given data.
|
|
|
*/
|
|
|
const u8 *cfg80211_find_ie(u8 eid, const u8 *ies, int len);
|
|
|
|
|
@@ -2877,12 +2927,13 @@ const u8 *cfg80211_find_ie(u8 eid, const u8 *ies, int len);
|
|
|
* @ies: data consisting of IEs
|
|
|
* @len: length of data
|
|
|
*
|
|
|
- * This function will return %NULL if the vendor specific element ID
|
|
|
- * could not be found or if the element is invalid (claims to be
|
|
|
- * longer than the given data), or a pointer to the first byte
|
|
|
- * of the requested element, that is the byte containing the
|
|
|
- * element ID. There are no checks on the element length
|
|
|
- * other than having to fit into the given data.
|
|
|
+ * Return: %NULL if the vendor specific element ID could not be found or if the
|
|
|
+ * element is invalid (claims to be longer than the given data), or a pointer to
|
|
|
+ * the first byte of the requested element, that is the byte containing the
|
|
|
+ * element ID.
|
|
|
+ *
|
|
|
+ * Note: There are no checks on the element length other than having to fit into
|
|
|
+ * the given data.
|
|
|
*/
|
|
|
const u8 *cfg80211_find_vendor_ie(unsigned int oui, u8 oui_type,
|
|
|
const u8 *ies, int len);
|
|
@@ -2915,6 +2966,8 @@ const u8 *cfg80211_find_vendor_ie(unsigned int oui, u8 oui_type,
|
|
|
*
|
|
|
* Drivers should check the return value, its possible you can get
|
|
|
* an -ENOMEM.
|
|
|
+ *
|
|
|
+ * Return: 0 on success. -ENOMEM.
|
|
|
*/
|
|
|
extern int regulatory_hint(struct wiphy *wiphy, const char *alpha2);
|
|
|
|
|
@@ -2944,13 +2997,13 @@ extern void wiphy_apply_custom_regulatory(
|
|
|
* it wants to follow we respect that unless a country IE has been received
|
|
|
* and processed already.
|
|
|
*
|
|
|
- * When an error occurs, for example if no rule can be found, the return value
|
|
|
- * is encoded using ERR_PTR(). Use IS_ERR() to check and PTR_ERR() to obtain
|
|
|
- * the numeric return value. The numeric return value will be -ERANGE if we
|
|
|
- * determine the given center_freq does not even have a regulatory rule for a
|
|
|
- * frequency range in the center_freq's band. See freq_in_rule_band() for our
|
|
|
- * current definition of a band -- this is purely subjective and right now it's
|
|
|
- * 802.11 specific.
|
|
|
+ * Return: A valid pointer, or, when an error occurs, for example if no rule
|
|
|
+ * can be found, the return value is encoded using ERR_PTR(). Use IS_ERR() to
|
|
|
+ * check and PTR_ERR() to obtain the numeric return value. The numeric return
|
|
|
+ * value will be -ERANGE if we determine the given center_freq does not even
|
|
|
+ * have a regulatory rule for a frequency range in the center_freq's band.
|
|
|
+ * See freq_in_rule_band() for our current definition of a band -- this is
|
|
|
+ * purely subjective and right now it's 802.11 specific.
|
|
|
*/
|
|
|
const struct ieee80211_reg_rule *freq_reg_info(struct wiphy *wiphy,
|
|
|
u32 center_freq);
|
|
@@ -3000,7 +3053,8 @@ void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
|
|
|
* This informs cfg80211 that BSS information was found and
|
|
|
* the BSS should be updated/added.
|
|
|
*
|
|
|
- * NOTE: Returns a referenced struct, must be released with cfg80211_put_bss()!
|
|
|
+ * Return: A referenced struct, must be released with cfg80211_put_bss()!
|
|
|
+ * Or %NULL on error.
|
|
|
*/
|
|
|
struct cfg80211_bss * __must_check
|
|
|
cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
|
@@ -3025,7 +3079,8 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
|
|
* This informs cfg80211 that BSS information was found and
|
|
|
* the BSS should be updated/added.
|
|
|
*
|
|
|
- * NOTE: Returns a referenced struct, must be released with cfg80211_put_bss()!
|
|
|
+ * Return: A referenced struct, must be released with cfg80211_put_bss()!
|
|
|
+ * Or %NULL on error.
|
|
|
*/
|
|
|
struct cfg80211_bss * __must_check
|
|
|
cfg80211_inform_bss(struct wiphy *wiphy,
|
|
@@ -3302,16 +3357,18 @@ void wiphy_rfkill_stop_polling(struct wiphy *wiphy);
|
|
|
* the testmode command. Since it is intended for a reply, calling
|
|
|
* it outside of the @testmode_cmd operation is invalid.
|
|
|
*
|
|
|
- * The returned skb (or %NULL if any errors happen) is pre-filled
|
|
|
- * with the wiphy index and set up in a way that any data that is
|
|
|
- * put into the skb (with skb_put(), nla_put() or similar) will end
|
|
|
- * up being within the %NL80211_ATTR_TESTDATA attribute, so all that
|
|
|
- * needs to be done with the skb is adding data for the corresponding
|
|
|
- * userspace tool which can then read that data out of the testdata
|
|
|
- * attribute. You must not modify the skb in any other way.
|
|
|
+ * The returned skb is pre-filled with the wiphy index and set up in
|
|
|
+ * a way that any data that is put into the skb (with skb_put(),
|
|
|
+ * nla_put() or similar) will end up being within the
|
|
|
+ * %NL80211_ATTR_TESTDATA attribute, so all that needs to be done
|
|
|
+ * with the skb is adding data for the corresponding userspace tool
|
|
|
+ * which can then read that data out of the testdata attribute. You
|
|
|
+ * must not modify the skb in any other way.
|
|
|
*
|
|
|
* When done, call cfg80211_testmode_reply() with the skb and return
|
|
|
* its error code as the result of the @testmode_cmd operation.
|
|
|
+ *
|
|
|
+ * Return: An allocated and pre-filled skb. %NULL if any errors happen.
|
|
|
*/
|
|
|
struct sk_buff *cfg80211_testmode_alloc_reply_skb(struct wiphy *wiphy,
|
|
|
int approxlen);
|
|
@@ -3321,11 +3378,12 @@ struct sk_buff *cfg80211_testmode_alloc_reply_skb(struct wiphy *wiphy,
|
|
|
* @skb: The skb, must have been allocated with
|
|
|
* cfg80211_testmode_alloc_reply_skb()
|
|
|
*
|
|
|
- * Returns an error code or 0 on success, since calling this
|
|
|
- * function will usually be the last thing before returning
|
|
|
- * from the @testmode_cmd you should return the error code.
|
|
|
- * Note that this function consumes the skb regardless of the
|
|
|
- * return value.
|
|
|
+ * Since calling this function will usually be the last thing
|
|
|
+ * before returning from the @testmode_cmd you should return
|
|
|
+ * the error code. Note that this function consumes the skb
|
|
|
+ * regardless of the return value.
|
|
|
+ *
|
|
|
+ * Return: An error code or 0 on success.
|
|
|
*/
|
|
|
int cfg80211_testmode_reply(struct sk_buff *skb);
|
|
|
|
|
@@ -3339,14 +3397,16 @@ int cfg80211_testmode_reply(struct sk_buff *skb);
|
|
|
* This function allocates and pre-fills an skb for an event on the
|
|
|
* testmode multicast group.
|
|
|
*
|
|
|
- * The returned skb (or %NULL if any errors happen) is set up in the
|
|
|
- * same way as with cfg80211_testmode_alloc_reply_skb() but prepared
|
|
|
- * for an event. As there, you should simply add data to it that will
|
|
|
- * then end up in the %NL80211_ATTR_TESTDATA attribute. Again, you must
|
|
|
- * not modify the skb in any other way.
|
|
|
+ * The returned skb is set up in the same way as with
|
|
|
+ * cfg80211_testmode_alloc_reply_skb() but prepared for an event. As
|
|
|
+ * there, you should simply add data to it that will then end up in the
|
|
|
+ * %NL80211_ATTR_TESTDATA attribute. Again, you must not modify the skb
|
|
|
+ * in any other way.
|
|
|
*
|
|
|
* When done filling the skb, call cfg80211_testmode_event() with the
|
|
|
* skb to send the event.
|
|
|
+ *
|
|
|
+ * Return: An allocated and pre-filled skb. %NULL if any errors happen.
|
|
|
*/
|
|
|
struct sk_buff *cfg80211_testmode_alloc_event_skb(struct wiphy *wiphy,
|
|
|
int approxlen, gfp_t gfp);
|
|
@@ -3527,13 +3587,13 @@ void cfg80211_conn_failed(struct net_device *dev, const u8 *mac_addr,
|
|
|
* @len: length of the frame data
|
|
|
* @gfp: context flags
|
|
|
*
|
|
|
- * Returns %true if a user space application has registered for this frame.
|
|
|
+ * This function is called whenever an Action frame is received for a station
|
|
|
+ * mode interface, but is not processed in kernel.
|
|
|
+ *
|
|
|
+ * Return: %true if a user space application has registered for this frame.
|
|
|
* For action frames, that makes it responsible for rejecting unrecognized
|
|
|
* action frames; %false otherwise, in which case for action frames the
|
|
|
* driver is responsible for rejecting the frame.
|
|
|
- *
|
|
|
- * This function is called whenever an Action frame is received for a station
|
|
|
- * mode interface, but is not processed in kernel.
|
|
|
*/
|
|
|
bool cfg80211_rx_mgmt(struct wireless_dev *wdev, int freq, int sig_dbm,
|
|
|
const u8 *buf, size_t len, gfp_t gfp);
|
|
@@ -3625,7 +3685,7 @@ void cfg80211_pmksa_candidate_notify(struct net_device *dev, int index,
|
|
|
* This function is used in AP mode (only!) to inform userspace that
|
|
|
* a spurious class 3 frame was received, to be able to deauth the
|
|
|
* sender.
|
|
|
- * Returns %true if the frame was passed to userspace (or this failed
|
|
|
+ * Return: %true if the frame was passed to userspace (or this failed
|
|
|
* for a reason other than not having a subscription.)
|
|
|
*/
|
|
|
bool cfg80211_rx_spurious_frame(struct net_device *dev,
|
|
@@ -3641,7 +3701,7 @@ bool cfg80211_rx_spurious_frame(struct net_device *dev,
|
|
|
* an associated station sent a 4addr frame but that wasn't expected.
|
|
|
* It is allowed and desirable to send this event only once for each
|
|
|
* station to avoid event flooding.
|
|
|
- * Returns %true if the frame was passed to userspace (or this failed
|
|
|
+ * Return: %true if the frame was passed to userspace (or this failed
|
|
|
* for a reason other than not having a subscription.)
|
|
|
*/
|
|
|
bool cfg80211_rx_unexpected_4addr_frame(struct net_device *dev,
|
|
@@ -3679,8 +3739,8 @@ void cfg80211_report_obss_beacon(struct wiphy *wiphy,
|
|
|
* @wiphy: the wiphy
|
|
|
* @chandef: the channel definition
|
|
|
*
|
|
|
- * This function returns true if there is no secondary channel or the secondary
|
|
|
- * channel(s) can be used for beaconing (i.e. is not a radar channel etc.)
|
|
|
+ * Return: %true if there is no secondary channel or the secondary channel(s)
|
|
|
+ * can be used for beaconing (i.e. is not a radar channel etc.)
|
|
|
*/
|
|
|
bool cfg80211_reg_can_beacon(struct wiphy *wiphy,
|
|
|
struct cfg80211_chan_def *chandef);
|
|
@@ -3750,9 +3810,9 @@ void cfg80211_unregister_wdev(struct wireless_dev *wdev);
|
|
|
* The function finds a given P2P attribute in the (vendor) IEs and
|
|
|
* copies its contents to the given buffer.
|
|
|
*
|
|
|
- * The return value is a negative error code (-%EILSEQ or -%ENOENT) if
|
|
|
- * the data is malformed or the attribute can't be found (respectively),
|
|
|
- * or the length of the found attribute (which can be zero).
|
|
|
+ * Return: A negative error code (-%EILSEQ or -%ENOENT) if the data is
|
|
|
+ * malformed or the attribute can't be found (respectively), or the
|
|
|
+ * length of the found attribute (which can be zero).
|
|
|
*/
|
|
|
int cfg80211_get_p2p_attr(const u8 *ies, unsigned int len,
|
|
|
enum ieee80211_p2p_attr_id attr,
|