Skip to content

Commit

Permalink
mwifiex: fix a bug in Rx multiport aggregation logic
Browse files Browse the repository at this point in the history
It's been observed Rx aggregated packets are always followed
by a single Rx packet. This patch improves our logic to add
that extra packet in next aggregation.

Signed-off-by: Cathy Luo <cluo@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
  • Loading branch information
Cathy Luo authored and Kalle Valo committed Mar 16, 2015
1 parent 52f119d commit 2c11ab9
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/net/wireless/mwifiex/sdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -1133,6 +1133,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter,
s32 f_do_rx_aggr = 0;
s32 f_do_rx_cur = 0;
s32 f_aggr_cur = 0;
s32 f_post_aggr_cur = 0;
struct sk_buff *skb_deaggr;
u32 pind;
u32 pkt_len, pkt_type, mport;
Expand Down Expand Up @@ -1169,7 +1170,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter,
} else {
/* No room in Aggr buf, do rx aggr now */
f_do_rx_aggr = 1;
f_do_rx_cur = 1;
f_post_aggr_cur = 1;
}
} else {
/* Rx aggr not in progress */
Expand Down Expand Up @@ -1280,9 +1281,13 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter,

mwifiex_decode_rx_packet(adapter, skb, pkt_type);
}
if (f_post_aggr_cur) {
dev_dbg(adapter->dev, "info: current packet aggregation\n");
/* Curr pkt can be aggregated */
mp_rx_aggr_setup(card, skb, port);
}

return 0;

error:
if (MP_RX_AGGR_IN_PROGRESS(card)) {
/* Multiport-aggregation transfer failed - cleanup */
Expand Down

0 comments on commit 2c11ab9

Please sign in to comment.