lkml.org 
[lkml]   [2015]   [Mar]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.19 033/175] rtlwifi: rtl8192ee: Fix problems with calculating free space in FIFO
    Date
    3.19-stable review patch.  If anyone has any objections, please let me know.

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

    From: Larry Finger <Larry.Finger@lwfinger.net>

    commit 6d4beca3775222884e1ee9d48ef586c438c3dfa1 upstream.

    This driver utilizes a FIFO buffer for RX descriptors. There are four places
    in the code where it calculates the number of free slots. Several of those
    locations do the calculation incorrectly. To fix these and to prevent future
    mistakes, a common inline routine is created.

    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/wireless/rtlwifi/pci.h | 7 +++++++
    drivers/net/wireless/rtlwifi/rtl8192ee/trx.c | 9 +--------
    2 files changed, 8 insertions(+), 8 deletions(-)

    --- a/drivers/net/wireless/rtlwifi/pci.h
    +++ b/drivers/net/wireless/rtlwifi/pci.h
    @@ -325,4 +325,11 @@ static inline void pci_write32_async(str
    writel(val, (u8 __iomem *) rtlpriv->io.pci_mem_start + addr);
    }

    +static inline u16 calc_fifo_space(u16 rp, u16 wp)
    +{
    + if (rp <= wp)
    + return RTL_PCI_MAX_RX_COUNT - 1 + rp - wp;
    + return rp - wp - 1;
    +}
    +
    #endif
    --- a/drivers/net/wireless/rtlwifi/rtl8192ee/trx.c
    +++ b/drivers/net/wireless/rtlwifi/rtl8192ee/trx.c
    @@ -658,14 +658,7 @@ u16 rtl92ee_rx_desc_buff_remained_cnt(st
    if (!start_rx)
    return 0;

    - if ((last_read_point > (RX_DESC_NUM_92E / 2)) &&
    - (read_point <= (RX_DESC_NUM_92E / 2))) {
    - remind_cnt = RX_DESC_NUM_92E - write_point;
    - } else {
    - remind_cnt = (read_point >= write_point) ?
    - (read_point - write_point) :
    - (RX_DESC_NUM_92E - write_point + read_point);
    - }
    + remind_cnt = calc_fifo_space(read_point, write_point);

    if (remind_cnt == 0)
    return 0;



    \
     
     \ /
      Last update: 2015-03-04 08:41    [W:7.319 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site