[PATCH v9 04/12] wifi: ath11k: update regulatory rules when interface added

Baochen Qiang quic_bqiang at quicinc.com
Wed Dec 13 23:09:16 PST 2023



On 12/12/2023 1:20 AM, Aditya Kumar Singh wrote:
> On 12/11/23 11:52, Baochen Qiang wrote:
>> diff --git a/drivers/net/wireless/ath/ath11k/mac.c 
>> b/drivers/net/wireless/ath/ath11k/mac.c
>> index 7f7b39817773..1e314fcab41b 100644
>> --- a/drivers/net/wireless/ath/ath11k/mac.c
>> +++ b/drivers/net/wireless/ath/ath11k/mac.c
>> @@ -6943,6 +6943,14 @@ static int ath11k_mac_op_add_interface(struct 
>> ieee80211_hw *hw,
>>                       ret);
>>       }
>> +    if (ath11k_wmi_supports_6ghz_cc_ext(ar)) {
>> +        struct cur_regulatory_info *reg_info;
>> +
>> +        reg_info = &ab->reg_info_store[ar->pdev_idx];
>> +        ath11k_dbg(ab, ATH11K_DBG_MAC, "mac interface added to change 
>> reg rules\n");
>> +        ath11k_reg_handle_chan_list(ab, reg_info, IEEE80211_REG_LPI_AP);
>> +    }
>> +
> So we update the rules by default for AP. Then in next patch 5/12, once 
> STA connects to AP, we put the proper power mode and refresh the rules.
> 
> So if user wants to bring up 1 STA interface alone, in total 3 
> regulatory updates will happen from driver to upper layer -
> 1. During initial boot time
> 2. During interface create time (above hunk)
> 3. During channel context assignment (5/12 patch)
> 
> Does this seem good? 3 times we would be changing regulatory rules and 
> first 2 times we are doing the same thing.
No, the first two times are not the same: as mentioned in the commit 
log, at the first time when boot up, interface mode is not determined, 
so the argument vdev_type is 0 when calling ath11k_reg_build_regd(), as 
a result AP reg info is chosen. And for the second time, here when 
adding interface, we know exactly the interface type, say a STA, 
vdev_type is 2 when calling ath11k_reg_build_regd(), resulting in that 
client reg info is chosen. see the changes to ath11k_reg_build_regd() in 
patch 1/12.



More information about the ath11k mailing list