diff mbox series

[RFC/RFT,2/4] mt76x02: reserve wcid 0 for global traffic

Message ID 1541688430-31855-3-git-send-email-sgruszka@redhat.com (mailing list archive)
State RFC
Delegated to: Kalle Valo
Headers show
Series restore some old mt76x0u behaviour | expand

Commit Message

Stanislaw Gruszka Nov. 8, 2018, 2:47 p.m. UTC
Restore behaviour on mt76x0 before commit  1bb04bb4b838 ("mt76: move
mt76x02_init_device in mt76x02-lib module"). This will allow to use
wcid 1 for AP when we work in station mode. It's not clear if this
is needed, but this is how vendor driver assign wcid's in STA mode.
This should be harmless for mt76x2.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
 drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Lorenzo Bianconi Nov. 8, 2018, 3:01 p.m. UTC | #1
> Restore behaviour on mt76x0 before commit  1bb04bb4b838 ("mt76: move
> mt76x02_init_device in mt76x02-lib module"). This will allow to use
> wcid 1 for AP when we work in station mode. It's not clear if this
> is needed, but this is how vendor driver assign wcid's in STA mode.
> This should be harmless for mt76x2.
>
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> ---
>  drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
> index 2be4b527477f..e624397b3d8b 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
> @@ -113,7 +113,11 @@ void mt76x02_init_device(struct mt76x02_dev *dev)
>         ieee80211_hw_set(hw, SUPPORTS_HT_CCK_RATES);
>         ieee80211_hw_set(hw, SUPPORTS_REORDERING_BUFFER);
>
> -       dev->mt76.global_wcid.idx = 255;
> +       /* Reserve WCID 0 for mcast - thanks to this APs WCID will go to
> +        * entry no. 1 like it does in the vendor driver.
> +        */
> +       dev->mt76.wcid_mask[0] |= 1;
> +       dev->mt76.global_wcid.idx = 0;
>         dev->mt76.global_wcid.hw_key_idx = -1;
>         dev->slottime = 9;
>

Does it make any difference in AP mode? What about using 0 instead of
255 for global_wcid.idx?

Regards,
Lorenzo

> --
> 1.9.3
>
Stanislaw Gruszka Nov. 8, 2018, 3:54 p.m. UTC | #2
On Thu, Nov 08, 2018 at 04:01:54PM +0100, Lorenzo Bianconi wrote:
> > Restore behaviour on mt76x0 before commit  1bb04bb4b838 ("mt76: move
> > mt76x02_init_device in mt76x02-lib module"). This will allow to use
> > wcid 1 for AP when we work in station mode. It's not clear if this
> > is needed, but this is how vendor driver assign wcid's in STA mode.
> > This should be harmless for mt76x2.
> >
> > Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> > ---
> >  drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
> > index 2be4b527477f..e624397b3d8b 100644
> > --- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
> > +++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
> > @@ -113,7 +113,11 @@ void mt76x02_init_device(struct mt76x02_dev *dev)
> >         ieee80211_hw_set(hw, SUPPORTS_HT_CCK_RATES);
> >         ieee80211_hw_set(hw, SUPPORTS_REORDERING_BUFFER);
> >
> > -       dev->mt76.global_wcid.idx = 255;
> > +       /* Reserve WCID 0 for mcast - thanks to this APs WCID will go to
> > +        * entry no. 1 like it does in the vendor driver.
> > +        */
> > +       dev->mt76.wcid_mask[0] |= 1;
> > +       dev->mt76.global_wcid.idx = 0;
> >         dev->mt76.global_wcid.hw_key_idx = -1;
> >         dev->slottime = 9;
> >
> 
> Does it make any difference in AP mode?

First sta will get wcid = 1 instead of 0.

> What about using 0 instead of
> 255 for global_wcid.idx?

Patch do exactly that , it assigns:

	dev->mt76.global_wcid.idx = 0;

Thanks
Stanislaw
Felix Fietkau Nov. 8, 2018, 4:05 p.m. UTC | #3
On 2018-11-08 16:54, Stanislaw Gruszka wrote:
> On Thu, Nov 08, 2018 at 04:01:54PM +0100, Lorenzo Bianconi wrote:
>> > Restore behaviour on mt76x0 before commit  1bb04bb4b838 ("mt76: move
>> > mt76x02_init_device in mt76x02-lib module"). This will allow to use
>> > wcid 1 for AP when we work in station mode. It's not clear if this
>> > is needed, but this is how vendor driver assign wcid's in STA mode.
>> > This should be harmless for mt76x2.
>> >
>> > Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
>> > ---
>> >  drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 6 +++++-
>> >  1 file changed, 5 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
>> > index 2be4b527477f..e624397b3d8b 100644
>> > --- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
>> > +++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
>> > @@ -113,7 +113,11 @@ void mt76x02_init_device(struct mt76x02_dev *dev)
>> >         ieee80211_hw_set(hw, SUPPORTS_HT_CCK_RATES);
>> >         ieee80211_hw_set(hw, SUPPORTS_REORDERING_BUFFER);
>> >
>> > -       dev->mt76.global_wcid.idx = 255;
>> > +       /* Reserve WCID 0 for mcast - thanks to this APs WCID will go to
>> > +        * entry no. 1 like it does in the vendor driver.
>> > +        */
>> > +       dev->mt76.wcid_mask[0] |= 1;
>> > +       dev->mt76.global_wcid.idx = 0;
>> >         dev->mt76.global_wcid.hw_key_idx = -1;
>> >         dev->slottime = 9;
>> >
>> 
>> Does it make any difference in AP mode?
> 
> First sta will get wcid = 1 instead of 0.
> 
>> What about using 0 instead of
>> 255 for global_wcid.idx?
> 
> Patch do exactly that , it assigns:
> 
> 	dev->mt76.global_wcid.idx = 0;
I don't think we should reserve WCID0 just because the vendor driver
does it, unless we can find a case where it actually makes a meaningful
difference. WCID entries >128 are useless for normal stations, so let's
use those for reserved entries instead of reducing the effective station
number limit.

- Felix
diff mbox series

Patch

diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
index 2be4b527477f..e624397b3d8b 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
@@ -113,7 +113,11 @@  void mt76x02_init_device(struct mt76x02_dev *dev)
 	ieee80211_hw_set(hw, SUPPORTS_HT_CCK_RATES);
 	ieee80211_hw_set(hw, SUPPORTS_REORDERING_BUFFER);
 
-	dev->mt76.global_wcid.idx = 255;
+	/* Reserve WCID 0 for mcast - thanks to this APs WCID will go to
+	 * entry no. 1 like it does in the vendor driver.
+	 */
+	dev->mt76.wcid_mask[0] |= 1;
+	dev->mt76.global_wcid.idx = 0;
 	dev->mt76.global_wcid.hw_key_idx = -1;
 	dev->slottime = 9;