|
@@ -460,6 +460,33 @@ ieee80211_chandef_rate_flags(struct cfg80211_chan_def *chandef)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * ieee80211_chandef_max_power - maximum transmission power for the chandef
|
|
|
|
+ *
|
|
|
|
+ * In some regulations, the transmit power may depend on the configured channel
|
|
|
|
+ * bandwidth which may be defined as dBm/MHz. This function returns the actual
|
|
|
|
+ * max_power for non-standard (20 MHz) channels.
|
|
|
|
+ *
|
|
|
|
+ * @chandef: channel definition for the channel
|
|
|
|
+ *
|
|
|
|
+ * Returns: maximum allowed transmission power in dBm for the chandef
|
|
|
|
+ */
|
|
|
|
+static inline int
|
|
|
|
+ieee80211_chandef_max_power(struct cfg80211_chan_def *chandef)
|
|
|
|
+{
|
|
|
|
+ switch (chandef->width) {
|
|
|
|
+ case NL80211_CHAN_WIDTH_5:
|
|
|
|
+ return min(chandef->chan->max_reg_power - 6,
|
|
|
|
+ chandef->chan->max_power);
|
|
|
|
+ case NL80211_CHAN_WIDTH_10:
|
|
|
|
+ return min(chandef->chan->max_reg_power - 3,
|
|
|
|
+ chandef->chan->max_power);
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ return chandef->chan->max_power;
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* enum survey_info_flags - survey information flags
|
|
* enum survey_info_flags - survey information flags
|
|
*
|
|
*
|
|
@@ -490,7 +517,7 @@ enum survey_info_flags {
|
|
* @channel: the channel this survey record reports, mandatory
|
|
* @channel: the channel this survey record reports, mandatory
|
|
* @filled: bitflag of flags from &enum survey_info_flags
|
|
* @filled: bitflag of flags from &enum survey_info_flags
|
|
* @noise: channel noise in dBm. This and all following fields are
|
|
* @noise: channel noise in dBm. This and all following fields are
|
|
- * optional
|
|
|
|
|
|
+ * optional
|
|
* @channel_time: amount of time in ms the radio spent on the channel
|
|
* @channel_time: amount of time in ms the radio spent on the channel
|
|
* @channel_time_busy: amount of time the primary channel was sensed busy
|
|
* @channel_time_busy: amount of time the primary channel was sensed busy
|
|
* @channel_time_ext_busy: amount of time the extension channel was sensed busy
|
|
* @channel_time_ext_busy: amount of time the extension channel was sensed busy
|
|
@@ -546,9 +573,9 @@ struct cfg80211_crypto_settings {
|
|
/**
|
|
/**
|
|
* struct cfg80211_beacon_data - beacon data
|
|
* struct cfg80211_beacon_data - beacon data
|
|
* @head: head portion of beacon (before TIM IE)
|
|
* @head: head portion of beacon (before TIM IE)
|
|
- * or %NULL if not changed
|
|
|
|
|
|
+ * or %NULL if not changed
|
|
* @tail: tail portion of beacon (after TIM IE)
|
|
* @tail: tail portion of beacon (after TIM IE)
|
|
- * or %NULL if not changed
|
|
|
|
|
|
+ * or %NULL if not changed
|
|
* @head_len: length of @head
|
|
* @head_len: length of @head
|
|
* @tail_len: length of @tail
|
|
* @tail_len: length of @tail
|
|
* @beacon_ies: extra information element(s) to add into Beacon frames or %NULL
|
|
* @beacon_ies: extra information element(s) to add into Beacon frames or %NULL
|
|
@@ -764,7 +791,7 @@ int cfg80211_check_station_change(struct wiphy *wiphy,
|
|
* @STATION_INFO_PLINK_STATE: @plink_state filled
|
|
* @STATION_INFO_PLINK_STATE: @plink_state filled
|
|
* @STATION_INFO_SIGNAL: @signal filled
|
|
* @STATION_INFO_SIGNAL: @signal filled
|
|
* @STATION_INFO_TX_BITRATE: @txrate fields are filled
|
|
* @STATION_INFO_TX_BITRATE: @txrate fields are filled
|
|
- * (tx_bitrate, tx_bitrate_flags and tx_bitrate_mcs)
|
|
|
|
|
|
+ * (tx_bitrate, tx_bitrate_flags and tx_bitrate_mcs)
|
|
* @STATION_INFO_RX_PACKETS: @rx_packets filled with 32-bit value
|
|
* @STATION_INFO_RX_PACKETS: @rx_packets filled with 32-bit value
|
|
* @STATION_INFO_TX_PACKETS: @tx_packets filled with 32-bit value
|
|
* @STATION_INFO_TX_PACKETS: @tx_packets filled with 32-bit value
|
|
* @STATION_INFO_TX_RETRIES: @tx_retries filled
|
|
* @STATION_INFO_TX_RETRIES: @tx_retries filled
|
|
@@ -1285,6 +1312,7 @@ struct cfg80211_ssid {
|
|
* @n_ssids: number of SSIDs
|
|
* @n_ssids: number of SSIDs
|
|
* @channels: channels to scan on.
|
|
* @channels: channels to scan on.
|
|
* @n_channels: total number of channels to scan
|
|
* @n_channels: total number of channels to scan
|
|
|
|
+ * @scan_width: channel width for scanning
|
|
* @ie: optional information element(s) to add into Probe Request or %NULL
|
|
* @ie: optional information element(s) to add into Probe Request or %NULL
|
|
* @ie_len: length of ie in octets
|
|
* @ie_len: length of ie in octets
|
|
* @flags: bit field of flags controlling operation
|
|
* @flags: bit field of flags controlling operation
|
|
@@ -1300,6 +1328,7 @@ struct cfg80211_scan_request {
|
|
struct cfg80211_ssid *ssids;
|
|
struct cfg80211_ssid *ssids;
|
|
int n_ssids;
|
|
int n_ssids;
|
|
u32 n_channels;
|
|
u32 n_channels;
|
|
|
|
+ enum nl80211_bss_scan_width scan_width;
|
|
const u8 *ie;
|
|
const u8 *ie;
|
|
size_t ie_len;
|
|
size_t ie_len;
|
|
u32 flags;
|
|
u32 flags;
|
|
@@ -1333,6 +1362,7 @@ struct cfg80211_match_set {
|
|
* @ssids: SSIDs to scan for (passed in the probe_reqs in active scans)
|
|
* @ssids: SSIDs to scan for (passed in the probe_reqs in active scans)
|
|
* @n_ssids: number of SSIDs
|
|
* @n_ssids: number of SSIDs
|
|
* @n_channels: total number of channels to scan
|
|
* @n_channels: total number of channels to scan
|
|
|
|
+ * @scan_width: channel width for scanning
|
|
* @interval: interval between each scheduled scan cycle
|
|
* @interval: interval between each scheduled scan cycle
|
|
* @ie: optional information element(s) to add into Probe Request or %NULL
|
|
* @ie: optional information element(s) to add into Probe Request or %NULL
|
|
* @ie_len: length of ie in octets
|
|
* @ie_len: length of ie in octets
|
|
@@ -1352,6 +1382,7 @@ struct cfg80211_sched_scan_request {
|
|
struct cfg80211_ssid *ssids;
|
|
struct cfg80211_ssid *ssids;
|
|
int n_ssids;
|
|
int n_ssids;
|
|
u32 n_channels;
|
|
u32 n_channels;
|
|
|
|
+ enum nl80211_bss_scan_width scan_width;
|
|
u32 interval;
|
|
u32 interval;
|
|
const u8 *ie;
|
|
const u8 *ie;
|
|
size_t ie_len;
|
|
size_t ie_len;
|
|
@@ -1403,6 +1434,7 @@ struct cfg80211_bss_ies {
|
|
* for use in scan results and similar.
|
|
* for use in scan results and similar.
|
|
*
|
|
*
|
|
* @channel: channel this BSS is on
|
|
* @channel: channel this BSS is on
|
|
|
|
+ * @scan_width: width of the control channel
|
|
* @bssid: BSSID of the BSS
|
|
* @bssid: BSSID of the BSS
|
|
* @beacon_interval: the beacon interval as from the frame
|
|
* @beacon_interval: the beacon interval as from the frame
|
|
* @capability: the capability field in host byte order
|
|
* @capability: the capability field in host byte order
|
|
@@ -1424,6 +1456,7 @@ struct cfg80211_bss_ies {
|
|
*/
|
|
*/
|
|
struct cfg80211_bss {
|
|
struct cfg80211_bss {
|
|
struct ieee80211_channel *channel;
|
|
struct ieee80211_channel *channel;
|
|
|
|
+ enum nl80211_bss_scan_width scan_width;
|
|
|
|
|
|
const struct cfg80211_bss_ies __rcu *ies;
|
|
const struct cfg80211_bss_ies __rcu *ies;
|
|
const struct cfg80211_bss_ies __rcu *beacon_ies;
|
|
const struct cfg80211_bss_ies __rcu *beacon_ies;
|
|
@@ -1509,7 +1542,7 @@ enum cfg80211_assoc_req_flags {
|
|
* @prev_bssid: previous BSSID, if not %NULL use reassociate frame
|
|
* @prev_bssid: previous BSSID, if not %NULL use reassociate frame
|
|
* @flags: See &enum cfg80211_assoc_req_flags
|
|
* @flags: See &enum cfg80211_assoc_req_flags
|
|
* @ht_capa: HT Capabilities over-rides. Values set in ht_capa_mask
|
|
* @ht_capa: HT Capabilities over-rides. Values set in ht_capa_mask
|
|
- * will be used in ht_capa. Un-supported values will be ignored.
|
|
|
|
|
|
+ * will be used in ht_capa. Un-supported values will be ignored.
|
|
* @ht_capa_mask: The bits of ht_capa which are to be used.
|
|
* @ht_capa_mask: The bits of ht_capa which are to be used.
|
|
* @vht_capa: VHT capability override
|
|
* @vht_capa: VHT capability override
|
|
* @vht_capa_mask: VHT capability mask indicating which fields to use
|
|
* @vht_capa_mask: VHT capability mask indicating which fields to use
|
|
@@ -1592,6 +1625,9 @@ struct cfg80211_disassoc_request {
|
|
* user space. Otherwise, port is marked authorized by default.
|
|
* user space. Otherwise, port is marked authorized by default.
|
|
* @basic_rates: bitmap of basic rates to use when creating the IBSS
|
|
* @basic_rates: bitmap of basic rates to use when creating the IBSS
|
|
* @mcast_rate: per-band multicast rate index + 1 (0: disabled)
|
|
* @mcast_rate: per-band multicast rate index + 1 (0: disabled)
|
|
|
|
+ * @ht_capa: HT Capabilities over-rides. Values set in ht_capa_mask
|
|
|
|
+ * will be used in ht_capa. Un-supported values will be ignored.
|
|
|
|
+ * @ht_capa_mask: The bits of ht_capa which are to be used.
|
|
*/
|
|
*/
|
|
struct cfg80211_ibss_params {
|
|
struct cfg80211_ibss_params {
|
|
u8 *ssid;
|
|
u8 *ssid;
|
|
@@ -1605,6 +1641,8 @@ struct cfg80211_ibss_params {
|
|
bool privacy;
|
|
bool privacy;
|
|
bool control_port;
|
|
bool control_port;
|
|
int mcast_rate[IEEE80211_NUM_BANDS];
|
|
int mcast_rate[IEEE80211_NUM_BANDS];
|
|
|
|
+ struct ieee80211_ht_cap ht_capa;
|
|
|
|
+ struct ieee80211_ht_cap ht_capa_mask;
|
|
};
|
|
};
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1630,9 +1668,9 @@ struct cfg80211_ibss_params {
|
|
* @key: WEP key for shared key authentication
|
|
* @key: WEP key for shared key authentication
|
|
* @flags: See &enum cfg80211_assoc_req_flags
|
|
* @flags: See &enum cfg80211_assoc_req_flags
|
|
* @bg_scan_period: Background scan period in seconds
|
|
* @bg_scan_period: Background scan period in seconds
|
|
- * or -1 to indicate that default value is to be used.
|
|
|
|
|
|
+ * or -1 to indicate that default value is to be used.
|
|
* @ht_capa: HT Capabilities over-rides. Values set in ht_capa_mask
|
|
* @ht_capa: HT Capabilities over-rides. Values set in ht_capa_mask
|
|
- * will be used in ht_capa. Un-supported values will be ignored.
|
|
|
|
|
|
+ * will be used in ht_capa. Un-supported values will be ignored.
|
|
* @ht_capa_mask: The bits of ht_capa which are to be used.
|
|
* @ht_capa_mask: The bits of ht_capa which are to be used.
|
|
* @vht_capa: VHT Capability overrides
|
|
* @vht_capa: VHT Capability overrides
|
|
* @vht_capa_mask: The bits of vht_capa which are to be used.
|
|
* @vht_capa_mask: The bits of vht_capa which are to be used.
|
|
@@ -1698,7 +1736,7 @@ struct cfg80211_pmksa {
|
|
};
|
|
};
|
|
|
|
|
|
/**
|
|
/**
|
|
- * struct cfg80211_wowlan_trig_pkt_pattern - packet pattern
|
|
|
|
|
|
+ * struct cfg80211_pkt_pattern - packet pattern
|
|
* @mask: bitmask where to match pattern and where to ignore bytes,
|
|
* @mask: bitmask where to match pattern and where to ignore bytes,
|
|
* one bit per byte, in same format as nl80211
|
|
* one bit per byte, in same format as nl80211
|
|
* @pattern: bytes to match where bitmask is 1
|
|
* @pattern: bytes to match where bitmask is 1
|
|
@@ -1708,7 +1746,7 @@ struct cfg80211_pmksa {
|
|
* Internal note: @mask and @pattern are allocated in one chunk of
|
|
* Internal note: @mask and @pattern are allocated in one chunk of
|
|
* memory, free @mask only!
|
|
* memory, free @mask only!
|
|
*/
|
|
*/
|
|
-struct cfg80211_wowlan_trig_pkt_pattern {
|
|
|
|
|
|
+struct cfg80211_pkt_pattern {
|
|
u8 *mask, *pattern;
|
|
u8 *mask, *pattern;
|
|
int pattern_len;
|
|
int pattern_len;
|
|
int pkt_offset;
|
|
int pkt_offset;
|
|
@@ -1770,11 +1808,40 @@ struct cfg80211_wowlan {
|
|
bool any, disconnect, magic_pkt, gtk_rekey_failure,
|
|
bool any, disconnect, magic_pkt, gtk_rekey_failure,
|
|
eap_identity_req, four_way_handshake,
|
|
eap_identity_req, four_way_handshake,
|
|
rfkill_release;
|
|
rfkill_release;
|
|
- struct cfg80211_wowlan_trig_pkt_pattern *patterns;
|
|
|
|
|
|
+ struct cfg80211_pkt_pattern *patterns;
|
|
struct cfg80211_wowlan_tcp *tcp;
|
|
struct cfg80211_wowlan_tcp *tcp;
|
|
int n_patterns;
|
|
int n_patterns;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * struct cfg80211_coalesce_rules - Coalesce rule parameters
|
|
|
|
+ *
|
|
|
|
+ * This structure defines coalesce rule for the device.
|
|
|
|
+ * @delay: maximum coalescing delay in msecs.
|
|
|
|
+ * @condition: condition for packet coalescence.
|
|
|
|
+ * see &enum nl80211_coalesce_condition.
|
|
|
|
+ * @patterns: array of packet patterns
|
|
|
|
+ * @n_patterns: number of patterns
|
|
|
|
+ */
|
|
|
|
+struct cfg80211_coalesce_rules {
|
|
|
|
+ int delay;
|
|
|
|
+ enum nl80211_coalesce_condition condition;
|
|
|
|
+ struct cfg80211_pkt_pattern *patterns;
|
|
|
|
+ int n_patterns;
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * struct cfg80211_coalesce - Packet coalescing settings
|
|
|
|
+ *
|
|
|
|
+ * This structure defines coalescing settings.
|
|
|
|
+ * @rules: array of coalesce rules
|
|
|
|
+ * @n_rules: number of rules
|
|
|
|
+ */
|
|
|
|
+struct cfg80211_coalesce {
|
|
|
|
+ struct cfg80211_coalesce_rules *rules;
|
|
|
|
+ int n_rules;
|
|
|
|
+};
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* struct cfg80211_wowlan_wakeup - wakeup report
|
|
* struct cfg80211_wowlan_wakeup - wakeup report
|
|
* @disconnect: woke up by getting disconnected
|
|
* @disconnect: woke up by getting disconnected
|
|
@@ -2071,6 +2138,7 @@ struct cfg80211_update_ft_ies_params {
|
|
* driver can take the most appropriate actions.
|
|
* driver can take the most appropriate actions.
|
|
* @crit_proto_stop: Indicates critical protocol no longer needs increased link
|
|
* @crit_proto_stop: Indicates critical protocol no longer needs increased link
|
|
* reliability. This operation can not fail.
|
|
* reliability. This operation can not fail.
|
|
|
|
+ * @set_coalesce: Set coalesce parameters.
|
|
*/
|
|
*/
|
|
struct cfg80211_ops {
|
|
struct cfg80211_ops {
|
|
int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow);
|
|
int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow);
|
|
@@ -2306,6 +2374,8 @@ struct cfg80211_ops {
|
|
u16 duration);
|
|
u16 duration);
|
|
void (*crit_proto_stop)(struct wiphy *wiphy,
|
|
void (*crit_proto_stop)(struct wiphy *wiphy,
|
|
struct wireless_dev *wdev);
|
|
struct wireless_dev *wdev);
|
|
|
|
+ int (*set_coalesce)(struct wiphy *wiphy,
|
|
|
|
+ struct cfg80211_coalesce *coalesce);
|
|
};
|
|
};
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -2531,6 +2601,25 @@ struct wiphy_wowlan_support {
|
|
const struct wiphy_wowlan_tcp_support *tcp;
|
|
const struct wiphy_wowlan_tcp_support *tcp;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * struct wiphy_coalesce_support - coalesce support data
|
|
|
|
+ * @n_rules: maximum number of coalesce rules
|
|
|
|
+ * @max_delay: maximum supported coalescing delay in msecs
|
|
|
|
+ * @n_patterns: number of supported patterns in a rule
|
|
|
|
+ * (see nl80211.h for the pattern definition)
|
|
|
|
+ * @pattern_max_len: maximum length of each pattern
|
|
|
|
+ * @pattern_min_len: minimum length of each pattern
|
|
|
|
+ * @max_pkt_offset: maximum Rx packet offset
|
|
|
|
+ */
|
|
|
|
+struct wiphy_coalesce_support {
|
|
|
|
+ int n_rules;
|
|
|
|
+ int max_delay;
|
|
|
|
+ int n_patterns;
|
|
|
|
+ int pattern_max_len;
|
|
|
|
+ int pattern_min_len;
|
|
|
|
+ int max_pkt_offset;
|
|
|
|
+};
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* struct wiphy - wireless hardware description
|
|
* struct wiphy - wireless hardware description
|
|
* @reg_notifier: the driver's regulatory notification callback,
|
|
* @reg_notifier: the driver's regulatory notification callback,
|
|
@@ -2641,6 +2730,7 @@ struct wiphy_wowlan_support {
|
|
* 802.11-2012 8.4.2.29 for the defined fields.
|
|
* 802.11-2012 8.4.2.29 for the defined fields.
|
|
* @extended_capabilities_mask: mask of the valid values
|
|
* @extended_capabilities_mask: mask of the valid values
|
|
* @extended_capabilities_len: length of the extended capabilities
|
|
* @extended_capabilities_len: length of the extended capabilities
|
|
|
|
+ * @coalesce: packet coalescing support information
|
|
*/
|
|
*/
|
|
struct wiphy {
|
|
struct wiphy {
|
|
/* assign these fields before you register the wiphy */
|
|
/* assign these fields before you register the wiphy */
|
|
@@ -2750,6 +2840,8 @@ struct wiphy {
|
|
const struct iw_handler_def *wext;
|
|
const struct iw_handler_def *wext;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+ const struct wiphy_coalesce_support *coalesce;
|
|
|
|
+
|
|
char priv[0] __aligned(NETDEV_ALIGN);
|
|
char priv[0] __aligned(NETDEV_ALIGN);
|
|
};
|
|
};
|
|
|
|
|
|
@@ -3063,11 +3155,13 @@ ieee80211_get_response_rate(struct ieee80211_supported_band *sband,
|
|
/**
|
|
/**
|
|
* ieee80211_mandatory_rates - get mandatory rates for a given band
|
|
* ieee80211_mandatory_rates - get mandatory rates for a given band
|
|
* @sband: the band to look for rates in
|
|
* @sband: the band to look for rates in
|
|
|
|
+ * @scan_width: width of the control channel
|
|
*
|
|
*
|
|
* This function returns a bitmap of the mandatory rates for the given
|
|
* This function returns a bitmap of the mandatory rates for the given
|
|
* band, bits are set according to the rate position in the bitrates array.
|
|
* band, bits are set according to the rate position in the bitrates array.
|
|
*/
|
|
*/
|
|
-u32 ieee80211_mandatory_rates(struct ieee80211_supported_band *sband);
|
|
|
|
|
|
+u32 ieee80211_mandatory_rates(struct ieee80211_supported_band *sband,
|
|
|
|
+ enum nl80211_bss_scan_width scan_width);
|
|
|
|
|
|
/*
|
|
/*
|
|
* Radiotap parsing functions -- for controlled injection support
|
|
* Radiotap parsing functions -- for controlled injection support
|
|
@@ -3379,10 +3473,11 @@ void cfg80211_sched_scan_results(struct wiphy *wiphy);
|
|
void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
|
|
void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
|
|
|
|
|
|
/**
|
|
/**
|
|
- * cfg80211_inform_bss_frame - inform cfg80211 of a received BSS frame
|
|
|
|
|
|
+ * cfg80211_inform_bss_width_frame - inform cfg80211 of a received BSS frame
|
|
*
|
|
*
|
|
* @wiphy: the wiphy reporting the BSS
|
|
* @wiphy: the wiphy reporting the BSS
|
|
* @channel: The channel the frame was received on
|
|
* @channel: The channel the frame was received on
|
|
|
|
+ * @scan_width: width of the control channel
|
|
* @mgmt: the management frame (probe response or beacon)
|
|
* @mgmt: the management frame (probe response or beacon)
|
|
* @len: length of the management frame
|
|
* @len: length of the management frame
|
|
* @signal: the signal strength, type depends on the wiphy's signal_type
|
|
* @signal: the signal strength, type depends on the wiphy's signal_type
|
|
@@ -3395,16 +3490,29 @@ void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
|
|
* Or %NULL on error.
|
|
* Or %NULL on error.
|
|
*/
|
|
*/
|
|
struct cfg80211_bss * __must_check
|
|
struct cfg80211_bss * __must_check
|
|
|
|
+cfg80211_inform_bss_width_frame(struct wiphy *wiphy,
|
|
|
|
+ struct ieee80211_channel *channel,
|
|
|
|
+ enum nl80211_bss_scan_width scan_width,
|
|
|
|
+ struct ieee80211_mgmt *mgmt, size_t len,
|
|
|
|
+ s32 signal, gfp_t gfp);
|
|
|
|
+
|
|
|
|
+static inline struct cfg80211_bss * __must_check
|
|
cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
|
cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
|
struct ieee80211_channel *channel,
|
|
struct ieee80211_channel *channel,
|
|
struct ieee80211_mgmt *mgmt, size_t len,
|
|
struct ieee80211_mgmt *mgmt, size_t len,
|
|
- s32 signal, gfp_t gfp);
|
|
|
|
|
|
+ s32 signal, gfp_t gfp)
|
|
|
|
+{
|
|
|
|
+ return cfg80211_inform_bss_width_frame(wiphy, channel,
|
|
|
|
+ NL80211_BSS_CHAN_WIDTH_20,
|
|
|
|
+ mgmt, len, signal, gfp);
|
|
|
|
+}
|
|
|
|
|
|
/**
|
|
/**
|
|
* cfg80211_inform_bss - inform cfg80211 of a new BSS
|
|
* cfg80211_inform_bss - inform cfg80211 of a new BSS
|
|
*
|
|
*
|
|
* @wiphy: the wiphy reporting the BSS
|
|
* @wiphy: the wiphy reporting the BSS
|
|
* @channel: The channel the frame was received on
|
|
* @channel: The channel the frame was received on
|
|
|
|
+ * @scan_width: width of the control channel
|
|
* @bssid: the BSSID of the BSS
|
|
* @bssid: the BSSID of the BSS
|
|
* @tsf: the TSF sent by the peer in the beacon/probe response (or 0)
|
|
* @tsf: the TSF sent by the peer in the beacon/probe response (or 0)
|
|
* @capability: the capability field sent by the peer
|
|
* @capability: the capability field sent by the peer
|
|
@@ -3421,11 +3529,26 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
|
|
* Or %NULL on error.
|
|
* Or %NULL on error.
|
|
*/
|
|
*/
|
|
struct cfg80211_bss * __must_check
|
|
struct cfg80211_bss * __must_check
|
|
|
|
+cfg80211_inform_bss_width(struct wiphy *wiphy,
|
|
|
|
+ struct ieee80211_channel *channel,
|
|
|
|
+ enum nl80211_bss_scan_width scan_width,
|
|
|
|
+ const u8 *bssid, u64 tsf, u16 capability,
|
|
|
|
+ u16 beacon_interval, const u8 *ie, size_t ielen,
|
|
|
|
+ s32 signal, gfp_t gfp);
|
|
|
|
+
|
|
|
|
+static inline struct cfg80211_bss * __must_check
|
|
cfg80211_inform_bss(struct wiphy *wiphy,
|
|
cfg80211_inform_bss(struct wiphy *wiphy,
|
|
struct ieee80211_channel *channel,
|
|
struct ieee80211_channel *channel,
|
|
const u8 *bssid, u64 tsf, u16 capability,
|
|
const u8 *bssid, u64 tsf, u16 capability,
|
|
u16 beacon_interval, const u8 *ie, size_t ielen,
|
|
u16 beacon_interval, const u8 *ie, size_t ielen,
|
|
- s32 signal, gfp_t gfp);
|
|
|
|
|
|
+ s32 signal, gfp_t gfp)
|
|
|
|
+{
|
|
|
|
+ return cfg80211_inform_bss_width(wiphy, channel,
|
|
|
|
+ NL80211_BSS_CHAN_WIDTH_20,
|
|
|
|
+ bssid, tsf, capability,
|
|
|
|
+ beacon_interval, ie, ielen, signal,
|
|
|
|
+ gfp);
|
|
|
|
+}
|
|
|
|
|
|
struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,
|
|
struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,
|
|
struct ieee80211_channel *channel,
|
|
struct ieee80211_channel *channel,
|
|
@@ -3471,6 +3594,19 @@ void cfg80211_put_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
|
|
*/
|
|
*/
|
|
void cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
|
|
void cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
|
|
|
|
|
|
|
|
+static inline enum nl80211_bss_scan_width
|
|
|
|
+cfg80211_chandef_to_scan_width(const struct cfg80211_chan_def *chandef)
|
|
|
|
+{
|
|
|
|
+ switch (chandef->width) {
|
|
|
|
+ case NL80211_CHAN_WIDTH_5:
|
|
|
|
+ return NL80211_BSS_CHAN_WIDTH_5;
|
|
|
|
+ case NL80211_CHAN_WIDTH_10:
|
|
|
|
+ return NL80211_BSS_CHAN_WIDTH_10;
|
|
|
|
+ default:
|
|
|
|
+ return NL80211_BSS_CHAN_WIDTH_20;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* cfg80211_rx_mlme_mgmt - notification of processed MLME management frame
|
|
* cfg80211_rx_mlme_mgmt - notification of processed MLME management frame
|
|
* @dev: network device
|
|
* @dev: network device
|