Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 351829
b: refs/heads/master
c: 7fb978b
h: refs/heads/master
i:
  351827: e9cefab
v: v3
  • Loading branch information
Yogesh Ashok Powar authored and John W. Linville committed Jan 7, 2013
1 parent b71c2ed commit 2b1d3b4
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5f2a14940db23350612071a3c906c8960e3ceb9a
refs/heads/master: 7fb978b7e93b5c4a378eba5767c7513540b56642
31 changes: 27 additions & 4 deletions trunk/drivers/net/wireless/mwl8k.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,18 @@ MODULE_PARM_DESC(ap_mode_default,
#define MWL8K_MAX_TX_QUEUES (MWL8K_TX_WMM_QUEUES + MWL8K_MAX_AMPDU_QUEUES)
#define mwl8k_tx_queues(priv) (MWL8K_TX_WMM_QUEUES + (priv)->num_ampdu_queues)

/* txpriorities are mapped with hw queues.
* Each hw queue has a txpriority.
*/
#define TOTAL_HW_TX_QUEUES 8

/* Each HW queue can have one AMPDU stream.
* But, because one of the hw queue is reserved,
* maximum AMPDU queues that can be created are
* one short of total tx queues.
*/
#define MWL8K_NUM_AMPDU_STREAMS (TOTAL_HW_TX_QUEUES - 1)

struct rxd_ops {
int rxd_size;
void (*rxd_init)(void *rxd, dma_addr_t next_dma_addr);
Expand Down Expand Up @@ -1733,7 +1745,7 @@ mwl8k_add_stream(struct ieee80211_hw *hw, struct ieee80211_sta *sta, u8 tid)
struct mwl8k_priv *priv = hw->priv;
int i;

for (i = 0; i < priv->num_ampdu_queues; i++) {
for (i = 0; i < MWL8K_NUM_AMPDU_STREAMS; i++) {
stream = &priv->ampdu[i];
if (stream->state == AMPDU_NO_STREAM) {
stream->sta = sta;
Expand Down Expand Up @@ -1780,7 +1792,7 @@ mwl8k_lookup_stream(struct ieee80211_hw *hw, u8 *addr, u8 tid)
struct mwl8k_priv *priv = hw->priv;
int i;

for (i = 0 ; i < priv->num_ampdu_queues; i++) {
for (i = 0; i < MWL8K_NUM_AMPDU_STREAMS; i++) {
struct mwl8k_ampdu_stream *stream;
stream = &priv->ampdu[i];
if (stream->state == AMPDU_NO_STREAM)
Expand Down Expand Up @@ -1827,6 +1839,13 @@ static inline void mwl8k_tx_count_packet(struct ieee80211_sta *sta, u8 tid)
tx_stats->pkts++;
}

/* The hardware ampdu queues start from 5.
* txpriorities for ampdu queues are
* 5 6 7 0 1 2 3 4 ie., queue 5 is highest
* and queue 3 is lowest (queue 4 is reserved)
*/
#define BA_QUEUE 5

static void
mwl8k_txq_xmit(struct ieee80211_hw *hw,
int index,
Expand Down Expand Up @@ -1927,8 +1946,12 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw,
if (stream != NULL) {
if (stream->state == AMPDU_STREAM_ACTIVE) {
WARN_ON(!(qos & MWL8K_QOS_ACK_POLICY_BLOCKACK));
txpriority = stream->idx + MWL8K_TX_WMM_QUEUES;
index = stream->idx + MWL8K_TX_WMM_QUEUES;
txpriority = (BA_QUEUE + stream->idx) %
TOTAL_HW_TX_QUEUES;
if (stream->idx <= 1)
index = stream->idx +
MWL8K_TX_WMM_QUEUES;

} else if (stream->state == AMPDU_STREAM_NEW) {
/* We get here if the driver sends us packets
* after we've initiated a stream, but before
Expand Down

0 comments on commit 2b1d3b4

Please sign in to comment.