mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	wifi: mac80211: disallow drivers with HT wider than HE
To simplify the code in the next patch, disallow drivers supporting 40 MHz in HT but not HE, since we'd otherwise have to track local maximum bandwidth per mode there. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Gregory Greenman <gregory.greenman@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://msgid.link/20240111181514.da15fe3214d2.I4df51ad2f4c844615c168bf9bdb498925b3c77d4@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
		
							parent
							
								
									6593c7aec7
								
							
						
					
					
						commit
						f04d2c247e
					
				
					 1 changed files with 18 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1119,8 +1119,26 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
 | 
			
		|||
		supp_vht = supp_vht || sband->vht_cap.vht_supported;
 | 
			
		||||
 | 
			
		||||
		for_each_sband_iftype_data(sband, i, iftd) {
 | 
			
		||||
			u8 he_40_mhz_cap;
 | 
			
		||||
 | 
			
		||||
			supp_he = supp_he || iftd->he_cap.has_he;
 | 
			
		||||
			supp_eht = supp_eht || iftd->eht_cap.has_eht;
 | 
			
		||||
 | 
			
		||||
			if (sband->band == NL80211_BAND_2GHZ)
 | 
			
		||||
				he_40_mhz_cap =
 | 
			
		||||
					IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_IN_2G;
 | 
			
		||||
			else
 | 
			
		||||
				he_40_mhz_cap =
 | 
			
		||||
					IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_40MHZ_80MHZ_IN_5G;
 | 
			
		||||
 | 
			
		||||
			/* currently no support for HE client where HT has 40 MHz but not HT */
 | 
			
		||||
			if (iftd->he_cap.has_he &&
 | 
			
		||||
			    iftd->types_mask & (BIT(NL80211_IFTYPE_STATION) |
 | 
			
		||||
						BIT(NL80211_IFTYPE_P2P_CLIENT)) &&
 | 
			
		||||
			    sband->ht_cap.ht_supported &&
 | 
			
		||||
			    sband->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 &&
 | 
			
		||||
			    !(iftd->he_cap.he_cap_elem.phy_cap_info[0] & he_40_mhz_cap))
 | 
			
		||||
				return -EINVAL;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* HT, VHT, HE require QoS, thus >= 4 queues */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue