Re: [PATCH 5/9] AP: Validate VHT config for 6 GHz Band Capabilities

Rajkumar Manoharan <[email protected]> Sun, 17 May 2020 22:25:36 -0700
Newsgroups gmane.linux.drivers.hostap
Message-ID <[email protected]>
On 2020-05-17 06:51, Jouni Malinen wrote:
> On Fri, Apr 24, 2020 at 03:45:38PM -0700, Rajkumar Manoharan wrote:
>> Following VHT Capabilities are mandatory for HE 6 GHz band 
>> capabilities
>> and corresponding configs should be validated for 6 GHz band.
>> 
>> * VHT_CAP_MAX_MPDU_LENGTH_MASK
>> * VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MAX
>> * VHT_CAP_RX_ANTENNA_PATTERN
>> * VHT_CAP_TX_ANTENNA_PATTERN
> 
> This sounds quite strange.. VHT is explicitly not used on the 6 GHz
> band. Why would we check VHT capabilities when operating on the 6 GHz
> band?
> 
Jouni,

Let me clarify. The driver doesn't advertise band specific capabilities 
explicitly.
IIRC spec mentions that the 6 GHz capabilities are referred from 
device's HT, VHT
capabilities as 6 GHz prohibits HT/VHT operations. Hence only mandatory 
HT/VHT
capabilities required to build 6 GHz cap are validated against user 
config.
In future, there will be dual band devices that support both 5 GHz & 6 
GHz. IMHO
it is simpler to check mandatory HT/VHT capability needed for 6 GHz 
against user config,
instead of defining 6 GHz capability check explicitly.

>> diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c
>> @@ -671,8 +671,17 @@ int hostapd_check_ht_capab(struct hostapd_iface 
>> *iface)
> 
> And why would this check be in a function that is checking HT
> capabilities? HT is also explicitly not used on the 6 GHz band and
> checking VHT parameters in a function for checking HT parameters does
> not sound correct.
> 
Leveraging the HT/VHT capability checks for building 6 GHz cap as the 
device won't advertise
band specific HE capabilities. From user perspective, just op_class and 
channel number
are enough to differentiate operating band and rest of config unaltered.

>>  {
>>  	int ret;
>> 
>> -	if (is_6ghz_freq(iface->freq))
>> +	if (is_6ghz_freq(iface->freq)) {
>> +		/*
>> +		 * VHT capabilities needed for HE 6 GHz Band Capabilities
>> +		 * needs to be validated against config.
>> +		 */
>> +#ifdef CONFIG_IEEE80211AC
>> +		if (!ieee80211ac_supported_vht_capab(iface))
>> +			return -1;
>> +#endif
>>  		return 0;
>> +	}
>>  	if (!iface->conf->ieee80211n)
>>  		return 0;
> 
> This cannot really be logically correct and certainly not the correct
> place for doing this check.
> 
Same as above. thoughts?

-Rajkumar