diff mbox

[RFC] mwifiex: handle command response in aggregation

Message ID 20150123071619.GA31644@us.netrek.org (mailing list archive)
State RFC
Delegated to: Kalle Valo
Headers show

Commit Message

James Cameron Jan. 23, 2015, 7:16 a.m. UTC
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(-)

Comments

Amitkumar Karwar Feb. 3, 2015, 8:59 a.m. UTC | #1
Hi James,

>From: quozl@laptop.org [mailto:quozl@laptop.org]
>Sent: 23 January 2015 12:46
>To: Amitkumar Karwar; Avinash Patil
>Cc: linux-wireless@vger.kernel.org
>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(-)
>
>diff --git a/drivers/net/wireless/mwifiex/sdio.c
>b/drivers/net/wireless/mwifiex/sdio.c
>index 933dae1..8fe6147 100644
>--- a/drivers/net/wireless/mwifiex/sdio.c
>+++ b/drivers/net/wireless/mwifiex/sdio.c
>@@ -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]);
>--
>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
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/wireless/mwifiex/sdio.c b/drivers/net/wireless/mwifiex/sdio.c
index 933dae1..8fe6147 100644
--- a/drivers/net/wireless/mwifiex/sdio.c
+++ b/drivers/net/wireless/mwifiex/sdio.c
@@ -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]);