Search Linux Wireless

Re: [PATCH v2 05/22] brcmsmac: Use IEEE 802.11 AC levels for pktq precedence levels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/15/2012 03:07 PM, Seth Forshee wrote:
The mac80211 tx queues and brcmsmac DMA fifos both map directly to AC
levels. Therefore it's much more straightforward to queue tx frames and
choose the tx fifo based on the mac80211 queue instead of mapping 802.1D
priority tags to precedence levels then back to AC levels. mac80211
already maps the 802.1D levels to the appropriate AC levels and queues
management frames at the maximum priority, so the results should be
identical.

One functional change resulting from this patch is that AMPDU retries no
longer get a priority boost to queue them ahead of packets with the same

True. I believe the statement actually applies to any retry include non-AMPDU.

priority already in the tx queue. This behavior will be restored (in
effect at least) in a later patch when the tx queue is removed.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@xxxxxxxxxxxx>
Reviewed-by: Arend van Spriel <arend@xxxxxxxxxxxx>
Signed-off-by: Seth Forshee <seth.forshee@xxxxxxxxxxxxx>
---
  drivers/net/wireless/brcm80211/brcmsmac/ampdu.c |   13 +----
  drivers/net/wireless/brcm80211/brcmsmac/main.c  |   67 ++++++++---------------
  drivers/net/wireless/brcm80211/brcmsmac/main.h  |    6 +-
  drivers/net/wireless/brcm80211/brcmsmac/pub.h   |   26 +--------
  4 files changed, 26 insertions(+), 86 deletions(-)

diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
index 135af9a..8abf39d 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
@@ -365,6 +342,21 @@ static const char fifo_names[6][0];
  static struct brcms_c_info *wlc_info_dbg = (struct brcms_c_info *) (NULL);
  #endif

+/* Mapping of ieee80211 AC numbers to tx fifos */
+static const u8 ac_to_fifo_mapping[IEEE80211_NUM_ACS] = {
+	[IEEE80211_AC_VO]	= TX_AC_VO_FIFO,
+	[IEEE80211_AC_VI]	= TX_AC_VI_FIFO,
+	[IEEE80211_AC_BE]	= TX_AC_BE_FIFO,
+	[IEEE80211_AC_BK]	= TX_AC_BK_FIFO,

Minor comment: Can you get rid of the tab before the equal sign and use space instead?

@@ -6068,14 +6054,13 @@ static bool brcms_c_prec_enq(struct brcms_c_info *wlc, struct pktq *q,
  }

  void brcms_c_txq_enq(struct brcms_c_info *wlc, struct scb *scb,
-		     struct sk_buff *sdu, uint prec)
+		     struct sk_buff *sdu)
  {
  	struct brcms_txq_info *qi = wlc->pkt_queue;	/* Check me */
  	struct pktq *q = &qi->q;
-	int prio;
-
-	prio = sdu->priority;
+	uint prec;

the term prec, short for precedence, may be confusing as the concept is removed.

+	prec = brcms_ac_to_fifo(skb_get_queue_mapping(sdu));
  	if (!brcms_c_prec_enq(wlc, q, sdu, prec)) {
  		/*
  		 * we might hit this condtion in case


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


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux