2016-02-28 14:19:57

by Felix Fietkau

[permalink] [raw]
Subject: [PATCH] mac80211: fix AP buffered multicast frames with queue control and txq

Buffered multicast frames must be passed to the driver directly via
drv_tx instead of going through the txq, otherwise they cannot easily be
scheduled to be sent after DTIM.

Signed-off-by: Felix Fietkau <[email protected]>
---
net/mac80211/tx.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 3a7475f..b294820 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1247,7 +1247,8 @@ static void ieee80211_drv_tx(struct ieee80211_local *local,
struct txq_info *txqi;
u8 ac;

- if (info->control.flags & IEEE80211_TX_CTRL_PS_RESPONSE)
+ if ((info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM) ||
+ (info->control.flags & IEEE80211_TX_CTRL_PS_RESPONSE))
goto tx_normal;

if (!ieee80211_is_data(hdr->frame_control))
--
2.2.2



2016-02-28 17:35:22

by Dave Taht

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix AP buffered multicast frames with queue control and txq

On Sun, Feb 28, 2016 at 6:19 AM, Felix Fietkau <[email protected]> wrote:
> Buffered multicast frames must be passed to the driver directly via
> drv_tx instead of going through the txq, otherwise they cannot easily be
> scheduled to be sent after DTIM.
>
> Signed-off-by: Felix Fietkau <[email protected]>
> ---
> net/mac80211/tx.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
> index 3a7475f..b294820 100644
> --- a/net/mac80211/tx.c
> +++ b/net/mac80211/tx.c
> @@ -1247,7 +1247,8 @@ static void ieee80211_drv_tx(struct ieee80211_local *local,
> struct txq_info *txqi;
> u8 ac;
>
> - if (info->control.flags & IEEE80211_TX_CTRL_PS_RESPONSE)
> + if ((info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM) ||
> + (info->control.flags & IEEE80211_TX_CTRL_PS_RESPONSE))
> goto tx_normal;
>
> if (!ieee80211_is_data(hdr->frame_control))
> --
> 2.2.2

I would like hooks to emerge to be able to keep the level of multicast
at a dull roar, relative to other traffic, and the impact of a
multicast bursts measureable (stat exposed to userspace, something
reporting back to the main tx queues that one just happened and how
long it took). On receive, too.....


>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

2016-03-03 15:12:47

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix AP buffered multicast frames with queue control and txq

On Sun, 2016-02-28 at 15:19 +0100, Felix Fietkau wrote:
> Buffered multicast frames must be passed to the driver directly via
> drv_tx instead of going through the txq, otherwise they cannot easily
> be scheduled to be sent after DTIM.
>
Applied.

johannes

2016-03-03 15:14:54

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix AP buffered multicast frames with queue control and txq

On Sun, 2016-02-28 at 09:35 -0800, Dave Taht wrote:
> On Sun, Feb 28, 2016 at 6:19 AM, Felix Fietkau <[email protected]>
> wrote:
> > Buffered multicast frames must be passed to the driver directly via
> > drv_tx instead of going through the txq, otherwise they cannot
> > easily be
> > scheduled to be sent after DTIM.
> >
> > Signed-off-by: Felix Fietkau <[email protected]>
> > ---
> >  net/mac80211/tx.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
> > index 3a7475f..b294820 100644
> > --- a/net/mac80211/tx.c
> > +++ b/net/mac80211/tx.c
> > @@ -1247,7 +1247,8 @@ static void ieee80211_drv_tx(struct
> > ieee80211_local *local,
> >         struct txq_info *txqi;
> >         u8 ac;
> >
> > -       if (info->control.flags & IEEE80211_TX_CTRL_PS_RESPONSE)
> > +       if ((info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM) ||
> > +           (info->control.flags & IEEE80211_TX_CTRL_PS_RESPONSE))
> >                 goto tx_normal;
> >
> >         if (!ieee80211_is_data(hdr->frame_control))
> > --
> > 2.2.2
>
> I would like 

Feel free to propose patches for anything you like :)

johannes
>

2016-03-03 16:23:03

by Dave Taht

[permalink] [raw]
Subject: Re: [PATCH] mac80211: fix AP buffered multicast frames with queue control and txq

On Thu, Mar 3, 2016 at 7:14 AM, Johannes Berg <[email protected]> wrote:
> On Sun, 2016-02-28 at 09:35 -0800, Dave Taht wrote:
>> On Sun, Feb 28, 2016 at 6:19 AM, Felix Fietkau <[email protected]>
>> wrote:
>> > Buffered multicast frames must be passed to the driver directly via
>> > drv_tx instead of going through the txq, otherwise they cannot
>> > easily be
>> > scheduled to be sent after DTIM.
>> >
>> > Signed-off-by: Felix Fietkau <[email protected]>
>> > ---
>> > net/mac80211/tx.c | 3 ++-
>> > 1 file changed, 2 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
>> > index 3a7475f..b294820 100644
>> > --- a/net/mac80211/tx.c
>> > +++ b/net/mac80211/tx.c
>> > @@ -1247,7 +1247,8 @@ static void ieee80211_drv_tx(struct
>> > ieee80211_local *local,
>> > struct txq_info *txqi;
>> > u8 ac;
>> >
>> > - if (info->control.flags & IEEE80211_TX_CTRL_PS_RESPONSE)
>> > + if ((info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM) ||
>> > + (info->control.flags & IEEE80211_TX_CTRL_PS_RESPONSE))
>> > goto tx_normal;
>> >
>> > if (!ieee80211_is_data(hdr->frame_control))
>> > --
>> > 2.2.2
>>
>> I would like
>
> Feel free to propose patches for anything you like :)

At the moment all I can do is cheer people on, and try to assemble
enough gear to test comprehensively when enough patches have landed in
your tree... Go, felix! Go, Michal! Go Mohammed! Go, Ben! Go Tim! Go,
Emmanuel! Go Johannes!


>
> johannes
>>