1. 11 3月, 2012 8 次提交
  2. 07 3月, 2012 1 次提交
    • F
      r8169: runtime resume before shutdown. · 2a15cd2f
      françois romieu 提交于
      With runtime PM, if the ethernet cable is disconnected, the device is
      transitioned to D3 state to conserve energy. If the system is shutdown
      in this state, any register accesses in rtl_shutdown are dropped on
      the floor. As the device was programmed by .runtime_suspend() to wake
      on link changes, it is thus brought back up as soon as the link recovers.
      
      Resuming every suspended device through the driver core would slow things
      down and it is not clear how many devices really need it now.
      
      Original report and D0 transition patch by Sameer Nanda. Patch has been
      changed to comply with advices by Rafael J. Wysocki and the PM folks.
      Reported-by: NSameer Nanda <snanda@chromium.org>
      Signed-off-by: NFrancois Romieu <romieu@fr.zoreil.com>
      Cc: Rafael J. Wysocki <rjw@sisk.pl>
      Cc: Hayes Wang <hayeswang@realtek.com>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Acked-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2a15cd2f
  3. 06 3月, 2012 2 次提交
  4. 03 3月, 2012 1 次提交
  5. 24 2月, 2012 2 次提交
  6. 01 2月, 2012 1 次提交
  7. 31 1月, 2012 5 次提交
  8. 28 1月, 2012 2 次提交
    • F
      r8169: remove work from irq handler. · da78dbff
      Francois Romieu 提交于
      The irq handler was a mess.
      
      See 7ab87ff4 ("via-rhine: move work from
      irq handler to softirq and beyond") for similar changes. One can notice:
      - all non-napi tasks are explicitely scheduled trough a single work queue.
      - hiding software tx queue start behind the rtl_hw_start method is mildly
        natural. Move it in the caller where needed.
      - as can be seen from the heavy use of bh disabling locks, the driver is
        not safe for irq context messages with netconsole. It is still quite
        usable for general messaging though. Tested ok with concurrent registers
        dump (ethtool -d) + background traffic + "echo t > /proc/sysrq-trigger".
      
      Tested with old PCI chipset, PCIe 8168 and 810x:
      - XID 0c900800 RTL8168evl/8111evl
      - XID 18000000 RTL8168b/8111b
      - XID 98000000 RTL8169sc/8110sc
      - XID 083000c0 RTL8168d/8111d
      - XID 081000c0 RTL8168d/8111d
      - XID 00b00000 RTL8105e
      - XID 04a00000 RTL8102e
      
      As a side note, the comments in f11a377b
      ("r8169: avoid losing MSI interrupts") does not seem completely clear: if
      I hack the driver further to stop acking the irq link event bit, MSI
      interrupts keep being delivered (RTL8168b/8111b, XID 18000000).
      Signed-off-by: NFrancois Romieu <romieu@fr.zoreil.com>
      Cc: Hayes Wang <hayeswang@realtek.com>
      da78dbff
    • F
      r8169: missing barriers. · 1e874e04
      Francois Romieu 提交于
      Signed-off-by: NFrancois Romieu <romieu@fr.zoreil.com>
      Cc: Hayes Wang <hayeswang@realtek.com>
      1e874e04
  9. 27 1月, 2012 5 次提交
  10. 20 12月, 2011 1 次提交
  11. 06 12月, 2011 2 次提交
    • F
      r8169: fix Rx index race between FIFO overflow recovery and NAPI handler. · c7c2c39b
      françois romieu 提交于
      Since 92fc43b4, 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: NFrancois Romieu <romieu@fr.zoreil.com>
      Cc: hayeswang <hayeswang@realtek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c7c2c39b
    • F
      r8169: Rx FIFO overflow fixes. · 811fd301
      françois romieu 提交于
      Realtek has specified that the post 8168c gigabit chips and the post
      8105e fast ethernet chips recover automatically from a Rx FIFO overflow.
      The driver does not need to clear the RxFIFOOver bit of IntrStatus and
      it should rather avoid messing it.
      
      The implementation deserves some explanation:
      1. events outside of the intr_event bit mask are now ignored. It enforces
         a no-processing policy for the events that either should not be there
         or should be ignored.
      
      2. RxFIFOOver was already ignored in rtl_cfg_infos[RTL_CFG_1] for the
         whole 8168 line of chips with two exceptions:
         - RTL_GIGA_MAC_VER_22 since b5ba6d12
           ("use RxFIFO overflow workaround for 8168c chipset.").
           This one should now be correctly handled.
         - RTL_GIGA_MAC_VER_11 (8168b) which requires a different Rx FIFO
           overflow processing.
      
         Though it does not conform to Realtek suggestion above, the updated
         driver includes no change for RTL_GIGA_MAC_VER_12 and RTL_GIGA_MAC_VER_17.
         Both are 8168b. RTL_GIGA_MAC_VER_12 is common and a bit old so I'd rather
         wait for experimental evidence that the change suggested by Realtek really
         helps or does not hurt in unexpected ways.
      
         Removed case statements in rtl8169_interrupt are only 8168 relevant.
      
      3. RxFIFOOver is masked for post 8105e 810x chips, namely the sole 8105e
         (RTL_GIGA_MAC_VER_30) itself.
      Signed-off-by: NFrancois Romieu <romieu@fr.zoreil.com>
      Cc: hayeswang <hayeswang@realtek.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      811fd301
  12. 29 11月, 2011 1 次提交
  13. 17 11月, 2011 2 次提交
  14. 09 11月, 2011 2 次提交
  15. 19 10月, 2011 1 次提交
  16. 22 9月, 2011 4 次提交