wcn36xx: Set PHY into correct mode for 80MHz channel width
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Mon, 21 Sep 2020 13:21:18 +0000 (16:21 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 22 Sep 2020 07:23:01 +0000 (10:23 +0300)
For the 80MHz channel we need to set the PHY mode to one of four PHY modes
that span the 80MHz range.

This patch latches the hw_value PHY field previously defined for 5GHz
channels directly to the parameter passed to the firmware.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200910150708.2179043-6-bryan.odonoghue@linaro.org
drivers/net/wireless/ath/wcn36xx/smd.c

index feeb27851f7a41afc532ccf178ea1fce8e2387d2..7dada66b9f87109b5547e9c45190e2d9de965c87 100644 (file)
@@ -1508,6 +1508,7 @@ static int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn,
        struct wcn36xx_hal_config_bss_params_v1 *bss;
        struct wcn36xx_hal_config_bss_params bss_v0;
        struct wcn36xx_hal_config_sta_params_v1 *sta;
+       struct cfg80211_chan_def *chandef;
        int ret;
 
        msg_body = kzalloc(sizeof(*msg_body), GFP_KERNEL);
@@ -1547,7 +1548,13 @@ static int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn,
        bss->dtim_period = bss_v0.dtim_period;
        bss->tx_channel_width_set = bss_v0.tx_channel_width_set;
        bss->oper_channel = bss_v0.oper_channel;
-       bss->ext_channel = bss_v0.ext_channel;
+
+       if (wcn->hw->conf.chandef.width == NL80211_CHAN_WIDTH_80) {
+               chandef = &wcn->hw->conf.chandef;
+               bss->ext_channel = HW_VALUE_PHY(chandef->chan->hw_value);
+       } else {
+               bss->ext_channel = bss_v0.ext_channel;
+       }
 
        bss->reserved = bss_v0.reserved;