1. 07 4月, 2016 7 次提交
    • I
      mlxsw: reg: Add QoS ETS Element Configuration register · b9b7cee4
      Ido Schimmel 提交于
      We are going to introduce support for DCB, so we need to be able to
      configure the traffic selection algorithm (TSA) used by each traffic
      class (TC), as well as the bandwidth percentage allocated to each TC in
      case of ETS.
      
      Add the QoS ETS Element Configuration register, which controls the
      above parameters.
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b9b7cee4
    • I
      mlxsw: spectrum: Set port's shared buffer size to 0 · d6b7c13b
      Ido Schimmel 提交于
      In addition to the priority group (PG) buffers in the headroom, the
      device enables the allocation of headroom shared buffer, which can
      be shared between different PGs.
      
      However, we are not going to use the headroom shared buffer and instead
      allow the user to use its size for PGs or the switch's shared buffer.
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d6b7c13b
    • I
      mlxsw: reg: Use correct PBMC register length · 7ad7cd61
      Ido Schimmel 提交于
      The last field of the PBMC register is at offset 0x64 and its size is
      0x8, so the correct register's length is 0x6C bytes.
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7ad7cd61
    • I
      mlxsw: spectrum: Correctly configure headroom size · ff6551ec
      Ido Schimmel 提交于
      When packets ingress the switch they are assigned a switch priority and
      directed to the corresponding priority group (PG) buffer in the port's
      headroom buffer.
      
      Since we now map all switch priorities to priority group 0 (PG0) by
      default, there is no need to allocate the other priority groups during
      initialization. The only exception is PG9, which is used for control
      traffic.
      
      At minimum, the PG should be able to store the currently classified
      packet (pipeline latency isn't 0) and also the packets arriving during
      the classification time. However, an incoming packet will not be
      buffered if there is no available MTU-sized buffer space for storing it.
      
      The buffer needed to accommodate for pipeline latency is variable and
      needs to take into account both the current link speed and current
      latency of the pipeline, which is time-dependent. Testing showed that
      setting the PG's size to twice the current MTU is optimal.
      
      Since PG9 is used strictly for control packets and not subject to flow
      control, we are not going to resize it according to user configuration,
      so we simply set it according to worst case scenario, which is twice the
      maximum MTU.
      
      In any case, later patches in the series will allow a user to direct
      lossless flows to other PGs than PG0 and set their size to accommodate
      for round-trip propagation delay.
      
      The above change also requires us to resize the PG buffer whenever the
      port's MTU is changed.
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ff6551ec
    • I
      mlxsw: spectrum: Add bytes to cells helper · 1a198449
      Ido Schimmel 提交于
      Buffers in the switch store packets in units called buffer cells. Add a
      helper to convert from bytes to cells, so that the actual number of
      cells required (result is round up) is returned.
      
      Also, drop the SB (shared buffer) acronym from the BYTES_PER_CELL macro,
      as this unit is also used in the ports' buffers and not only the
      switch's shared buffer.
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1a198449
    • I
      mlxsw: spectrum: Map all switch priorities to priority group 0 · dd6cb0f9
      Ido Schimmel 提交于
      During transmission, the skb's priority is used to map the skb to a
      traffic class, where the idea is to group priorities with similar
      characteristics (e.g. lossy, lossless) to the same traffic class. By
      default, all priorities are mapped to traffic class 0.
      
      In the device, we model the skb's priority as the switch priority, which
      is assigned to a packet according to its PCP value and ingress port
      (untagged packets are assigned the port's default switch priority - 0).
      
      At ingress, the packet is directed to a priority group (PG) buffer in
      the port's headroom buffer according to the packet's switch priority and
      switch priority to buffer mapping.
      
      While it's possible to configure the egress mapping between skb's
      priority (switch priority) and traffic class, there is no mechanism to
      configure the ingress mapping to a PG.
      
      In order to keep things simple and since grouping certain priorities into
      a traffic class at egress also implies they should be grouped the same
      at ingress, treat a PG as the ingress counterpart of an egress traffic
      class.
      
      Having established the above, during initialization map all the switch
      priorities to PG0 in accordance with the Linux defaults for traffic
      class mapping.
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      dd6cb0f9
    • I
      mlxsw: reg: Add Port Prio To Buffer register · b98ff151
      Ido Schimmel 提交于
      When packets ingress the switch they are assigned a switch priority
      number that dictates the packet's priority group (PG) buffer in the
      port's headroom buffer.
      
      Add the Port Prio To Buffer (PPTB) register, which configures the switch
      priority to PG mapping.
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b98ff151
  2. 06 4月, 2016 2 次提交
  3. 14 3月, 2016 1 次提交
  4. 12 3月, 2016 1 次提交
  5. 08 3月, 2016 2 次提交
    • I
      mlxsw: pci: Correctly determine if descriptor queue is full · 5091730d
      Ido Schimmel 提交于
      The descriptor queues for sending (SDQs) and receiving (RDQs) packets
      are managed by two counters - producer and consumer - which are both
      16-bit in size. A queue is considered full when the difference between
      the two equals the queue's maximum number of descriptors.
      
      However, if the producer counter overflows, then it's possible for the
      full queue check to fail, as it doesn't take the overflow into account.
      In such a case, descriptors already passed to the device - but for which
      a completion has yet to be posted - will be overwritten, thereby causing
      undefined behavior. The above can be achieved under heavy load (~30
      netperf instances).
      
      Fix that by casting the subtraction result to u16, preventing it from
      being treated as a signed integer.
      
      Fixes: eda6500a ("mlxsw: Add PCI bus implementation")
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5091730d
    • I
      mlxsw: spectrum: Always decrement bridge's ref count · 912b1c89
      Ido Schimmel 提交于
      Since we only support one VLAN filtering bridge we need to associate a
      reference count with it, so that when the last port netdev leaves it, we
      would know that a different bridge can be offloaded to hardware.
      
      When a LAG device is memeber in a bridge and port netdevs are leaving
      the LAG, we should always decrement the bridge's reference count, as it's
      incremented for any port in the LAG.
      
      Fixes: 4dc236c3 ("mlxsw: spectrum: Handle port leaving LAG while bridged")
      Signed-off-by: NIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      912b1c89
  6. 04 3月, 2016 1 次提交
    • A
      net: mellanox: add DEVLINK dependencies · 3d1cbe83
      Arnd Bergmann 提交于
      The new NET_DEVLINK infrastructure can be a loadable module, but the drivers
      using it might be built-in, which causes link errors like:
      
      drivers/net/built-in.o: In function `mlx4_load_one':
      :(.text+0x2fbfda): undefined reference to `devlink_port_register'
      :(.text+0x2fc084): undefined reference to `devlink_port_unregister'
      drivers/net/built-in.o: In function `mlxsw_sx_port_remove':
      :(.text+0x33a03a): undefined reference to `devlink_port_type_clear'
      :(.text+0x33a04e): undefined reference to `devlink_port_unregister'
      
      There are multiple ways to avoid this:
      
      a) add 'depends on NET_DEVLINK || !NET_DEVLINK' dependencies
         for each user
      b) use 'select NET_DEVLINK' from each driver that uses it
         and hide the symbol in Kconfig.
      c) make NET_DEVLINK a 'bool' option so we don't have to
         list it as a dependency, and rely on the APIs to be
         stubbed out when it is disabled
      d) use IS_REACHABLE() rather than IS_ENABLED() to check for
         NET_DEVLINK in include/net/devlink.h
      
      This implements a variation of approach a) by adding an
      intermediate symbol that drivers can depend on, and changes
      the three drivers using it.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Fixes: 09d4d087 ("mlx4: Implement devlink interface")
      Fixes: c4745500 ("mlxsw: Implement devlink interface")
      Acked-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3d1cbe83
  7. 02 3月, 2016 6 次提交
  8. 18 2月, 2016 4 次提交
  9. 29 1月, 2016 12 次提交
  10. 13 1月, 2016 1 次提交
  11. 11 1月, 2016 3 次提交