1. 14 May, 2011 4 commits
  2. 07 May, 2011 2 commits
  3. 04 May, 2011 2 commits
  4. 27 Apr, 2011 4 commits
  5. 13 Apr, 2011 4 commits
  6. 31 Mar, 2011 1 commit
  7. 12 Mar, 2011 6 commits
    • Lior Levy's avatar
      ixgbe: add support for VF Transmit rate limit using iproute2 · ff4ab206
      Lior Levy authored
      
      
      Implemented ixgbe_ndo_set_vf_bw function which is being used by iproute2
      tool. In addition, updated ixgbe_ndo_get_vf_config function to show the
      actual rate limit to the user.
      
      The rate limitation can be configured only when the link is up and the
      link speed is 10Gb.
      The rate limit value can be 0 or ranged between 11 and actual link
      speed measured in Mbps. A value of '0' disables the rate limit for
      this specific VF.
      
      iproute2 usage will be 'ip link set ethX vf Y rate Z'.
      After the command is made, the rate will be changed instantly.
      To view the current rate limit, use 'ip link show ethX'.
      
      The rates will be zeroed only upon driver reload or a link speed change.
      
      This feature is being supported by 82599 and X540 devices.
      Signed-off-by: default avatarLior Levy <lior.levy@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ff4ab206
    • John Fastabend's avatar
      ixgbe: DCB during ifup use correct CEE or IEEE mode · c27931da
      John Fastabend authored
      
      
      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: default avatarJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: default avatarRoss Brattain <ross.b.brattain@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      c27931da
    • John Fastabend's avatar
      ixgbe: DCB: enable RSS to be used with DCB · 8187cd48
      John Fastabend authored
      
      
      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: default avatarJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: default avatarRoss Brattain <ross.b.brattain.@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      8187cd48
    • John Fastabend's avatar
      ixgbe: enable ndo_tc_setup · 24095aa3
      John Fastabend authored
      
      
      This patch adds the ndo_tc_setup to ixgbe. By default we set
      the device to use strict priority.
      Signed-off-by: default avatarJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: default avatarRoss Brattain <ross.b.brattain.@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      24095aa3
    • John Fastabend's avatar
      ixgbe: DCB, use multiple Tx rings per traffic class · e5b64635
      John Fastabend authored
      
      
      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: default avatarJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: default avatarRoss Brattain <ross.b.brattain@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      e5b64635
    • John Fastabend's avatar
      ixgbe: DCB, implement capabilities flags · 3032309b
      John Fastabend authored
      
      
      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: default avatarJohn Fastabend <john.r.fastabend@intel.com>
      Tested-by: default avatarRoss Brattain <ross.b.brattain@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      3032309b
  8. 07 Mar, 2011 2 commits
  9. 03 Mar, 2011 3 commits
  10. 24 Feb, 2011 1 commit
  11. 17 Feb, 2011 1 commit
  12. 11 Feb, 2011 5 commits
  13. 08 Feb, 2011 3 commits
  14. 13 Jan, 2011 1 commit
    • Eric Dumazet's avatar
      net: remove dev_txq_stats_fold() · 1ac9ad13
      Eric Dumazet authored
      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.html
      
      Reported-by: default avatarNeil Jones <neiljay@gmail.com>
      Signed-off-by: default avatarEric 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: default avatarDavid S. Miller <davem@davemloft.net>
      1ac9ad13
  15. 10 Jan, 2011 1 commit