mwifiex: handle command response in aggregation
RFC PATCH 1/1 mwifiex: handle command response in aggregation
Firmware does occasionally pass a command response to the host on the data port. Ensure it is processed.
http://dev.laptop.org/ticket/12749
---
Seen on device firmwares:
14.66.9.p96 14.66.35.p52
Others not tested.
drivers/net/wireless/mwifiex/sdio.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
drivers/net/wireless/mwifiex/sdio.c +2 -3
@@ -1240,8 +1240,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter,/* copy pkt to deaggr buf */ skb_deaggr = card->mpa_rx.skb_arr[pind]; -if ((pkt_type ==MWIFIEX_TYPE_DATA ) && (pkt_len <= - card->mpa_rx.len_arr[pind])) { +if (pkt_len <= card->mpa_rx.len_arr[pind]) {memcpy (skb_deaggr->data, curr_ptr, pkt_len);
@@ -1251,7 +1250,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter,mwifiex_decode_rx_packet (adapter, skb_deaggr, pkt_type); }else { -dev_err (adapter->dev,"wrong aggr pkt:" +dev_err (adapter->dev,"bad aggr pkt:" " type=%d len=%d max_len=%d\n" , pkt_type, pkt_len, card->mpa_rx.len_arr[pind]);
Signature · 6 lines
1.9.1 -- James Cameron http://quozl.linux.org.au/
Hi James,
Quoted 47 lines
From: [email protected] [mailto:[email protected]]
Sent: 23 January 2015 12:46
To: Amitkumar Karwar; Avinash Patil
Cc: [email protected]
Subject: [RFC PATCH] mwifiex: handle command response in aggregationFirmware does occasionally pass a command response to the host on the data port. Ensure it is processed.
http://dev.laptop.org/ticket/12749
---
Seen on device firmwares:14.66.9.p96 14.66.35.p52Others not tested.
drivers/net/wireless/mwifiex/sdio.c| 5 ++---1 file changed, 2 insertions(+), 3 deletions(-)drivers/net/wireless/mwifiex/sdio.c +2
-3@@ -1240,8 +1240,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter,/* copy pkt to deaggr buf */ skb_deaggr = card->mpa_rx.skb_arr[pind]; -if ((pkt_type ==MWIFIEX_TYPE_DATA ) && (pkt_len <= - card->mpa_rx.len_arr[pind])) { +if (pkt_len <= card->mpa_rx.len_arr[pind]) {memcpy (skb_deaggr->data, curr_ptr, pkt_len);@@ -1251,7 +1250,7 @@ static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter,mwifiex_decode_rx_packet (adapter, skb_deaggr, pkt_type); }else { - dev_err(adapter->dev, "wrong aggr pkt:" + dev_err(adapter->dev, "bad aggr pkt:" " type=%d len=%d max_len=%d\n", pkt_type, pkt_len,card->mpa_rx.len_arr[pind]);
Quoted 4 lines
--
1.9.1
We checked with our firmware engineer. There is no possibility of receiving command response on data port. Probably this is a corrupted data received on SDIO. If possible, could you print this data and share log?
Regards,
Amit