diff mbox series

[02/14] wifi: iwlwifi: mvm: Allow DFS concurrent operation

Message ID 20231219215605.dc39b33bf507.I04dfda24d73091fb75701279d10ac400314de488@changeid
State Superseded
Headers show
Series wifi: iwlwifi: updates - 2023-12-06 | expand

Commit Message

Korenblit, Miriam Rachel Dec. 19, 2023, 7:58 p.m. UTC
From: Andrei Otcheretianski <andrei.otcheretianski@intel.com>

AX210 devices allow concurrent P2P operation on DFS channels.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
---
 drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c | 10 ++++++----
 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c  |  4 ++++
 2 files changed, 10 insertions(+), 4 deletions(-)

Comments

kernel test robot Dec. 20, 2023, 7:42 p.m. UTC | #1
Hi Miri,

kernel test robot noticed the following build errors:

[auto build test ERROR on wireless-next/main]
[also build test ERROR on wireless/main linus/master v6.7-rc6 next-20231220]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Miri-Korenblit/iwlwifi-mvm-set-siso-mimo-chains-to-1-in-FW-SMPS-request/20231220-040247
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link:    https://lore.kernel.org/r/20231219215605.dc39b33bf507.I04dfda24d73091fb75701279d10ac400314de488%40changeid
patch subject: [PATCH 02/14] wifi: iwlwifi: mvm: Allow DFS concurrent operation
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20231221/202312210330.BRAWF2Tp-lkp@intel.com/config)
compiler: clang version 16.0.4 (https://github.com/llvm/llvm-project.git ae42196bc493ffe877a7e3dff8be32035dea4d07)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231221/202312210330.BRAWF2Tp-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312210330.BRAWF2Tp-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:1616:13: error: use of undeclared identifier 'NL80211_RRF_DFS_CONCURRENT'; did you mean 'NL80211_RRF_IR_CONCURRENT'?
                           flags |= NL80211_RRF_DFS_CONCURRENT;
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~
                                    NL80211_RRF_IR_CONCURRENT
   include/uapi/linux/nl80211.h:4515:2: note: 'NL80211_RRF_IR_CONCURRENT' declared here
           NL80211_RRF_IR_CONCURRENT       = 1<<12,
           ^
   1 error generated.
--
>> drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:522:11: error: use of undeclared identifier 'NL80211_EXT_FEATURE_DFS_CONCURRENT'
                                         NL80211_EXT_FEATURE_DFS_CONCURRENT);
                                         ^
   1 error generated.


vim +1616 drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c

  1574	
  1575	static u32 iwl_nvm_get_regdom_bw_flags(const u16 *nvm_chan,
  1576					       int ch_idx, u16 nvm_flags,
  1577					       struct iwl_reg_capa reg_capa,
  1578					       const struct iwl_cfg *cfg)
  1579	{
  1580		u32 flags = NL80211_RRF_NO_HT40;
  1581	
  1582		if (ch_idx < NUM_2GHZ_CHANNELS &&
  1583		    (nvm_flags & NVM_CHANNEL_40MHZ)) {
  1584			if (nvm_chan[ch_idx] <= LAST_2GHZ_HT_PLUS)
  1585				flags &= ~NL80211_RRF_NO_HT40PLUS;
  1586			if (nvm_chan[ch_idx] >= FIRST_2GHZ_HT_MINUS)
  1587				flags &= ~NL80211_RRF_NO_HT40MINUS;
  1588		} else if (nvm_flags & NVM_CHANNEL_40MHZ) {
  1589			if ((ch_idx - NUM_2GHZ_CHANNELS) % 2 == 0)
  1590				flags &= ~NL80211_RRF_NO_HT40PLUS;
  1591			else
  1592				flags &= ~NL80211_RRF_NO_HT40MINUS;
  1593		}
  1594	
  1595		if (!(nvm_flags & NVM_CHANNEL_80MHZ))
  1596			flags |= NL80211_RRF_NO_80MHZ;
  1597		if (!(nvm_flags & NVM_CHANNEL_160MHZ))
  1598			flags |= NL80211_RRF_NO_160MHZ;
  1599	
  1600		if (!(nvm_flags & NVM_CHANNEL_ACTIVE))
  1601			flags |= NL80211_RRF_NO_IR;
  1602	
  1603		if (nvm_flags & NVM_CHANNEL_RADAR)
  1604			flags |= NL80211_RRF_DFS;
  1605	
  1606		if (nvm_flags & NVM_CHANNEL_INDOOR_ONLY)
  1607			flags |= NL80211_RRF_NO_OUTDOOR;
  1608	
  1609		/* Set the GO concurrent flag only in case that NO_IR is set.
  1610		 * Otherwise it is meaningless
  1611		 */
  1612		if ((nvm_flags & NVM_CHANNEL_GO_CONCURRENT)) {
  1613			if (flags & NL80211_RRF_NO_IR)
  1614				flags |= NL80211_RRF_GO_CONCURRENT;
  1615			if (flags & NL80211_RRF_DFS)
> 1616				flags |= NL80211_RRF_DFS_CONCURRENT;
  1617		}
  1618		/*
  1619		 * reg_capa is per regulatory domain so apply it for every channel
  1620		 */
  1621		if (ch_idx >= NUM_2GHZ_CHANNELS) {
  1622			if (!reg_capa.allow_40mhz)
  1623				flags |= NL80211_RRF_NO_HT40;
  1624	
  1625			if (!reg_capa.allow_80mhz)
  1626				flags |= NL80211_RRF_NO_80MHZ;
  1627	
  1628			if (!reg_capa.allow_160mhz)
  1629				flags |= NL80211_RRF_NO_160MHZ;
  1630	
  1631			if (!reg_capa.allow_320mhz)
  1632				flags |= NL80211_RRF_NO_320MHZ;
  1633		}
  1634	
  1635		if (reg_capa.disable_11ax)
  1636			flags |= NL80211_RRF_NO_HE;
  1637	
  1638		if (reg_capa.disable_11be)
  1639			flags |= NL80211_RRF_NO_EHT;
  1640	
  1641		return flags;
  1642	}
  1643
kernel test robot Dec. 20, 2023, 8:02 p.m. UTC | #2
Hi Miri,

kernel test robot noticed the following build errors:

[auto build test ERROR on wireless-next/main]
[also build test ERROR on wireless/main linus/master v6.7-rc6 next-20231220]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Miri-Korenblit/iwlwifi-mvm-set-siso-mimo-chains-to-1-in-FW-SMPS-request/20231220-040247
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link:    https://lore.kernel.org/r/20231219215605.dc39b33bf507.I04dfda24d73091fb75701279d10ac400314de488%40changeid
patch subject: [PATCH 02/14] wifi: iwlwifi: mvm: Allow DFS concurrent operation
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20231221/202312210343.J7eedmDf-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231221/202312210343.J7eedmDf-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312210343.J7eedmDf-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c: In function 'iwl_nvm_get_regdom_bw_flags':
>> drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:1616:34: error: 'NL80211_RRF_DFS_CONCURRENT' undeclared (first use in this function); did you mean 'NL80211_RRF_IR_CONCURRENT'?
    1616 |                         flags |= NL80211_RRF_DFS_CONCURRENT;
         |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~
         |                                  NL80211_RRF_IR_CONCURRENT
   drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c:1616:34: note: each undeclared identifier is reported only once for each function it appears in
--
   drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c: In function 'iwl_mvm_mac_setup_register':
>> drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:522:39: error: 'NL80211_EXT_FEATURE_DFS_CONCURRENT' undeclared (first use in this function); did you mean 'NL80211_EXT_FEATURE_BSS_COLOR'?
     522 |                                       NL80211_EXT_FEATURE_DFS_CONCURRENT);
         |                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                                       NL80211_EXT_FEATURE_BSS_COLOR
   drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c:522:39: note: each undeclared identifier is reported only once for each function it appears in


vim +1616 drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c

  1574	
  1575	static u32 iwl_nvm_get_regdom_bw_flags(const u16 *nvm_chan,
  1576					       int ch_idx, u16 nvm_flags,
  1577					       struct iwl_reg_capa reg_capa,
  1578					       const struct iwl_cfg *cfg)
  1579	{
  1580		u32 flags = NL80211_RRF_NO_HT40;
  1581	
  1582		if (ch_idx < NUM_2GHZ_CHANNELS &&
  1583		    (nvm_flags & NVM_CHANNEL_40MHZ)) {
  1584			if (nvm_chan[ch_idx] <= LAST_2GHZ_HT_PLUS)
  1585				flags &= ~NL80211_RRF_NO_HT40PLUS;
  1586			if (nvm_chan[ch_idx] >= FIRST_2GHZ_HT_MINUS)
  1587				flags &= ~NL80211_RRF_NO_HT40MINUS;
  1588		} else if (nvm_flags & NVM_CHANNEL_40MHZ) {
  1589			if ((ch_idx - NUM_2GHZ_CHANNELS) % 2 == 0)
  1590				flags &= ~NL80211_RRF_NO_HT40PLUS;
  1591			else
  1592				flags &= ~NL80211_RRF_NO_HT40MINUS;
  1593		}
  1594	
  1595		if (!(nvm_flags & NVM_CHANNEL_80MHZ))
  1596			flags |= NL80211_RRF_NO_80MHZ;
  1597		if (!(nvm_flags & NVM_CHANNEL_160MHZ))
  1598			flags |= NL80211_RRF_NO_160MHZ;
  1599	
  1600		if (!(nvm_flags & NVM_CHANNEL_ACTIVE))
  1601			flags |= NL80211_RRF_NO_IR;
  1602	
  1603		if (nvm_flags & NVM_CHANNEL_RADAR)
  1604			flags |= NL80211_RRF_DFS;
  1605	
  1606		if (nvm_flags & NVM_CHANNEL_INDOOR_ONLY)
  1607			flags |= NL80211_RRF_NO_OUTDOOR;
  1608	
  1609		/* Set the GO concurrent flag only in case that NO_IR is set.
  1610		 * Otherwise it is meaningless
  1611		 */
  1612		if ((nvm_flags & NVM_CHANNEL_GO_CONCURRENT)) {
  1613			if (flags & NL80211_RRF_NO_IR)
  1614				flags |= NL80211_RRF_GO_CONCURRENT;
  1615			if (flags & NL80211_RRF_DFS)
> 1616				flags |= NL80211_RRF_DFS_CONCURRENT;
  1617		}
  1618		/*
  1619		 * reg_capa is per regulatory domain so apply it for every channel
  1620		 */
  1621		if (ch_idx >= NUM_2GHZ_CHANNELS) {
  1622			if (!reg_capa.allow_40mhz)
  1623				flags |= NL80211_RRF_NO_HT40;
  1624	
  1625			if (!reg_capa.allow_80mhz)
  1626				flags |= NL80211_RRF_NO_80MHZ;
  1627	
  1628			if (!reg_capa.allow_160mhz)
  1629				flags |= NL80211_RRF_NO_160MHZ;
  1630	
  1631			if (!reg_capa.allow_320mhz)
  1632				flags |= NL80211_RRF_NO_320MHZ;
  1633		}
  1634	
  1635		if (reg_capa.disable_11ax)
  1636			flags |= NL80211_RRF_NO_HE;
  1637	
  1638		if (reg_capa.disable_11be)
  1639			flags |= NL80211_RRF_NO_EHT;
  1640	
  1641		return flags;
  1642	}
  1643
diff mbox series

Patch

diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
index 480f8edbfd35..1bccbbe9a5ea 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
@@ -1609,10 +1609,12 @@  static u32 iwl_nvm_get_regdom_bw_flags(const u16 *nvm_chan,
 	/* Set the GO concurrent flag only in case that NO_IR is set.
 	 * Otherwise it is meaningless
 	 */
-	if ((nvm_flags & NVM_CHANNEL_GO_CONCURRENT) &&
-	    (flags & NL80211_RRF_NO_IR))
-		flags |= NL80211_RRF_GO_CONCURRENT;
-
+	if ((nvm_flags & NVM_CHANNEL_GO_CONCURRENT)) {
+		if (flags & NL80211_RRF_NO_IR)
+			flags |= NL80211_RRF_GO_CONCURRENT;
+		if (flags & NL80211_RRF_DFS)
+			flags |= NL80211_RRF_DFS_CONCURRENT;
+	}
 	/*
 	 * reg_capa is per regulatory domain so apply it for every channel
 	 */
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
index a64600f0ed9f..06de4dc2a915 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
@@ -517,6 +517,10 @@  int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
 		hw->wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG |
 					       REGULATORY_DISABLE_BEACON_HINTS;
 
+	if (mvm->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210)
+		wiphy_ext_feature_set(hw->wiphy,
+				      NL80211_EXT_FEATURE_DFS_CONCURRENT);
+
 	hw->wiphy->flags |= WIPHY_FLAG_AP_UAPSD;
 	hw->wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH;
 	hw->wiphy->flags |= WIPHY_FLAG_SPLIT_SCAN_6GHZ;