[RFC v3 4/8] wifi: mac80211: add support for DFS with multiple radios
Felix Fietkau
nbd at nbd.name
Thu Jun 6 21:35:50 PDT 2024
On 07.06.24 06:25, Karthikeyan Periyasamy wrote:
>
>
> On 6/6/2024 11:37 PM, Felix Fietkau wrote:
>> DFS can be supported with multi-channel combinations, as long as each DFS
>> capable radio only supports one channel.
>>
>> Signed-off-by: Felix Fietkau <nbd at nbd.name>
>> ---
>> net/mac80211/main.c | 32 ++++++++++++++++++++++++--------
>> 1 file changed, 24 insertions(+), 8 deletions(-)
>>
>> diff --git a/net/mac80211/main.c b/net/mac80211/main.c
>> index 40fbf397ce74..e9c4cf611e94 100644
>> --- a/net/mac80211/main.c
>> +++ b/net/mac80211/main.c
>
> ...
>
>> int ieee80211_register_hw(struct ieee80211_hw *hw)
>> {
>> struct ieee80211_local *local = hw_to_local(hw);
>> @@ -1173,17 +1188,18 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
>> if (comb->num_different_channels > 1)
>> return -EINVAL;
>> }
>> - } else {
>> - /* DFS is not supported with multi-channel combinations yet */
>> - for (i = 0; i < local->hw.wiphy->n_iface_combinations; i++) {
>> - const struct ieee80211_iface_combination *comb;
>> -
>> - comb = &local->hw.wiphy->iface_combinations[i];
>> + } else if (hw->wiphy->n_radio) {
>> + for (i = 0; i < hw->wiphy->n_radio; i++) {
>> + const struct wiphy_radio *radio = &hw->wiphy->radio[i];
>>
>> - if (comb->radar_detect_widths &&
>> - comb->num_different_channels > 1)
>> + if (!ieee80211_ifcomb_check_radar(radio->iface_combinations,
>> + radio->n_iface_combinations))
>> return -EINVAL;
>> }
>> + } else {
>> + if (!ieee80211_ifcomb_check_radar(hw->wiphy->iface_combinations,
>> + hw->wiphy->n_iface_combinations))
>> + return -EINVAL;
>> }
>>
>> /* Only HW csum features are currently compatible with mac80211 */
>
> Are we omitting the "wiphy->iface_combinations" if the radio specific
> iface combination advertised ?
>
> If so, it looks like unused "wiphy->iface_combinations" for radio
> specific combination advertised.
This patch series assumes that you have both wiphy->iface_combinations
and radio->iface_combinations set. wiphy->iface_combinations applies to
the full wiphy, whereas radio->iface_combinations only applies to vifs
assigned to the radio.
- Felix
More information about the ath12k
mailing list