linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] wl1271: TX optimizations & fixes
@ 2010-10-11  8:48 Ido Yariv
  2010-10-11  8:48 ` [PATCH 1/4] wl1271: TX aggregation optimization Ido Yariv
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Ido Yariv @ 2010-10-11  8:48 UTC (permalink / raw)
  To: Luciano Coelho, linux-wireless; +Cc: Ido Yariv

The following patches fix some issues in the TX path, as well as optimize it.

The first patch fixes an issue in wl1271_tx_work. In case the aggregation
buffer is completely filled, the content of the buffer is transferred and no
more packets are sent. Fixed by flushing the buffer and continue aggregating
packets.

The second patch solves a TX starvation issue in wl1271_irq_work. Since TX is
handled by wl1271_tx_work, packets are transmitted after all interrupts are
handled in wl1271_irq_work. Since these include TX completion interrupts the
FW status might be read multiple times needlessly, which could hurt performance.

The third patch is more of a cosmetic change. Instead of traversing the array
of TX descriptors in order to find a free entry, use a bitmap for that
purpose.

The last patch fixes an issue with the TX queue low watermark. The number of
items in the TX queue is checked against the low watermark in
wl1271_tx_complete. However, the fact that a TX completion interrupt was fired
does not necessarily mean that there are any less skbs in the TX queue. Fixed
by moving the handling logic to the TX work, after skbs are actually dequeued.

These patches were tested on a Zoom2 platform (SDIO only). While throughput in
RX scenarios was hardly affected, throughput in TX scenarios was significantly
improved.

Ido Yariv (4):
  wl1271: TX aggregation optimization
  wl1271: Fix TX starvation
  wl1271: Allocate TX descriptors more efficiently
  wl1271: Fix TX queue low watermark handling

 drivers/net/wireless/wl12xx/wl1271.h      |    1 +
 drivers/net/wireless/wl12xx/wl1271_main.c |   20 ++++--
 drivers/net/wireless/wl12xx/wl1271_tx.c   |  108 +++++++++++++++++++----------
 drivers/net/wireless/wl12xx/wl1271_tx.h   |    1 +
 4 files changed, 87 insertions(+), 43 deletions(-)


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-10-13 13:01 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-11  8:48 [PATCH 0/4] wl1271: TX optimizations & fixes Ido Yariv
2010-10-11  8:48 ` [PATCH 1/4] wl1271: TX aggregation optimization Ido Yariv
2010-10-11  8:48 ` [PATCH 2/4] wl1271: Fix TX starvation Ido Yariv
2010-10-11  9:56   ` Juuso Oikarinen
2010-10-11 10:00     ` Johannes Berg
2010-10-11 23:44     ` Ido Yariv
2010-10-11  8:48 ` [PATCH 3/4] wl1271: Allocate TX descriptors more efficiently Ido Yariv
2010-10-11  8:48 ` [PATCH 4/4] wl1271: Fix TX queue low watermark handling Ido Yariv

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).