1. 09 Dec, 2011 1 commit
  2. 30 Nov, 2011 1 commit
  3. 16 Nov, 2011 1 commit
  4. 14 Nov, 2011 1 commit
    • Eric Dumazet's avatar
      bnx2x: uses build_skb() in receive path · e52fcb24
      Eric Dumazet authored
      bnx2x uses following formula to compute its rx_buf_sz :
      
      dev->mtu + 2*L1_CACHE_BYTES + 14 + 8 + 8 + 2
      
      Then core network adds NET_SKB_PAD and SKB_DATA_ALIGN(sizeof(struct
      skb_shared_info))
      
      Final allocated size for skb head on x86_64 (L1_CACHE_BYTES = 64,
      MTU=1500) : 2112 bytes : SLUB/SLAB round this to 4096 bytes.
      
      Since skb truesize is then bigger than SK_MEM_QUANTUM, we have lot of
      false sharing because of mem_reclaim in UDP stack.
      
      One possible way to half truesize is to reduce the need by 64 bytes
      (2112 -> 2048 bytes)
      
      Instead of allocating a full cache line at the end of packet for
      alignment, we can use the fact that skb_shared_info sits at the end of
      skb->head, and we can use this room, if we convert bnx2x to new
      build_skb() infrastructure.
      
      skb_shared_info will be initialized after hardware finished its
      transfert, so we can eventually overwrite the final padding.
      
      Using build_skb() also reduces cache line misses in the driver, since we
      use cache hot skb instead of cold ones. Number of in-flight sk_buff
      structures is lower, they are recycled while still hot.
      
      Performance results :
      
      (820.000 pps on a rx UDP monothread benchmark, instead of 720.000 pps)
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      CC: Eilon Greenstein <eilong@broadcom.com>
      CC: Ben Hutchings <bhutchings@solarflare.com>
      CC: Tom Herbert <therbert@google.com>
      CC: Jamal Hadi Salim <hadi@mojatatu.com>
      CC: Stephen Hemminger <shemminger@vyatta.com>
      CC: Thomas Graf <tgraf@infradead.org>
      CC: Herbert Xu <herbert@gondor.apana.org.au>
      CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      Acked-by: default avatarEilon Greenstein <eilong@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e52fcb24
  5. 13 Nov, 2011 4 commits
  6. 30 Aug, 2011 1 commit
  7. 19 Aug, 2011 1 commit
  8. 17 Aug, 2011 1 commit
  9. 11 Aug, 2011 1 commit
    • Jeff Kirsher's avatar
      broadcom: Move the Broadcom drivers · adfc5217
      Jeff Kirsher authored
      Moves the drivers for Broadcom devices into
      drivers/net/ethernet/broadcom/ and the necessary Kconfig and Makefile
      changes.
      
      CC: Eilon Greenstein <eilong@broadcom.com>
      CC: Michael Chan <mchan@broadcom.com>
      CC: Matt Carlson <mcarlson@broadcom.com>
      CC: Gary Zambrano <zambrano@broadcom.com>
      CC: "Maciej W. Rozycki" <macro@linux-mips.org>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      adfc5217
  10. 21 Jul, 2011 1 commit
  11. 19 Jul, 2011 1 commit
  12. 14 Jul, 2011 1 commit
    • Ariel Elior's avatar
      bnx2x: Multiple concurrent l2 traffic classes · 6383c0b3
      Ariel Elior authored
      Overview:
       Support mapping of priorities to traffic classes and
       traffic classes to transmission queues ranges in the net device.
       The queue ranges are (count, offset) pairs relating to the txq
       array.
       This can be done via DCBX negotiation or by kernel.
       As a result Enhanced Transmission Selection (ETS) and Priority Flow
       Control (PFC) are supported between L2 network traffic classes.
      
       Mapping:
       This patch uses the netdev_set_num_tc, netdev_set_prio_tc_map and
       netdev_set_tc_queue functions to map priorities to traffic classes
       and traffic classes to transmission queue ranges.
       This mapping is performed by bnx2x_setup_tc function which is
       connected to the ndo_setup_tc.
       This function is always called at nic load where by default it
       maps all priorities to tc 0, and it may also be called by the
       kernel or by the bnx2x upon DCBX negotiation to modify the mapping.
      
       rtnl lock:
       When the ndo_setup_tc is called at nic load or by kernel the rtnl
       lock is already taken. However, when DCBX negotiation takes place
       the lock is not taken. The work is therefore scheduled to be
       handled by the sp_rtnl task.
      
       Fastpath:
       The fastpath structure of the bnx2x which was previously used
       to hold the information of one tx queue and one rx queue was
       redesigned to represent multiple tx queues, one for each traffic
       class.
       The transmission queue supplied in the skb by the kernel can no
       longer be interpreted as a straightforward index into the fastpath
       structure array, but it must rather be decoded to the appropriate
       fastpath index and the tc within that fastpath.
      
       Slowpath:
       The bnx2x's queue object was redesigned to accommodate multiple
       transmission queues. The queue object's state machine was enhanced
       to allow opening multiple transmission-only connections on top of
       the regular tx-rx connection.
      
       Firmware:
       This feature relies on the tx-only queue feature introduced in the
       bnx2x 7.0.23 firmware and the FW likewise must have the bnx2x multi
       cos support.
      Signed-off-by: default avatarAriel Elior <ariele@broadcom.com>
      Signed-off-by: default avatarEilon Greenstein <eilong@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6383c0b3
  13. 15 Jun, 2011 5 commits
  14. 01 Jun, 2011 1 commit
  15. 23 May, 2011 1 commit
  16. 05 May, 2011 4 commits
  17. 12 Apr, 2011 1 commit
    • Michał Mirosław's avatar
      net: bnx2x: convert to hw_features · 66371c44
      Michał Mirosław authored
      Since ndo_fix_features callback is postponing features change when
      bp->recovery_state != BNX2X_RECOVERY_DONE, netdev_update_features()
      has to be called again when this condition changes. Previously,
      ethtool_ops->set_flags callback returned -EBUSY in that case
      (it's not possible in the new model).
      Signed-off-by: default avatarMichał Mirosław <mirq-linux@rere.qmqm.pl>
      
      v5: - don't delay set_features, as it's rtnl_locked - same as recovery process
      v4: - complete bp->rx_csum -> NETIF_F_RXCSUM conversion
          - add check for failed ndo_set_features in ndo_open callback
      v3: - include NETIF_F_LRO in hw_features
          - don't call netdev_update_features() if bnx2x_nic_load() failed
      v2: - comment in ndo_fix_features callback
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      66371c44
  18. 01 Apr, 2011 1 commit
  19. 07 Mar, 2011 1 commit
  20. 28 Feb, 2011 1 commit
  21. 06 Feb, 2011 1 commit
  22. 16 Dec, 2010 3 commits
  23. 01 Dec, 2010 1 commit
    • Dmitry Kravkov's avatar
      bnx2x: Add Nic partitioning mode (57712 devices) · 0793f83f
      Dmitry Kravkov authored
      NIC partitioning is another flavor of multi function - having few
      PCI functions share the same physical port. Unlike the currently
      supported mode of multi-function which depends on the switch
      configuration and uses outer-VLAN, the NPAR mode is switch independent
      and uses the MAC addresses to distribute incoming packets to the different
      functions. This patch adds the specific HW setting of the NPAR mode
      and some distinctions between switch dependent (SD) and
      switch independent (SI) multi-function (MF) modes where the configuration
      is not the same.
      
      Advance driver version to 1.60.00-6
      Signed-off-by: default avatarDmitry Kravkov <dmitry@broadcom.com>
      Signed-off-by: default avatarEilon Greenstein <eilong@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0793f83f
  24. 24 Oct, 2010 1 commit
  25. 18 Oct, 2010 1 commit
  26. 06 Oct, 2010 3 commits