mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-06 16:21:50 +00:00
wifi: add 6ghz device capability flag
Adds a new WiFi 6GHz capability flag, NM_WIFI_DEVICE_CAP_FREQ_6GHZ, along side the existing NM_WIFI_DEVICE_CAP_FREQ_2GHZ & NM_WIFI_DEVICE_CAP_FREQ_5GHZ flags. Gnome settings utilizes the 2 existing flags to present supported bands in gnome-settings. I will be using this additional flag in modifications there. https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1739
This commit is contained in:
parent
fa1239df14
commit
8f438d8d08
|
@ -225,6 +225,7 @@ typedef enum {
|
|||
_NM_WIFI_DEVICE_CAP_FREQ_VALID = 0x00000100,
|
||||
_NM_WIFI_DEVICE_CAP_FREQ_2GHZ = 0x00000200,
|
||||
_NM_WIFI_DEVICE_CAP_FREQ_5GHZ = 0x00000400,
|
||||
_NM_WIFI_DEVICE_CAP_FREQ_6GHZ = 0x00000800,
|
||||
_NM_WIFI_DEVICE_CAP_MESH = 0x00001000,
|
||||
_NM_WIFI_DEVICE_CAP_IBSS_RSN = 0x00002000,
|
||||
} _NMDeviceWifiCapabilities;
|
||||
|
|
|
@ -292,6 +292,7 @@ test_device_wifi_capabilities(void)
|
|||
_E(NM_WIFI_DEVICE_CAP_FREQ_VALID);
|
||||
_E(NM_WIFI_DEVICE_CAP_FREQ_2GHZ);
|
||||
_E(NM_WIFI_DEVICE_CAP_FREQ_5GHZ);
|
||||
_E(NM_WIFI_DEVICE_CAP_FREQ_6GHZ);
|
||||
_E(NM_WIFI_DEVICE_CAP_MESH);
|
||||
_E(NM_WIFI_DEVICE_CAP_IBSS_RSN);
|
||||
#undef _E
|
||||
|
|
|
@ -306,6 +306,7 @@ typedef enum /*< flags >*/ {
|
|||
* @NM_WIFI_DEVICE_CAP_FREQ_VALID: device reports frequency capabilities
|
||||
* @NM_WIFI_DEVICE_CAP_FREQ_2GHZ: device supports 2.4GHz frequencies
|
||||
* @NM_WIFI_DEVICE_CAP_FREQ_5GHZ: device supports 5GHz frequencies
|
||||
* @NM_WIFI_DEVICE_CAP_FREQ_6GHZ: device supports 6GHz frequencies
|
||||
* @NM_WIFI_DEVICE_CAP_MESH: device supports acting as a mesh point. Since: 1.20.
|
||||
* @NM_WIFI_DEVICE_CAP_IBSS_RSN: device supports WPA2/RSN in an IBSS network. Since: 1.22.
|
||||
*
|
||||
|
@ -324,6 +325,7 @@ typedef enum /*< flags >*/ {
|
|||
NM_WIFI_DEVICE_CAP_FREQ_VALID = 0x00000100,
|
||||
NM_WIFI_DEVICE_CAP_FREQ_2GHZ = 0x00000200,
|
||||
NM_WIFI_DEVICE_CAP_FREQ_5GHZ = 0x00000400,
|
||||
NM_WIFI_DEVICE_CAP_FREQ_6GHZ = 0x00000800,
|
||||
NM_WIFI_DEVICE_CAP_MESH = 0x00001000,
|
||||
NM_WIFI_DEVICE_CAP_IBSS_RSN = 0x00002000,
|
||||
} NMDeviceWifiCapabilities;
|
||||
|
|
|
@ -696,10 +696,12 @@ nl80211_wiphy_info_handler(const struct nl_msg *msg, void *arg)
|
|||
|
||||
info->caps |= _NM_WIFI_DEVICE_CAP_FREQ_VALID;
|
||||
|
||||
if (f->freq > 2400 && f->freq < 2500)
|
||||
if (f->freq >= 2401 && f->freq <= 2495)
|
||||
info->caps |= _NM_WIFI_DEVICE_CAP_FREQ_2GHZ;
|
||||
if (f->freq > 4900 && f->freq < 6000)
|
||||
if (f->freq >= 5150 && f->freq <= 5895)
|
||||
info->caps |= _NM_WIFI_DEVICE_CAP_FREQ_5GHZ;
|
||||
if (f->freq >= 5925 && f->freq <= 7125)
|
||||
info->caps |= _NM_WIFI_DEVICE_CAP_FREQ_6GHZ;
|
||||
|
||||
info->num_freqs++;
|
||||
}
|
||||
|
|
|
@ -724,8 +724,8 @@ nm_wifi_utils_wext_new(int ifindex, gboolean check_scan)
|
|||
guint32 response_len = 0;
|
||||
struct iw_range_with_scan_capa *scan_capa_range;
|
||||
int i;
|
||||
gboolean freq_valid = FALSE, has_5ghz = FALSE, has_2ghz = FALSE;
|
||||
char ifname[IFNAMSIZ];
|
||||
gboolean freq_valid = FALSE, has_6ghz = FALSE, has_5ghz = FALSE, has_2ghz = FALSE;
|
||||
char ifname[IFNAMSIZ];
|
||||
|
||||
if (!nmp_utils_if_indextoname(ifindex, ifname)) {
|
||||
_LOGW(LOGD_PLATFORM | LOGD_WIFI, "can't determine interface name for ifindex %d", ifindex);
|
||||
|
@ -762,10 +762,12 @@ nm_wifi_utils_wext_new(int ifindex, gboolean check_scan)
|
|||
for (i = 0; i < wext->num_freqs; i++) {
|
||||
wext->freqs[i] = iw_freq_to_uint32(&range.freq[i]);
|
||||
freq_valid = TRUE;
|
||||
if (wext->freqs[i] > 2400 && wext->freqs[i] < 2500)
|
||||
if (wext->freqs[i] >= 2401 && wext->freqs[i] <= 2495)
|
||||
has_2ghz = TRUE;
|
||||
else if (wext->freqs[i] > 4900 && wext->freqs[i] < 6000)
|
||||
else if (wext->freqs[i] >= 5150 && wext->freqs[i] <= 5895)
|
||||
has_5ghz = TRUE;
|
||||
else if (wext->freqs[i] >= 5925 && wext->freqs[i] <= 7125)
|
||||
has_6ghz = TRUE;
|
||||
}
|
||||
|
||||
/* Check for scanning capability; cards that can't scan are not supported */
|
||||
|
@ -798,6 +800,8 @@ nm_wifi_utils_wext_new(int ifindex, gboolean check_scan)
|
|||
wext->parent.caps |= _NM_WIFI_DEVICE_CAP_FREQ_2GHZ;
|
||||
if (has_5ghz)
|
||||
wext->parent.caps |= _NM_WIFI_DEVICE_CAP_FREQ_5GHZ;
|
||||
if (has_6ghz)
|
||||
wext->parent.caps |= _NM_WIFI_DEVICE_CAP_FREQ_6GHZ;
|
||||
|
||||
_LOGI(LOGD_PLATFORM | LOGD_WIFI, "(%s): using WEXT for Wi-Fi device control", ifname);
|
||||
|
||||
|
|
|
@ -597,6 +597,12 @@ _metagen_device_detail_wifi_properties_get_fcn(NMC_META_GENERIC_INFO_GET_FCN_ARG
|
|||
? (NM_FLAGS_HAS(wcaps, NM_WIFI_DEVICE_CAP_FREQ_5GHZ) ? N_("yes") : N_("no"))
|
||||
: N_("unknown"),
|
||||
get_type);
|
||||
case NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_6GHZ:
|
||||
return nmc_meta_generic_get_str_i18n(
|
||||
NM_FLAGS_HAS(wcaps, NM_WIFI_DEVICE_CAP_FREQ_VALID)
|
||||
? (NM_FLAGS_HAS(wcaps, NM_WIFI_DEVICE_CAP_FREQ_6GHZ) ? N_("yes") : N_("no"))
|
||||
: N_("unknown"),
|
||||
get_type);
|
||||
case NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_MESH:
|
||||
return nmc_meta_generic_get_bool(NM_FLAGS_HAS(wcaps, NM_WIFI_DEVICE_CAP_MESH), get_type);
|
||||
case NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_IBSS_RSN:
|
||||
|
@ -643,6 +649,9 @@ const NmcMetaGenericInfo *const
|
|||
_METAGEN_DEVICE_DETAIL_WIFI_PROPERTIES(
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_5GHZ,
|
||||
"5GHZ"),
|
||||
_METAGEN_DEVICE_DETAIL_WIFI_PROPERTIES(
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_6GHZ,
|
||||
"6GHZ"),
|
||||
_METAGEN_DEVICE_DETAIL_WIFI_PROPERTIES(
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_MESH,
|
||||
"MESH"),
|
||||
|
|
|
@ -227,6 +227,7 @@ typedef enum {
|
|||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_ADHOC,
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_2GHZ,
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_5GHZ,
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_6GHZ,
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_MESH,
|
||||
NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_IBSS_RSN,
|
||||
_NMC_GENERIC_INFO_TYPE_DEVICE_DETAIL_WIFI_PROPERTIES_NUM,
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue