lkml.org 
[lkml]   [2011]   [Dec]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH 2/2] r8169: fix Rx index race between FIFO overflow recovery and NAPI handler.
From
From: Francois Romieu <romieu@fr.zoreil.com>
Date: Mon, 5 Dec 2011 07:30:52 +0100

> Since 92fc43b4159b518f5baae57301f26d770b0834c9, rtl8169_tx_timeout ends up
> resetting Rx and Tx indexes and thus racing with the NAPI handler via
> -> rtl8169_hw_reset
> -> rtl_hw_reset
> -> rtl8169_init_ring_indexes
>
> What about returning to the original state ?
>
> rtl_hw_reset is only used by rtl8169_hw_reset and rtl8169_init_one.
>
> The latter does not need rtl8169_init_ring_indexes because the indexes
> still contain their original values from the newly allocated network
> device private data area (i.e. 0).
>
> rtl8169_hw_reset is used by:
> 1. rtl8169_down
> Helper for rtl8169_close. rtl8169_open explicitely inits the indexes
> anyway.
> 2. rtl8169_pcierr_interrupt
> Indexes are set by rtl8169_reinit_task.
> 3. rtl8169_interrupt
> rtl8169_hw_reset is needed when the device goes down. See 1.
> 4. rtl_shutdown
> System shutdown handler. Indexes are irrelevant.
> 5. rtl8169_reset_task
> Indexes must be set before rtl_hw_start is called.
> 6. rtl8169_tx_timeout
> Indexes should not be set. This is the job of rtl8169_reset_task anyway.
>
> The removal of rtl8169_hw_reset in rtl8169_tx_timeout and its move in
> rtl8169_reset_task do not change the analysis.
>
> Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
> Cc: hayeswang <hayeswang@realtek.com>

Applied.


\
 
 \ /
  Last update: 2011-12-06 00:49    [W:0.158 / U:1.644 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site