lkml.org 
[lkml]   [2014]   [Jul]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.4 19/23] mwifiex: fix Tx timeout issue
    Date
    3.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Amitkumar Karwar <akarwar@marvell.com>

    commit d76744a93246eccdca1106037e8ee29debf48277 upstream.

    https://bugzilla.kernel.org/show_bug.cgi?id=70191
    https://bugzilla.kernel.org/show_bug.cgi?id=77581

    It is observed that sometimes Tx packet is downloaded without
    adding driver's txpd header. This results in firmware parsing
    garbage data as packet length. Sometimes firmware is unable
    to read the packet if length comes out as invalid. This stops
    further traffic and timeout occurs.

    The root cause is uninitialized fields in tx_info(skb->cb) of
    packet used to get garbage values. In this case if
    MWIFIEX_BUF_FLAG_REQUEUED_PKT flag is mistakenly set, txpd
    header was skipped. This patch makes sure that tx_info is
    correctly initialized to fix the problem.

    Reported-by: Andrew Wiley <wiley.andrew.j@gmail.com>
    Reported-by: Linus Gasser <list@markas-al-nour.org>
    Reported-by: Michael Hirsch <hirsch@teufel.de>
    Tested-by: Xinming Hu <huxm@marvell.com>
    Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
    Signed-off-by: Maithili Hinge <maithili@marvell.com>
    Signed-off-by: Avinash Patil <patila@marvell.com>
    Signed-off-by: Bing Zhao <bzhao@marvell.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/wireless/mwifiex/main.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/drivers/net/wireless/mwifiex/main.c
    +++ b/drivers/net/wireless/mwifiex/main.c
    @@ -457,6 +457,7 @@ mwifiex_hard_start_xmit(struct sk_buff *
    }

    tx_info = MWIFIEX_SKB_TXCB(skb);
    + memset(tx_info, 0, sizeof(*tx_info));
    tx_info->bss_num = priv->bss_num;
    tx_info->bss_type = priv->bss_type;
    mwifiex_fill_buffer(skb);



    \
     
     \ /
      Last update: 2014-07-27 00:21    [W:4.232 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site