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.
Showing the changes to include/uapi (1 of 4 files). Show all
Unified · Split
| @@ -1797,6 +1797,12 @@ enum nl80211_commands { · 1796 unmodified lines | ||
| 1797 | 1797 | * in a PBSS. Specified in %NL80211_CMD_CONNECT to request |
| 1798 | 1798 | * connecting to a PCP, and in %NL80211_CMD_START_AP to start |
| 1799 | 1799 | * a PCP instead of AP. Relevant for DMG networks only. |
| 1800 | + * @NL80211_ATTR_BSS_SELECT: nested attribute for driver supporting the | |
| 1801 | + * BSS selection feature. When used with %NL80211_CMD_GET_WIPHY it contains | |
| 1802 | + * attributes according &enum nl80211_bss_select_attr to indicate what | |
| 1803 | + * BSS selection behaviours are supported. When used with %NL80211_CMD_CONNECT | |
| 1804 | + * it contains the behaviour-specific attribute containing the parameters for | |
| 1805 | + * BSS selection to be done by driver and/or firmware. | |
| 1800 | 1806 | * |
| 1801 | 1807 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available |
| 1802 | 1808 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| @@ -2174,6 +2180,8 @@ enum nl80211_attrs { · 371 unmodified lines | ||
| 2174 | 2180 | |
| 2175 | 2181 | NL80211_ATTR_PBSS, |
| 2176 | 2182 | |
| 2183 | + NL80211_ATTR_BSS_SELECT, | |
| 2184 | + | |
| 2177 | 2185 | /* add attributes here, update the policy in nl80211.c */ |
| 2178 | 2186 | |
| 2179 | 2187 | __NL80211_ATTR_AFTER_LAST, |
| @@ -4667,4 +4675,48 @@ enum nl80211_sched_scan_plan { · 2487 unmodified lines | ||
| 4667 | 4675 | __NL80211_SCHED_SCAN_PLAN_AFTER_LAST - 1 |
| 4668 | 4676 | }; |
| 4669 | 4677 | |
| 4678 | +/** | |
| 4679 | + * struct nl80211_bss_select_rssi_adjust - RSSI adjustment parameters. | |
| 4680 | + * | |
| 4681 | + * @band: band of BSS that must match for RSSI value adjustment. | |
| 4682 | + * @delta: value used to adjust the RSSI value of matching BSS. | |
| 4683 | + */ | |
| 4684 | +struct nl80211_bss_select_rssi_adjust { | |
| 4685 | + __u8 band; | |
| 4686 | + __s8 delta; | |
| 4687 | +} __attribute__((packed)); | |
| 4688 | + | |
| 4689 | +/** | |
| 4690 | + * enum nl80211_bss_select_attr - attributes for bss selection. | |
| 4691 | + * | |
| 4692 | + * @__NL80211_BSS_SELECT_ATTR_INVALID: reserved. | |
| 4693 | + * @NL80211_BSS_SELECT_ATTR_RSSI: Flag indicating only RSSI-based BSS selection | |
| 4694 | + * is requested. | |
| 4695 | + * @NL80211_BSS_SELECT_ATTR_BAND_PREF: attribute indicating BSS | |
| 4696 | + * selection should be done such that the specified band is preferred. | |
| 4697 | + * When there are multiple BSS-es in the preferred band, the driver | |
| 4698 | + * shall use RSSI-based BSS selection as a second step. The value of | |
| 4699 | + * this attribute is according to &enum nl80211_band (u32). | |
| 4700 | + * @NL80211_BSS_SELECT_ATTR_RSSI_ADJUST: When present the RSSI level for | |
| 4701 | + * BSS-es in the specified band is to be adjusted before doing | |
| 4702 | + * RSSI-based BSS selection. The attribute value is a packed structure | |
| 4703 | + * value as specified by &struct nl80211_bss_select_rssi_adjust. | |
| 4704 | + * @NL80211_BSS_SELECT_ATTR_MAX: highest bss select attribute number. | |
| 4705 | + * @__NL80211_BSS_SELECT_ATTR_AFTER_LAST: internal use. | |
| 4706 | + * | |
| 4707 | + * One and only one of these attributes are found within %NL80211_ATTR_BSS_SELECT | |
| 4708 | + * for %NL80211_CMD_CONNECT. It specifies the required BSS selection behaviour | |
| 4709 | + * which the driver shall use. | |
| 4710 | + */ | |
| 4711 | +enum nl80211_bss_select_attr { | |
| 4712 | + __NL80211_BSS_SELECT_ATTR_INVALID, | |
| 4713 | + NL80211_BSS_SELECT_ATTR_RSSI, | |
| 4714 | + NL80211_BSS_SELECT_ATTR_BAND_PREF, | |
| 4715 | + NL80211_BSS_SELECT_ATTR_RSSI_ADJUST, | |
| 4716 | + | |
| 4717 | + /* keep last */ | |
| 4718 | + __NL80211_BSS_SELECT_ATTR_AFTER_LAST, | |
| 4719 | + NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1 | |
| 4720 | +}; | |
| 4721 | + | |
| 4670 | 4722 | #endif /* __LINUX_NL80211_H */ |