From 0aebd5554e67d8d66ce7849b93ec751896ce672a Mon Sep 17 00:00:00 2001 From: abhinav kumar Date: Wed, 3 Nov 2021 18:07:35 +0530 Subject: [PATCH] qcacld-3.0: Set correct roam band mask Currently, the driver sets roam band mask to REG_BAND_MASK_ALL(2.4G + 5G + 6G) when it receives the value of vendor bitmap as QCA_SETBAND_AUTO(0) regardless of whether the driver supports 6G or not. In case if the driver does not support 6G and userspace sends vendor bitmap as auto, the driver should convert roam band mask to REG_BAND_MASK_2G_AND_5G(2.4G + 5G). Change-Id: I45c2083aa18de8216ebdc8a9dbd22388d07c679a CRs-Fixed: 3068729 --- core/hdd/src/wlan_hdd_cfg80211.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index a5d6830b962e..10089a609aeb 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -12809,12 +12809,19 @@ const struct nla_policy setband_policy[QCA_WLAN_VENDOR_ATTR_MAX + 1] = { }; static uint32_t -wlan_vendor_bitmap_to_reg_wifi_band_bitmap(uint32_t vendor_bitmap) +wlan_vendor_bitmap_to_reg_wifi_band_bitmap(struct wlan_objmgr_psoc *psoc, + uint32_t vendor_bitmap) { uint32_t reg_bitmap = 0; - if (vendor_bitmap == QCA_SETBAND_AUTO) + if (vendor_bitmap == QCA_SETBAND_AUTO) { reg_bitmap |= REG_BAND_MASK_ALL; + if (!wlan_reg_is_6ghz_supported(psoc)) { + hdd_debug("Driver doesn't support 6ghz"); + reg_bitmap = (reg_bitmap & (~BIT(REG_BAND_6G))); + } + } + if (vendor_bitmap & QCA_SETBAND_2G) reg_bitmap |= BIT(REG_BAND_2G); if (vendor_bitmap & QCA_SETBAND_5G) @@ -12859,7 +12866,9 @@ static int __wlan_hdd_cfg80211_setband(struct wiphy *wiphy, if (tb[QCA_WLAN_VENDOR_ATTR_SETBAND_MASK]) { band_mask = nla_get_u32(tb[QCA_WLAN_VENDOR_ATTR_SETBAND_MASK]); reg_wifi_band_bitmap = - wlan_vendor_bitmap_to_reg_wifi_band_bitmap(band_mask); + wlan_vendor_bitmap_to_reg_wifi_band_bitmap(hdd_ctx->psoc, + band_mask); + hdd_debug("[SET BAND] set band mask:%d", reg_wifi_band_bitmap); } else if (tb[QCA_WLAN_VENDOR_ATTR_SETBAND_VALUE]) { band_val = nla_get_u32(tb[QCA_WLAN_VENDOR_ATTR_SETBAND_VALUE]); reg_wifi_band_bitmap =