Bug #272

Fwd: multicast really can mess up your whole day [PATCH] ath6kl: pass only unicast frames for aggregation

Added by David Taht on Sep 19, 2011. Updated on Nov 18, 2011.
In Progress Normal Dave Täht

Description

multicast really can mess up your whole day.

———- Forwarded message ———-
From: Kalle Valo kvalo@qca.qualcomm.com
Date: Mon, Sep 19, 2011 at 11:38 AM
Subject: [PATCH] ath6kl: pass only unicast frames for aggregation
To: linux-wireless@vger.kernel.org

When pinging form ar6003 to the AP RTT was high even when power save was
disabled:

100 packets transmitted, 97 received, 3% packet loss, time 99125ms
rtt min/avg/max/mdev = 1.87546.733795.506139.181 ms

After some investigation one reason for this was that received
multicast traffic confused the aggrecation logic and caused 400 ms
timeouts when receiving multicast frames from AP.

A simple way to fix is to pass only unicast frames for aggregation. This
improves RTT:

100 packets transmitted, 99 received, 1% packet loss, time 99144ms
rtt min/avg/max/mdev = 2.083/13.084/403.39056.794 ms

Signed-off-by: Kalle Valo kvalo@qca.qualcomm.com

 drivers/net/wireless/ath/ath6kl/txrx.c |   16 **+——-
 1 files changed, 9 insertions(+), 7 deletions(-)

diff –git a/drivers/net/wireless/ath/ath6kl/txrx.c
b/drivers/net/wireless/ath/ath6kl/txrx.c
index fffd929..348c646 100644
— a/drivers/net/wireless/ath/ath6kl/txrx.c
**+ b/drivers/net/wireless/ath/ath6kl/txrx.c
@ -1230,9 +1230,15@ void ath6kl_rx(struct htc_target *target,
struct htc_packet *packet)
                       ath6kl_data_tx(skb1, ar->net_dev);
       }

  •       if (!aggr_process_recv_frm(ar->aggr_cntxt, tid, seq_no,
  •                                  is_amsdu, skb))
  •               ath6kl_deliver_frames_to_nw_stack(ar->net_dev, skb);
  •       datap = (struct ethhdr *) skb->data;
    +
  •       if (is_unicast_ether_addr(datap->h_dest) &&
  •           aggr_process_recv_frm(ar->aggr_cntxt, tid, seq_no,
  •                                 is_amsdu, skb))
  •               /* aggregation code will handle the skb */
  •               return;
    +
  •       ath6kl_deliver_frames_to_nw_stack(ar->net_dev, skb);
     }

 static void aggr_timeout(unsigned long arg)
@ -1249,10 +1255,6@ static void aggr_timeout(unsigned long arg)
               if (rxtid->timer_mon || rxtid->progress)
                       continue;

  •               /*
  •                * FIXME: these timeouts happen quite fruently, something
  •                * line once within 60 seconds. Investigate why.
  •                */
                   stats->num_timeouts++;
                   ath6kl_dbg(ATH6KL_DBG_AGGR,
                              “aggr timeout (st %d end %d)\n”,

History

Updated by Jim Gettys on Sep 19, 2011.
Updated by David Taht on Sep 19, 2011.
I’d sent this comment to the list:

“I note that while the improvement above is enormous, a 403ms RTT for
a packet is the rough equivalent of a detour around all of planet Earth…
between your couch and the AP.

Can outliers of this sort be improved?

At what point are packets dropped?”

Updated by Dave Täht on Sep 20, 2011.
I note that this is not a specific to cerowrt bug, just a note to myself to check the multicast routine for correctness overall.
Updated by Dave Täht on Nov 18, 2011.
I checked the multicast handling throughout linux actually/ Oh, god, this needs to be handled with more intelligence.

One - multicast should be scheduled separately in the general case.

I have come up with a string of methods to make handling multicast much, much saner, but it pees on many levels of the stack, at the moment. That said, I think the pieces are falling in place, with the new ‘birthday free mac classifier’

This is a static export of the original bufferbloat.net issue database. As such, no further commenting is possible; the information is solely here for archival purposes.
RSS feed

Recent Updates

Dec 2, 2024 Wiki page
What Can I Do About Bufferbloat?
Dec 1, 2024 Wiki page
Bufferbloat FAQs
Jul 21, 2024 Wiki page
cake-autorate
Jul 21, 2024 Wiki page
Tests for Bufferbloat
Jul 1, 2024 Wiki page
RRUL Chart Explanation

Find us elsewhere

Bufferbloat Mailing Lists
#bufferbloat on Twitter
Google+ group
Archived Bufferbloat pages from the Wayback Machine

Sponsors

Comcast Research Innovation Fund
Nlnet Foundation
Shuttleworth Foundation
GoFundMe

Bufferbloat Related Projects

OpenWrt Project
Congestion Control Blog
Flent Network Test Suite
Sqm-Scripts
The Cake shaper
AQMs in BSD
IETF AQM WG
CeroWrt (where it all started)

Network Performance Related Resources


Jim Gettys' Blog - The chairman of the Fjord
Toke's Blog - Karlstad University's work on bloat
Voip Users Conference - Weekly Videoconference mostly about voip
Candelatech - A wifi testing company that "gets it".