1. 15 11月, 2012 1 次提交
  2. 07 11月, 2012 2 次提交
  3. 03 10月, 2012 1 次提交
    • M
      tg3: Fix sparse warnings. · 86449944
      Michael Chan 提交于
      drivers/net/ethernet/broadcom/tg3.c:8121:8: warning: symbol 'i' shadows an earlier one
      drivers/net/ethernet/broadcom/tg3.c:8003:6: originally declared here
      drivers/net/ethernet/broadcom/tg3.c:785:5: warning: symbol 'tg3_ape_scratchpad_read' was not declared. Should it be static?
      drivers/net/ethernet/broadcom/tg3.c:7781:19: warning: Using plain integer as NULL pointer
      drivers/net/ethernet/broadcom/tg3.c:10231:31: error: bad constant expression
      Reported-by: NFengguang Wu <fenguang.wu@intel.com>
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      86449944
  4. 02 10月, 2012 1 次提交
  5. 30 9月, 2012 7 次提交
  6. 08 9月, 2012 1 次提交
  7. 24 8月, 2012 1 次提交
  8. 30 7月, 2012 5 次提交
  9. 17 7月, 2012 4 次提交
  10. 13 7月, 2012 1 次提交
  11. 05 7月, 2012 1 次提交
  12. 14 6月, 2012 1 次提交
  13. 12 6月, 2012 1 次提交
  14. 19 5月, 2012 1 次提交
  15. 01 5月, 2012 2 次提交
    • E
      tg3: provide frags as skb head · 8d4057a9
      Eric Dumazet 提交于
      This patch converts tg3 driver, one of our reference drivers, to use new
      build_skb() api in frag mode.
      
      Instead of using kmalloc() to allocate the memory block that will be
      used by build_skb() as skb->head, we use a page fragment.
      
      This is a followup of patch "net: allow skb->head to be a page fragment"
      
      This allows GRO, TCP coalescing, and splice() to be more efficient.
      
      Incidentally, this also removes SLUB slow path contention in kfree()
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: Maciej Żenczykowski <maze@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      Cc: Ben Hutchings <bhutchings@solarflare.com>
      Cc: Matt Carlson <mcarlson@broadcom.com>
      Cc: Michael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8d4057a9
    • E
      net: allow skb->head to be a page fragment · d3836f21
      Eric Dumazet 提交于
      skb->head is currently allocated from kmalloc(). This is convenient but
      has the drawback the data cannot be converted to a page fragment if
      needed.
      
      We have three spots were it hurts :
      
      1) GRO aggregation
      
       When a linear skb must be appended to another skb, GRO uses the
      frag_list fallback, very inefficient since we keep all struct sk_buff
      around. So drivers enabling GRO but delivering linear skbs to network
      stack aren't enabling full GRO power.
      
      2) splice(socket -> pipe).
      
       We must copy the linear part to a page fragment.
       This kind of defeats splice() purpose (zero copy claim)
      
      3) TCP coalescing.
      
       Recently introduced, this permits to group several contiguous segments
      into a single skb. This shortens queue lengths and save kernel memory,
      and greatly reduce probabilities of TCP collapses. This coalescing
      doesnt work on linear skbs (or we would need to copy data, this would be
      too slow)
      
      Given all these issues, the following patch introduces the possibility
      of having skb->head be a fragment in itself. We use a new skb flag,
      skb->head_frag to carry this information.
      
      build_skb() is changed to accept a frag_size argument. Drivers willing
      to provide a page fragment instead of kmalloc() data will set a non zero
      value, set to the fragment size.
      
      Then, on situations we need to convert the skb head to a frag in itself,
      we can check if skb->head_frag is set and avoid the copies or various
      fallbacks we have.
      
      This means drivers currently using frags could be updated to avoid the
      current skb->head allocation and reduce their memory footprint (aka skb
      truesize). (thats 512 or 1024 bytes saved per skb). This also makes
      bpf/netfilter faster since the 'first frag' will be part of skb linear
      part, no need to copy data.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: Maciej Żenczykowski <maze@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      Cc: Ben Hutchings <bhutchings@solarflare.com>
      Cc: Matt Carlson <mcarlson@broadcom.com>
      Cc: Michael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d3836f21
  16. 30 4月, 2012 1 次提交
  17. 26 4月, 2012 1 次提交
  18. 04 4月, 2012 1 次提交
  19. 03 4月, 2012 1 次提交
  20. 29 3月, 2012 1 次提交
  21. 22 3月, 2012 1 次提交
    • M
      tg3: Fix RSS ring refill race condition · 7ae52890
      Michael Chan 提交于
      The RSS feature in tg3 hardware has only one rx producer ring for all
      RSS rings.  NAPI vector 1 is special and handles the refilling of the
      rx producer ring on behalf of all RSS rings.  There is a race condition
      between these RSS NAPIs and the NAPI[1].  If NAPI[1] finishes checking
      for refill and then another RSS ring empties the rx producer ring
      before NAPI[1] exits NAPI, the chip will be completely out of SKBs in
      the rx producer ring.
      
      We fix this by adding a flag tp->rx_refill and rely on napi_schedule()/
      napi_complete() to help synchronize it to close the race condition.
      
      Update driver version to 3.123.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7ae52890
  22. 06 3月, 2012 1 次提交
  23. 05 3月, 2012 3 次提交