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 | * in a PBSS. Specified in %NL80211_CMD_CONNECT to request | 1797 | * in a PBSS. Specified in %NL80211_CMD_CONNECT to request |
| 1798 | * connecting to a PCP, and in %NL80211_CMD_START_AP to start | 1798 | * connecting to a PCP, and in %NL80211_CMD_START_AP to start |
| 1799 | * a PCP instead of AP. Relevant for DMG networks only. | 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 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available | 1807 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available |
| 1802 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 1808 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| @@ -2174,6 +2180,8 @@ enum nl80211_attrs { · 371 unmodified lines | |||
| 2174 | 2180 | ||
| 2175 | NL80211_ATTR_PBSS, | 2181 | NL80211_ATTR_PBSS, |
| 2176 | 2182 | ||
| 2183 | NL80211_ATTR_BSS_SELECT, | ||
| 2184 | |||
| 2177 | /* add attributes here, update the policy in nl80211.c */ | 2185 | /* add attributes here, update the policy in nl80211.c */ |
| 2178 | 2186 | ||
| 2179 | __NL80211_ATTR_AFTER_LAST, | 2187 | __NL80211_ATTR_AFTER_LAST, |
| @@ -4667,4 +4675,48 @@ enum nl80211_sched_scan_plan { · 2487 unmodified lines | |||
| 4667 | __NL80211_SCHED_SCAN_PLAN_AFTER_LAST - 1 | 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 | #endif /* __LINUX_NL80211_H */ | 4722 | #endif /* __LINUX_NL80211_H */ |