Skip to contentSkip to conversation

mwifiex: handle command response in aggregation

RFC PATCH In review James Cameron 2 participants 2 messages Jan 23, 2015 – Feb 3, 2015 Networking drivers (wireless)

lore
Share & tools
lore
#0 lore raw

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
index 933dae1..8fe6147 100644
@@ -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/
#1 lore raw

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 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
index 933dae1..8fe6147 100644
@@ -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