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