1. 12 3月, 2011 5 次提交
    • J
      ixgbe: DCB during ifup use correct CEE or IEEE mode · c27931da
      John Fastabend 提交于
      DCB settings are cleared in the hardware across link events
      during ifup ixgbe reprograms the hardware for DCB if it is
      enabled. Now that we have two modes CEE or IEEE we need to
      use the correct set of configuration data.
      
      This patch checks the dcbx_cap bits and then enables the
      device in the correct mode.
      Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: NRoss Brattain <ross.b.brattain@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      c27931da
    • J
      ixgbe: DCB: enable RSS to be used with DCB · 8187cd48
      John Fastabend 提交于
      RSS had previously been disabled when DCB was enabled because
      DCB was single queued per traffic class. Now that DCB implements
      multiple Tx/Rx rings per traffic class enable RSS.
      
      Here RSS hashes across the queues in the traffic class.
      Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: NRoss Brattain <ross.b.brattain.@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      8187cd48
    • J
      ixgbe: enable ndo_tc_setup · 24095aa3
      John Fastabend 提交于
      This patch adds the ndo_tc_setup to ixgbe. By default we set
      the device to use strict priority.
      Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: NRoss Brattain <ross.b.brattain.@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      24095aa3
    • J
      ixgbe: DCB, use multiple Tx rings per traffic class · e5b64635
      John Fastabend 提交于
      This enables multiple {Tx|Rx} rings per traffic class while in DCB
      mode. In order to get this working as expected the tc_to_tx net
      device mapping is configured as well as the prio_tc_map.
      
      skb priorities are mapped across a range of queue pairs to get
      a distribution per traffic class. The maximum number of
      queue pairs used while in DCB mode is capped at 64. The hardware
      max is actually 128 queues but 64 is sufficient for now and
      allocating more seemed a bit excessive. It is easy enough to
      increase the cap later if need be.
      
      To get the 802.1Q priority tags inserted correctly ixgbe was
      previously using the skb queue_mapping field to directly set
      the 802.1Q priority. This no longer works because we have removed
      the 1:1 mapping between queues and traffic class. Each ring
      is aligned with an 802.1Qaz traffic class so here we add an
      extra field to the ring struct to identify the 802.1Q traffic
      class. This uses an extra byte of the ixgbe_ring struct
      fortunately there was a 2byte hole,
      
      struct ixgbe_ring {
              void *                     desc;                 /*     0     8 */
              struct device *            dev;                  /*     8     8 */
              struct net_device *        netdev;               /*    16     8 */
              union {
                      struct ixgbe_tx_buffer * tx_buffer_info; /*           8 */
                      struct ixgbe_rx_buffer * rx_buffer_info; /*           8 */
              };                                               /*    24     8 */
              long unsigned int          state;                /*    32     8 */
              u8                         atr_sample_rate;      /*    40     1 */
              u8                         atr_count;            /*    41     1 */
              u16                        count;                /*    42     2 */
              u16                        rx_buf_len;           /*    44     2 */
              u16                        next_to_use;          /*    46     2 */
              u16                        next_to_clean;        /*    48     2 */
              u8                         queue_index;          /*    50     1 */
              u8                         reg_idx;              /*    51     1 */
              u16                        work_limit;           /*    52     2 */
      
              /* XXX 2 bytes hole, try to pack */
      
              u8 *                       tail;                 /*    56     8 */
              /* --- cacheline 1 boundary (64 bytes) --- */
      
      Now we can set the VLAN priority directly and it will be
      correct. User space can indicate the 802.1Qaz priority
      using the SO_PRIORITY setsocket() option and QOS layer will
      steer the skb to the correct rings. Additionally using
      the multiq qdisc with a queue_mapping action works as
      well.
      Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: NRoss Brattain <ross.b.brattain@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      e5b64635
    • J
      ixgbe: DCB, implement capabilities flags · 3032309b
      John Fastabend 提交于
      This implements dcbnl get and set capabilities ops. The
      devices supported by ixgbe can be configured to run in
      IEEE or CEE modes but not both.
      
      With the DCBX set capabilities bit we add an explicit
      signal that must be used to toggle between these modes.
      This patch adds logic to fail the CEE command set_hw_all()
      which programs the device with a CEE configuration if
      the CEE caps bit is not set. Similarly, IEEE set
      commands will fail if the IEEE caps bit is not set. We
      allow most CEE config set commands to occur because they
      do not touch the hardware until set_hw_all() is called.
      
      The one exception to the above is the {set|get}app routines.
      These must always be protected by caps bits to ensure
      side effects do not corrupt the current configured mode.
      
      By requiring the caps bit to be set correctly we can
      maintain a consistent configuration in the hardware
      for CEE or IEEE modes and prevent partial hardware
      configurations that may occur if user space does
      not send a complete IEEE or CEE configurations.
      
      It is expected that user space will signal a DCBX mode
      before programming device.
      Signed-off-by: NJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: NRoss Brattain <ross.b.brattain@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      3032309b
  2. 08 3月, 2011 2 次提交
  3. 03 3月, 2011 3 次提交
  4. 24 2月, 2011 1 次提交
  5. 17 2月, 2011 1 次提交
  6. 12 2月, 2011 5 次提交
  7. 08 2月, 2011 3 次提交
  8. 14 1月, 2011 1 次提交
    • E
      net: remove dev_txq_stats_fold() · 1ac9ad13
      Eric Dumazet 提交于
      After recent changes, (percpu stats on vlan/tunnels...), we dont need
      anymore per struct netdev_queue tx_bytes/tx_packets/tx_dropped counters.
      
      Only remaining users are ixgbe, sch_teql, gianfar & macvlan :
      
      1) ixgbe can be converted to use existing tx_ring counters.
      
      2) macvlan incremented txq->tx_dropped, it can use the
      dev->stats.tx_dropped counter.
      
      3) sch_teql : almost revert ab35cd4b (Use net_device internal stats)
          Now we have ndo_get_stats64(), use it, even for "unsigned long"
      fields (No need to bring back a struct net_device_stats)
      
      4) gianfar adds a stats structure per tx queue to hold
      tx_bytes/tx_packets
      
      This removes a lockdep warning (and possible lockup) in rndis gadget,
      calling dev_get_stats() from hard IRQ context.
      
      Ref: http://www.spinics.net/lists/netdev/msg149202.htmlReported-by: NNeil Jones <neiljay@gmail.com>
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      CC: Jarek Poplawski <jarkao2@gmail.com>
      CC: Alexander Duyck <alexander.h.duyck@intel.com>
      CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
      CC: Sandeep Gopalpet <sandeep.kumar@freescale.com>
      CC: Michal Nazarewicz <mina86@mina86.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1ac9ad13
  9. 10 1月, 2011 4 次提交
  10. 25 12月, 2010 2 次提交
  11. 12 12月, 2010 1 次提交
  12. 11 12月, 2010 2 次提交
  13. 07 12月, 2010 2 次提交
  14. 04 12月, 2010 4 次提交
  15. 28 11月, 2010 1 次提交
  16. 22 11月, 2010 1 次提交
  17. 17 11月, 2010 2 次提交