summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
diff options
context:
space:
mode:
authorSeth Forshee <seth.forshee@canonical.com>2012-11-15 18:07:55 +0400
committerJohn W. Linville <linville@tuxdriver.com>2012-11-20 23:04:09 +0400
commit32d0f12a1611421abf70ff7c30d76c739aafad64 (patch)
tree0c310b85111380b9bcd4549d7de1dad8f2381f9d /drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
parent7f2de08fc0b997ef580a2204e6d14c3c889282c4 (diff)
downloadlinux-32d0f12a1611421abf70ff7c30d76c739aafad64.tar.xz
brcmsmac: Use IEEE 802.11 AC levels for pktq precedence levels
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 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. Signed-off-by: Seth Forshee <seth.forshee@canonical.com> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Arend van Spriel <arend@broadcom.com> Tested-by: Daniel Wagner <wagi@monom.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmsmac/ampdu.c')
-rw-r--r--drivers/net/wireless/brcm80211/brcmsmac/ampdu.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c b/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
index ea84087f8140..0b4a490a0397 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/ampdu.c
@@ -827,7 +827,6 @@ brcms_c_sendampdu(struct ampdu_info *ampdu, struct brcms_txq_info *qi,
struct scb *scb;
struct scb_ampdu *scb_ampdu;
struct scb_ampdu_tid_ini *ini;
- struct brcms_fifo_info *f;
struct ieee80211_tx_info *tx_info;
u16 qlen;
struct wiphy *wiphy;
@@ -838,8 +837,6 @@ brcms_c_sendampdu(struct ampdu_info *ampdu, struct brcms_txq_info *qi,
tid = (u8) (p->priority);
- f = ampdu->fifo_tb + prio2fifo[tid];
-
scb = &wlc->pri_scb;
scb_ampdu = &scb->scb_ampdu;
ini = &scb_ampdu->ini[tid];
@@ -1048,8 +1045,7 @@ brcms_c_ampdu_dotxstatus_complete(struct ampdu_info *ampdu, struct scb *scb,
* if there were underflows, but pre-loading
* is not active, notify rate adaptation.
*/
- if (brcms_c_ffpld_check_txfunfl(wlc,
- prio2fifo[tid]) > 0)
+ if (brcms_c_ffpld_check_txfunfl(wlc, queue) > 0)
tx_error = true;
}
} else if (txs->phyerr) {
@@ -1119,12 +1115,7 @@ brcms_c_ampdu_dotxstatus_complete(struct ampdu_info *ampdu, struct scb *scb,
if (retry && (ini->txretry[index] < (int)retry_limit)) {
ini->txretry[index]++;
ini->tx_in_transit--;
- /*
- * Use high prededence for retransmit to
- * give some punch
- */
- brcms_c_txq_enq(wlc, scb, p,
- BRCMS_PRIO_TO_HI_PREC(tid));
+ brcms_c_txq_enq(wlc, scb, p);
} else {
/* Retry timeout */
ini->tx_in_transit--;