diff mbox series

[v2,5/5] wcn36xx: Set PHY into correct mode for 80MHz channel width

Message ID 20200829033947.2167817-6-bryan.odonoghue@linaro.org
State Superseded
Headers show
Series wcn36xx: PHY modifications to support 80MHz operation | expand

Commit Message

Bryan O'Donoghue Aug. 29, 2020, 3:39 a.m. UTC
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>

---
 drivers/net/wireless/ath/wcn36xx/smd.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

-- 
2.27.0


_______________________________________________
wcn36xx mailing list
wcn36xx@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/wcn36xx

Comments

Loic Poulain Aug. 31, 2020, 10:08 a.m. UTC | #1
Hi Bryan,

On Sat, 29 Aug 2020 at 05:39, Bryan O'Donoghue
<bryan.odonoghue@linaro.org> wrote:
>

> For the 80MHz channel we need to set the PHY mode to one of four PHY modes

> that span the 80MHz range.


What about 40Mhz bonding?


>

> 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>

> ---

>  drivers/net/wireless/ath/wcn36xx/smd.c | 9 ++++++++-

>  1 file changed, 8 insertions(+), 1 deletion(-)

>

> diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c

> index 729708d96586..4b967f8ba949 100644

> --- a/drivers/net/wireless/ath/wcn36xx/smd.c

> +++ b/drivers/net/wireless/ath/wcn36xx/smd.c

> @@ -1493,6 +1493,7 @@ int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn, struct ieee80211_vif *vif,

>         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);

> @@ -1536,7 +1537,13 @@ int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn, struct ieee80211_vif *vif,

>         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;

>

> --

> 2.27.0

>
Bryan O'Donoghue Aug. 31, 2020, 11:30 a.m. UTC | #2
On 31/08/2020 11:08, Loic Poulain wrote:
> Hi Bryan,

> 

> On Sat, 29 Aug 2020 at 05:39, Bryan O'Donoghue

> <bryan.odonoghue@linaro.org> wrote:

>>

>> For the 80MHz channel we need to set the PHY mode to one of four PHY modes

>> that span the 80MHz range.

> 

> What about 40Mhz bonding?


The existing code handles 40MHz HT in wcn36xx_smd_join()



_______________________________________________
wcn36xx mailing list
wcn36xx@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/wcn36xx
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c
index 729708d96586..4b967f8ba949 100644
--- a/drivers/net/wireless/ath/wcn36xx/smd.c
+++ b/drivers/net/wireless/ath/wcn36xx/smd.c
@@ -1493,6 +1493,7 @@  int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn, struct ieee80211_vif *vif,
 	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);
@@ -1536,7 +1537,13 @@  int wcn36xx_smd_config_bss_v1(struct wcn36xx *wcn, struct ieee80211_vif *vif,
 	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;