Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 255450
b: refs/heads/master
c: fcf2176
h: refs/heads/master
v: v3
  • Loading branch information
Yogesh Ashok Powar authored and John W. Linville committed Jun 7, 2011
1 parent 6f5c732 commit b844c5f
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 26 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: 485868266150022a139b74ba4daf0da9ad86c1c0
refs/heads/master: fcf2176c87af77e5ee947edaf8e390bc67b729d8
5 changes: 4 additions & 1 deletion trunk/drivers/net/wireless/mwifiex/11n_aggr.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,10 @@ mwifiex_11n_aggregate_pkt(struct mwifiex_private *priv,
else
skb_src = NULL;

if (skb_src)
if (skb_src) {
pra_list->total_pkts_size -= skb_src->len;
pra_list->total_pkts--;
}

atomic_dec(&priv->wmm.tx_pkts_queued);

Expand Down Expand Up @@ -258,6 +260,7 @@ mwifiex_11n_aggregate_pkt(struct mwifiex_private *priv,
skb_queue_tail(&pra_list->skb_head, skb_aggr);

pra_list->total_pkts_size += skb_aggr->len;
pra_list->total_pkts++;

atomic_inc(&priv->wmm.tx_pkts_queued);

Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/net/wireless/mwifiex/main.h
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ struct mwifiex_ra_list_tbl {
struct sk_buff_head skb_head;
u8 ra[ETH_ALEN];
u32 total_pkts_size;
u32 total_pkts;
u32 is_11n_enabled;
};

Expand Down
30 changes: 6 additions & 24 deletions trunk/drivers/net/wireless/mwifiex/wmm.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ mwifiex_wmm_allocate_ralist_node(struct mwifiex_adapter *adapter, u8 *ra)
memcpy(ra_list->ra, ra, ETH_ALEN);

ra_list->total_pkts_size = 0;
ra_list->total_pkts = 0;

dev_dbg(adapter->dev, "info: allocated ra_list %p\n", ra_list);

Expand Down Expand Up @@ -645,6 +646,7 @@ mwifiex_wmm_add_buf_txqueue(struct mwifiex_adapter *adapter,
skb_queue_tail(&ra_list->skb_head, skb);

ra_list->total_pkts_size += skb->len;
ra_list->total_pkts++;

atomic_inc(&priv->wmm.tx_pkts_queued);

Expand Down Expand Up @@ -970,28 +972,6 @@ mwifiex_wmm_get_highest_priolist_ptr(struct mwifiex_adapter *adapter,
return NULL;
}

/*
* This function gets the number of packets in the Tx queue of a
* particular RA list.
*/
static int
mwifiex_num_pkts_in_txq(struct mwifiex_private *priv,
struct mwifiex_ra_list_tbl *ptr, int max_buf_size)
{
int count = 0, total_size = 0;
struct sk_buff *skb, *tmp;

skb_queue_walk_safe(&ptr->skb_head, skb, tmp) {
total_size += skb->len;
if (total_size < max_buf_size)
++count;
else
break;
}

return count;
}

/*
* This function sends a single packet to firmware for transmission.
*/
Expand Down Expand Up @@ -1019,6 +999,7 @@ mwifiex_send_single_packet(struct mwifiex_private *priv,
dev_dbg(adapter->dev, "data: dequeuing the packet %p %p\n", ptr, skb);

ptr->total_pkts_size -= skb->len;
ptr->total_pkts--;

if (!skb_queue_empty(&ptr->skb_head))
skb_next = skb_peek(&ptr->skb_head);
Expand All @@ -1044,6 +1025,7 @@ mwifiex_send_single_packet(struct mwifiex_private *priv,
skb_queue_tail(&ptr->skb_head, skb);

ptr->total_pkts_size += skb->len;
ptr->total_pkts++;
tx_info->flags |= MWIFIEX_BUF_FLAG_REQUEUED_PKT;
spin_unlock_irqrestore(&priv->wmm.ra_list_spinlock,
ra_list_flags);
Expand Down Expand Up @@ -1231,9 +1213,9 @@ mwifiex_dequeue_tx_packet(struct mwifiex_adapter *adapter)
}
/* Minimum number of AMSDU */
#define MIN_NUM_AMSDU 2

if (mwifiex_is_amsdu_allowed(priv, tid) &&
(mwifiex_num_pkts_in_txq(priv, ptr, adapter->tx_buf_size) >=
MIN_NUM_AMSDU))
(ptr->total_pkts >= MIN_NUM_AMSDU))
mwifiex_11n_aggregate_pkt(priv, ptr, INTF_HEADER_LEN,
ptr_index, flags);
/* ra_list_spinlock has been freed in
Expand Down

0 comments on commit b844c5f

Please sign in to comment.