1. 19 8月, 2011 2 次提交
  2. 11 8月, 2011 1 次提交
  3. 22 7月, 2011 4 次提交
  4. 25 6月, 2011 3 次提交
  5. 24 6月, 2011 2 次提交
  6. 21 6月, 2011 1 次提交
    • J
      ixgbe: DCB use existing TX and RX queues · e901acd6
      John Fastabend 提交于
      The number of TX and RX queues allocated depends on the device
      type, the current features set, online CPUs, and various
      compile flags.
      
      To enable DCB with multiple queues and allow it to coexist with
      all the features currently implemented it has to setup a valid
      queue count. This is done at init time using the FDIR and RSS
      max queue counts and allowing each TC to allocate a queue per
      CPU.
      
      DCB will now use available queues up to (8 x TCs) this is somewhat
      arbitrary cap but allows DCB to use up to 64 queues. Its easy to
      increase this later if that is needed.
      
      This is prep work to enable Flow Director with DCB. After this
      DCB can easily coexist with existing features and no longer
      needs its own DCB feature ring.
      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>
      e901acd6
  7. 15 5月, 2011 7 次提交
  8. 27 4月, 2011 1 次提交
  9. 12 3月, 2011 3 次提交
    • L
      ixgbe: add support for VF Transmit rate limit using iproute2 · ff4ab206
      Lior Levy 提交于
      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: NLior Levy <lior.levy@intel.com>
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ff4ab206
    • 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
  10. 08 3月, 2011 1 次提交
  11. 03 3月, 2011 1 次提交
  12. 12 2月, 2011 2 次提交
  13. 10 1月, 2011 4 次提交
  14. 17 11月, 2010 8 次提交