1. 15 6月, 2016 4 次提交
  2. 16 5月, 2016 3 次提交
  3. 12 5月, 2016 2 次提交
    • M
      bnxt_en: Add workaround to detect bad opaque in rx completion (part 2) · fa7e2812
      Michael Chan 提交于
      Add detection and recovery code when the hardware returned opaque value
      does not match the expected consumer index.  Once the issue is detected,
      we skip the processing of all RX and LRO/GRO packets.  These completion
      entries are discarded without sending the SKB to the stack and without
      producing new buffers.  The function will be reset from a workqueue.
      Signed-off-by: NMichael Chan <michael.chan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fa7e2812
    • M
      bnxt_en: Add workaround to detect bad opaque in rx completion (part 1) · 376a5b86
      Michael Chan 提交于
      There is a rare hardware bug that can cause a bad opaque value in the RX
      or TPA completion.  When this happens, the hardware may have used the
      same buffer twice for 2 rx packets.  In addition, the driver will also
      crash later using the bad opaque as the index into the ring.
      
      The rx opaque value is predictable and is always monotonically increasing.
      The workaround is to keep track of the expected next opaque value and
      compare it with the one returned by hardware during RX and TPA start
      completions.  If they miscompare, we will not process any more RX and
      TPA completions and exit NAPI.  We will then schedule a workqueue to
      reset the function.
      
      This patch adds the logic to keep track of the next rx consumer index.
      Signed-off-by: NMichael Chan <michael.chan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      376a5b86
  4. 28 4月, 2016 2 次提交
  5. 12 4月, 2016 1 次提交
  6. 06 4月, 2016 4 次提交
  7. 31 3月, 2016 1 次提交
  8. 09 3月, 2016 3 次提交
  9. 02 3月, 2016 6 次提交
  10. 17 2月, 2016 2 次提交
  11. 05 1月, 2016 3 次提交
    • M
      bnxt_en: Modify bnxt_get_max_rings() to support shared or non shared rings. · 6e6c5a57
      Michael Chan 提交于
      Add logic to calculate how many shared or non shared rings can be
      supported.  Default is to use shared rings.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6e6c5a57
    • M
      bnxt_en: Re-structure ring indexing and mapping. · b81a90d3
      Michael Chan 提交于
      In order to support dedicated or shared completion rings, the ring
      indexing and mapping are re-structured as below:
      
      1. bp->grp_info[] array index is 1:1 with bp->bnapi[] array index and
      completion ring index.
      
      2. rx rings 0 to n will be mapped to completion rings 0 to n.
      
      3. If tx and rx rings share completion rings, then tx rings 0 to m will
      be mapped to completion rings 0 to m.
      
      4. If tx and rx rings use dedicated completion rings, then tx rings 0 to
      m will be mapped to completion rings n + 1 to n + m.
      
      5. Each tx or rx ring will use the corresponding completion ring index
      for doorbell mapping and MSIX mapping.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b81a90d3
    • M
      bnxt_en: Separate bnxt_{rx|tx}_ring_info structs from bnxt_napi struct. · b6ab4b01
      Michael Chan 提交于
      Currently, an rx and a tx ring are always paired with a completion ring.
      We want to restructure it so that it is possible to have a dedicated
      completion ring for tx or rx only.
      
      The bnxt hardware uses a completion ring for rx and tx events.  The driver
      has to process the completion ring entries sequentially for the rx and tx
      events.  Using a dedicated completion ring for rx only or tx only has these
      benefits:
      
      1. A burst of rx packets can cause delay in processing tx events if the
      completion ring is shared.  If tx queue is stopped by BQL, this can cause
      delay in re-starting the tx queue.
      
      2. A completion ring is sized according to the rx and tx ring size rounded
      up to the nearest power of 2.  When the completion ring is shared, it is
      sized by adding the rx and tx ring sizes and then rounded to the next power
      of 2, often with a lot of wasted space.
      
      3. Using dedicated completion ring, we can adjust the tx and rx coalescing
      parameters independently for rx and tx.
      
      The first step is to separate the rx and tx ring structures from the
      bnxt_napi struct.
      
      In this patch, an rx ring and a tx ring will point to the same bnxt_napi
      struct to share the same completion ring.  No change in ring assignment
      and mapping yet.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b6ab4b01
  12. 28 12月, 2015 3 次提交
  13. 12 12月, 2015 2 次提交
  14. 06 11月, 2015 3 次提交
  15. 26 10月, 2015 1 次提交