Search Linux Wireless

RE: [PATCH 04/12] iwlwifi: mvm: Passively scan non PSC channels only when requested so

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ben,

Sorry for the late response.

Can you please try this with the following patch for hostap?

https://patchwork.ozlabs.org/project/hostap/patch/20211130153943.3531922-1-andrei.otcheretianski@xxxxxxxxx/

I believe that reason the connection fails is due to user space not setting the collocated scan flag when not scanning passively.

If this resolves the issue, I'll try to find a better solution for handling this.

Thanks in advance,

Ilan.

> -----Original Message-----
> From: Ben Greear <greearb@xxxxxxxxxxxxxxx>
> Sent: Friday, March 25, 2022 20:12
> To: Luca Coelho <luca@xxxxxxxxx>; kvalo@xxxxxxxxxx
> Cc: linux-wireless@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH 04/12] iwlwifi: mvm: Passively scan non PSC channels
> only when requested so
> 
> On 2/4/22 2:25 AM, Luca Coelho wrote:
> > From: Ilan Peer <ilan.peer@xxxxxxxxx>
> >
> > Non PSC channels should generally be scanned based on information
> > about collocated APs obtained during scan on legacy bands, and
> > otherwise should not be scanned unless specifically requested so (as
> > there are relatively many non PSC channels, scanning them passively is
> > time consuming and interferes with regular data traffic).
> >
> > Thus, modify the scan logic to avoid passively scanning PSC channels
> > if there is no information about collocated APs and the scan is not a
> > passive scan.
> 
> Hello,
> 
> This breaks association against a Cisco test AP on frequency 5995.
> 
> Here are logs of the previous commit working (scan takes longer, but SSID is
> found), and at the bottom, scan with this commit, which fails to detect the
> SSID.
> 
> # ethtool -i sta0000
> driver: iwlwifi
> version: 5.17.0+
> firmware-version: 68.01d30b0c.0 ty-a0-gf-a0-68.uc
> expansion-rom-version:
> bus-info: 0000:05:00.0
> supports-statistics: yes
> supports-test: no
> supports-eeprom-access: no
> supports-register-dump: no
> supports-priv-flags: no
> 
> It breaks on version 71 firmware too.
> 
> 2022-03-25 09:56:35.464  1.1:  sta0000 (phy #0): scan started
> 2022-03-25 09:56:42.095  1.1:  sta0000 (phy #0): scan finished: 2412 2417 2422
> 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 5180 5200 5220 5240 5260
> 5280
> 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5720 5745
> 5765 5785 5805 5825 5955 5975 5995 6015 6035 6055 6075 6095 6115 6135 6155
> 6175 6195
> 6215 6235 6255 6275 6295 6315 6335 6355 6375 6395 6415 6435 6455 6475 6495
> 6515 6535 6555 6575 6595 6615 6635 6655 6675 6695 6715 6735 6755 6775 6795
> 6815 6835
> 6855 6875 6895 6915 6935 6955 6975 6995 7015 7035 7055 7075 7095 7115, ""
> 2022-03-25 09:56:42.101  1.1:  IFNAME=sta0000 <3>SME: Trying to
> authenticate with 68:7d:b4:60:04:b8 (SSID=
> 2022-03-25 09:56:42.122  1.1:  sta0000: new station 68:7d:b4:60:04:b8
> 2022-03-25 09:56:42.252  1.1:  sta0000 (phy #0): auth 68:7d:b4:60:04:b8 ->
> a4:6b:b6:5a:b1:da status: 126: <unknown>
> 2022-03-25 09:56:42.254  1.1:  IFNAME=sta0000 <3>SME: Trying to
> authenticate with 68:7d:b4:60:04:b8 (SSID=
> 2022-03-25 09:56:42.310  1.1:  sta0000 (phy #0): auth 68:7d:b4:60:04:b8 ->
> a4:6b:b6:5a:b1:da status: 0: Successful
> 2022-03-25 09:56:42.310  1.1:  IFNAME=sta0000 <3>PMKSA-CACHE-ADDED
> 68:7d:b4:60:04:b8 0
> 2022-03-25 09:56:42.311  1.1:  IFNAME=sta0000 <3>Trying to associate with
> 68:7d:b4:60:04:b8 (SSID=
> 2022-03-25 09:56:42.312  1.1:  IFNAME=sta0000 <3>EAPOL-RX
> 68:7d:b4:60:04:b8 121
> 2022-03-25 09:56:42.313  1.1:  sta0000 (phy #0): assoc 68:7d:b4:60:04:b8 ->
> a4:6b:b6:5a:b1:da status: 0: Successful
> 2022-03-25 09:56:42.313  1.1:  IFNAME=sta0000 <3>Associated with
> 68:7d:b4:60:04:b8
> 2022-03-25 09:56:42.314  1.1:  IFNAME=sta0000 <3>EAPOL-RX
> 68:7d:b4:60:04:b8 121
> 2022-03-25 09:56:42.321  1.1:  IFNAME=sta0000 <3>CTRL-EVENT-SUBNET-
> STATUS-UPDATE status=0
> 2022-03-25 09:56:42.322  1.1:  sta0000 (phy #0): ctrl. port TX status (cookie 1):
> acked
> 2022-03-25 09:56:42.323  1.1:  IFNAME=sta0000 <3>EAPOL-RX
> 68:7d:b4:60:04:b8 195
> 2022-03-25 09:56:42.328  1.1:  sta0000 (phy #0): ctrl. port TX status (cookie 2):
> acked
> 2022-03-25 09:56:42.364  1.1:  IFNAME=sta0000 <3>WPA: Key negotiation
> completed with 68:7d:b4:60:04:b8 [PTK=CCMP GTK=CCMP]
> 2022-03-25 09:56:42.403  1.1:  IFNAME=sta0000 <3>CTRL-EVENT-CONNECTED
> - Connection to 68:7d:b4:60:04:b8 completed [id=0 id_str=]
> 2022-03-25 09:56:42.403  1.1:  IFNAME=sta0000 <3>WPA: Key negotiation
> completed with 68:7d:b4:60:04:b8 [PTK=CCMP GTK=CCMP]
> 
> 
> 
> 2022-03-25 10:05:52.416  1.1:  sta0000 (phy #7): scan started
> 2022-03-25 10:05:56.215  1.1:  sta0000 (phy #7): scan finished: 2412 2417 2422
> 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 5180 5200 5220 5240 5260
> 5280
> 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5720 5745
> 5765 5785 5805 5825, ""
> 2022-03-25 10:05:56.215  1.1:  phy #7: regulatory domain change (phy): set to
> US by a driver request on phy7
> 2022-03-25 10:05:56.216  1.1:  IFNAME=sta0000 <3>CTRL-EVENT-NETWORK-
> NOT-FOUND
> 2022-03-25 10:05:56.216  1.1:  IFNAME=sta0000 <3>CTRL-EVENT-REGDOM-
> CHANGE init=DRIVER type=COUNTRY alpha2=US
> 2022-03-25 10:06:01.217  1.1:  IFNAME=sta0000 <3>CTRL-EVENT-SCAN-
> STARTED
> 2022-03-25 10:06:01.217  1.1:  sta0000 (phy #7): scan started
> 2022-03-25 10:06:02.739  1.1:  sta0000 (phy #7): scan finished: 2412 2417 2422
> 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 5180 5200 5220 5240 5260
> 5280
> 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5720 5745
> 5765 5785 5805 5825 5955 5975 5995 6015 6035 6055 6075 6095 6115 6135 6155
> 6175 6195
> 6215 6235 6255 6275 6295 6315 6335 6355 6375 6395 6415 6435 6455 6475 6495
> 6515 6535 6555 6575 6595 6615 6635 6655 6675 6695 6715 6735 6755 6775 6795
> 6815 6835
> 6855 6875 6895 6915 6935 6955 6975 6995 7015 7035 7055 7075 7095 7115, ""
> 
> [ SSID is not found, sta never associates]
> 
> Thanks,
> Ben
> 
> >
> > Signed-off-by: Ilan Peer <ilan.peer@xxxxxxxxx>
> > Signed-off-by: Luca Coelho <luciano.coelho@xxxxxxxxx>
> > ---
> >   drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 42 ++++++++++++++-----
> >   1 file changed, 32 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
> > b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
> > index 8c7cb491330d..901df916baa4 100644
> > --- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
> > +++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
> > @@ -1728,27 +1728,37 @@ iwl_mvm_umac_scan_fill_6g_chan_list(struct
> iwl_mvm *mvm,
> >   }
> >
> >   /* TODO: this function can be merged with
> > iwl_mvm_scan_umac_fill_ch_p_v6 */ -static void
> > -iwl_mvm_umac_scan_cfg_channels_v6_6g(struct iwl_mvm_scan_params
> > *params,
> > +static u32
> > +iwl_mvm_umac_scan_cfg_channels_v6_6g(struct iwl_mvm *mvm,
> > +				     struct iwl_mvm_scan_params *params,
> >   				     u32 n_channels,
> >   				     struct iwl_scan_probe_params_v4 *pp,
> >   				     struct iwl_scan_channel_params_v6 *cp,
> >   				     enum nl80211_iftype vif_type)
> >   {
> > -	struct iwl_scan_channel_cfg_umac *channel_cfg = cp-
> >channel_config;
> >   	int i;
> >   	struct cfg80211_scan_6ghz_params *scan_6ghz_params =
> >   		params->scan_6ghz_params;
> > +	u32 ch_cnt;
> >
> > -	for (i = 0; i < params->n_channels; i++) {
> > +	for (i = 0, ch_cnt = 0; i < params->n_channels; i++) {
> >   		struct iwl_scan_channel_cfg_umac *cfg =
> > -			&cp->channel_config[i];
> > +			&cp->channel_config[ch_cnt];
> >
> >   		u32 s_ssid_bitmap = 0, bssid_bitmap = 0, flags = 0;
> >   		u8 j, k, s_max = 0, b_max = 0, n_used_bssid_entries;
> >   		bool force_passive, found = false, allow_passive = true,
> >   		     unsolicited_probe_on_chan = false, psc_no_listen = false;
> >
> > +		/*
> > +		 * Avoid performing passive scan on non PSC channels unless
> the
> > +		 * scan is specifically a passive scan, i.e., no SSIDs
> > +		 * configured in the scan command.
> > +		 */
> > +		if (!cfg80211_channel_is_psc(params->channels[i]) &&
> > +		    !params->n_6ghz_params && params->n_ssids)
> > +			continue;
> > +
> >   		cfg->v1.channel_num = params->channels[i]->hw_value;
> >   		cfg->v2.band = 2;
> >   		cfg->v2.iter_count = 1;
> > @@ -1868,8 +1878,16 @@
> iwl_mvm_umac_scan_cfg_channels_v6_6g(struct iwl_mvm_scan_params
> *params,
> >   		else
> >   			flags |= bssid_bitmap | (s_ssid_bitmap << 16);
> >
> > -		channel_cfg[i].flags |= cpu_to_le32(flags);
> > +		cfg->flags |= cpu_to_le32(flags);
> > +		ch_cnt++;
> >   	}
> > +
> > +	if (params->n_channels > ch_cnt)
> > +		IWL_DEBUG_SCAN(mvm,
> > +			       "6GHz: reducing number channels: (%u->%u)\n",
> > +			       params->n_channels, ch_cnt);
> > +
> > +	return ch_cnt;
> >   }
> >
> >   static u8 iwl_mvm_scan_umac_chan_flags_v2(struct iwl_mvm *mvm,
> @@
> > -2415,10 +2433,14 @@ static int
> iwl_mvm_scan_umac_v14_and_above(struct
> > iwl_mvm *mvm,
> >
> >   	iwl_mvm_umac_scan_fill_6g_chan_list(mvm, params, pb);
> >
> > -	iwl_mvm_umac_scan_cfg_channels_v6_6g(params,
> > -					     params->n_channels,
> > -					     pb, cp, vif->type);
> > -	cp->count = params->n_channels;
> > +	cp->count = iwl_mvm_umac_scan_cfg_channels_v6_6g(mvm,
> params,
> > +							 params-
> >n_channels,
> > +							 pb, cp, vif->type);
> > +	if (!cp->count) {
> > +		mvm->scan_uid_status[uid] = 0;
> > +		return -EINVAL;
> > +	}
> > +
> >   	if (!params->n_ssids ||
> >   	    (params->n_ssids == 1 && !params->ssids[0].ssid_len))
> >   		cp->flags |=
> IWL_SCAN_CHANNEL_FLAG_6G_PSC_NO_FILTER;
> >
> 
> 
> --
> Ben Greear <greearb@xxxxxxxxxxxxxxx>
> Candela Technologies Inc  http://www.candelatech.com





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux