The following commit has been merged in the batman-adv/next branch: commit d92a680359ff3230bd1e68ac8f3ac827639f494e Author: Yogesh Ashok Powar yogeshp@marvell.com Date: Fri Aug 3 18:05:59 2012 -0700
mwifiex: copy MSDU subframes correctly
All MSDU subframes, except the first one in AMSDU, were being written wrongly at the location of first MSDU frame. Fixing that by copying the MSDU at skb->tail of AMSDU.
Signed-off-by: Yogesh Ashok Powar yogeshp@marvell.com Signed-off-by: Amitkumar Karwar akarwar@marvell.com Signed-off-by: Kiran Divekar dkiran@marvell.com Signed-off-by: Bing Zhao bzhao@marvell.com Signed-off-by: John W. Linville linville@tuxdriver.com
diff --git a/drivers/net/wireless/mwifiex/11n_aggr.c b/drivers/net/wireless/mwifiex/11n_aggr.c index ab84eb9..c631c7c 100644 --- a/drivers/net/wireless/mwifiex/11n_aggr.c +++ b/drivers/net/wireless/mwifiex/11n_aggr.c @@ -62,9 +62,7 @@ mwifiex_11n_form_amsdu_pkt(struct sk_buff *skb_aggr, }; struct tx_packet_hdr *tx_header;
- skb_put(skb_aggr, sizeof(*tx_header)); - - tx_header = (struct tx_packet_hdr *) skb_aggr->data; + tx_header = (void *)skb_put(skb_aggr, sizeof(*tx_header));
/* Copy DA and SA */ dt_offset = 2 * ETH_ALEN; @@ -82,9 +80,8 @@ mwifiex_11n_form_amsdu_pkt(struct sk_buff *skb_aggr, tx_header->eth803_hdr.h_proto = htons(skb_src->len + LLC_SNAP_LEN);
/* Add payload */ - skb_put(skb_aggr, skb_src->len); - memcpy(skb_aggr->data + sizeof(*tx_header), skb_src->data, - skb_src->len); + memcpy(skb_put(skb_aggr, skb_src->len), skb_src->data, skb_src->len); + *pad = (((skb_src->len + LLC_SNAP_LEN) & 3)) ? (4 - (((skb_src->len + LLC_SNAP_LEN)) & 3)) : 0; skb_put(skb_aggr, *pad);