nl80211: add feature for BSS selection support
Introducing a new feature that the driver can use to indicate the driver/firmware supports configuration of BSS selection criteria upon CONNECT command. This can be useful when multiple BSS-es are found belonging to the same ESS, ie. Infra-BSS with same SSID. The criteria can then be used to offload selection of a preferred BSS. Reviewed-by: Hante Meuleman <meuleman@broadcom.com> Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Lei Zhang <leizh@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> [move wiphy support check into parse_bss_select()] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
f59374eb42
commit
38de03d2a2
4 changed files with 204 additions and 0 deletions
|
|
@ -1797,6 +1797,12 @@ enum nl80211_commands {
|
|||
* in a PBSS. Specified in %NL80211_CMD_CONNECT to request
|
||||
* connecting to a PCP, and in %NL80211_CMD_START_AP to start
|
||||
* a PCP instead of AP. Relevant for DMG networks only.
|
||||
* @NL80211_ATTR_BSS_SELECT: nested attribute for driver supporting the
|
||||
* BSS selection feature. When used with %NL80211_CMD_GET_WIPHY it contains
|
||||
* attributes according &enum nl80211_bss_select_attr to indicate what
|
||||
* BSS selection behaviours are supported. When used with %NL80211_CMD_CONNECT
|
||||
* it contains the behaviour-specific attribute containing the parameters for
|
||||
* BSS selection to be done by driver and/or firmware.
|
||||
*
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
|
|
@ -2174,6 +2180,8 @@ enum nl80211_attrs {
|
|||
|
||||
NL80211_ATTR_PBSS,
|
||||
|
||||
NL80211_ATTR_BSS_SELECT,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
|
|
@ -4667,4 +4675,48 @@ enum nl80211_sched_scan_plan {
|
|||
__NL80211_SCHED_SCAN_PLAN_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* struct nl80211_bss_select_rssi_adjust - RSSI adjustment parameters.
|
||||
*
|
||||
* @band: band of BSS that must match for RSSI value adjustment.
|
||||
* @delta: value used to adjust the RSSI value of matching BSS.
|
||||
*/
|
||||
struct nl80211_bss_select_rssi_adjust {
|
||||
__u8 band;
|
||||
__s8 delta;
|
||||
} __attribute__((packed));
|
||||
|
||||
/**
|
||||
* enum nl80211_bss_select_attr - attributes for bss selection.
|
||||
*
|
||||
* @__NL80211_BSS_SELECT_ATTR_INVALID: reserved.
|
||||
* @NL80211_BSS_SELECT_ATTR_RSSI: Flag indicating only RSSI-based BSS selection
|
||||
* is requested.
|
||||
* @NL80211_BSS_SELECT_ATTR_BAND_PREF: attribute indicating BSS
|
||||
* selection should be done such that the specified band is preferred.
|
||||
* When there are multiple BSS-es in the preferred band, the driver
|
||||
* shall use RSSI-based BSS selection as a second step. The value of
|
||||
* this attribute is according to &enum nl80211_band (u32).
|
||||
* @NL80211_BSS_SELECT_ATTR_RSSI_ADJUST: When present the RSSI level for
|
||||
* BSS-es in the specified band is to be adjusted before doing
|
||||
* RSSI-based BSS selection. The attribute value is a packed structure
|
||||
* value as specified by &struct nl80211_bss_select_rssi_adjust.
|
||||
* @NL80211_BSS_SELECT_ATTR_MAX: highest bss select attribute number.
|
||||
* @__NL80211_BSS_SELECT_ATTR_AFTER_LAST: internal use.
|
||||
*
|
||||
* One and only one of these attributes are found within %NL80211_ATTR_BSS_SELECT
|
||||
* for %NL80211_CMD_CONNECT. It specifies the required BSS selection behaviour
|
||||
* which the driver shall use.
|
||||
*/
|
||||
enum nl80211_bss_select_attr {
|
||||
__NL80211_BSS_SELECT_ATTR_INVALID,
|
||||
NL80211_BSS_SELECT_ATTR_RSSI,
|
||||
NL80211_BSS_SELECT_ATTR_BAND_PREF,
|
||||
NL80211_BSS_SELECT_ATTR_RSSI_ADJUST,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_BSS_SELECT_ATTR_AFTER_LAST,
|
||||
NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
#endif /* __LINUX_NL80211_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue