1. 23 4月, 2013 2 次提交
  2. 20 4月, 2013 3 次提交
  3. 18 3月, 2013 1 次提交
  4. 15 3月, 2013 3 次提交
  5. 08 3月, 2013 1 次提交
  6. 07 3月, 2013 1 次提交
  7. 05 2月, 2013 1 次提交
  8. 30 1月, 2013 1 次提交
  9. 13 1月, 2013 1 次提交
    • S
      be2net: fix unconditionally returning IRQ_HANDLED in INTx · d0b9cec3
      Sathya Perla 提交于
      commit e49cc34f introduced an unconditional IRQ_HANDLED return in be_intx()
      to workaround Lancer and BE2 HW issues. This is bad as it prevents the kernel
      from detecting interrupt storms due to broken HW.
      
      The BE2/Lancer HW issues are:
      1) In Lancer, there is no means for the driver to detect if the interrupt
      belonged to device, other than counting and notifying events.
      2) In Lancer de-asserting INTx takes a while, causing the INTx irq handler
      to be called multiple times till the de-assert happens.
      3) In BE2, we see an occasional interrupt even when EQs are unarmed.
      
      Issue (1) can cause the notified events to be orphaned, if NAPI was already
      running.
      This patch fixes this issue by scheduling NAPI only if it is not scheduled
      already. Doing this also takes care of possible events_get() race that may be
      caused due to issue (2) and (3). Also, IRQ_HANDLED is returned only the first
      time zero events are detected.
      (Thanks Ben H. for the feedback and suggestions.)
      Signed-off-by: NSathya Perla <sathya.perla@emulex.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d0b9cec3
  10. 19 12月, 2012 2 次提交
    • S
      be2net: fix wrong frag_idx reported by RX CQ · d23e946c
      Sathya Perla 提交于
      The RX CQ can report completions with invalid frag_idx when the RXQ that
      was *previously* using it, was not cleaned up properly. This hits
      a BUG_ON() in be2net.
      
      When completion coalescing is enabled on a CQ, an explicit CQ-notify
      (with rearm) is needed for each compl, to flush partially coalesced CQ
      entries that are pending DMA.
      
      In be_close(), this fix now notifies CQ for each compl, waits explicitly
      for the flush compl to arrive and complains if it doesn't arrive.
      
      Also renaming be_crit_error() to be_hw_error() as it's the more
      appropriate name and to convey that we don't wait for the flush compl
      only when a HW error has occurred.
      Signed-off-by: NSathya Perla <sathya.perla@emulex.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d23e946c
    • S
      be2net: fix be_close() to ensure all events are ack'ed · a323d9bf
      Sathya Perla 提交于
      In be_close(), be_eq_clean() must be called after all RX/TX/MCC queues
      have been cleaned to ensure that any events caused while cleaning up
      completions are notified/acked. Not clearing all events can cause
      upredictable behaviour when RX rings are re-created in the subsequent
      be_open().
      Signed-off-by: NSathya Perla <sathya.perla@emulex.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a323d9bf
  11. 08 12月, 2012 1 次提交
  12. 04 12月, 2012 1 次提交
  13. 29 11月, 2012 1 次提交
  14. 24 11月, 2012 1 次提交
    • S
      be2net: fix a possible events_get() race on BE2 · 0b545a62
      Sathya Perla 提交于
      On BE2 chip, an interrupt being raised even when EQ is in un-armed state has
      been observed a few times.  This is not expected and has never been
      observed on BE3/Lancer chips.
      
      As a consequence, be_msix()::events_get() and be_poll()::events_get()
      can race and notify an EQ wrongly causing a CEV UE. The other possible
      side-effect would be traffic stalling because after notifying EQ,
      napi_schedule() is ignored as NAPI is already running.
      
      This patch fixes this issue by counting events only in be_poll().
      Signed-off-by: NSathya Perla <sathya.perla@emulex.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0b545a62
  15. 08 11月, 2012 7 次提交
  16. 24 10月, 2012 1 次提交
  17. 22 10月, 2012 11 次提交
  18. 10 10月, 2012 1 次提交