2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-26 22:24:09 +08:00
linux-next/drivers/infiniband/hw
Matan Barak d57febe1a4 net/mlx4: Add A0 hybrid steering
A0 hybrid steering is a form of high performance flow steering.
By using this mode, mlx4 cards use a fast limited table based steering,
in order to enable fast steering of unicast packets to a QP.

In order to implement A0 hybrid steering we allocate resources
from different zones:
(1) General range
(2) Special MAC-assigned QPs [RSS, Raw-Ethernet] each has its own region.

When we create a rss QP or a raw ethernet (A0 steerable and BF ready) QP,
we try hard to allocate the QP from range (2). Otherwise, we try hard not
to allocate from this  range. However, when the system is pushed to its
limits and one needs every resource, the allocator uses every region it can.

Meaning, when we run out of raw-eth qps, the allocator allocates from the
general range (and the special-A0 area is no longer active). If we run out
of RSS qps, the mechanism tries to allocate from the raw-eth QP zone. If that
is also exhausted, the allocator will allocate from the general range
(and the A0 region is no longer active).

Note that if a raw-eth qp is allocated from the general range, it attempts
to allocate the range such that bits 6 and 7 (blueflame bits) in the
QP number are not set.

When the feature is used in SRIOV, the VF has to notify the PF what
kind of QP attributes it needs. In order to do that, along with the
"Eth QP blueflame" bit, we reserve a new "A0 steerable QP". According
to the combination of these bits, the PF tries to allocate a suitable QP.

In order to maintain backward compatibility (with older PFs), the PF
notifies which QP attributes it supports via QUERY_FUNC_CAP command.

Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-12-11 14:47:35 -05:00
..
amso1100 Main set of InfiniBand/RDMA updates for 3.17 merge window: 2014-08-14 11:09:05 -06:00
cxgb3 RDMA/cxgb3: Remove a couple unneeded conditions 2014-05-28 10:04:00 -07:00
cxgb4 RDMA/cxgb4/cxgb4vf/csiostor: Cleanup macros/register defines related to PCIE, RSS and FW 2014-11-22 16:57:47 -05:00
ehca Merge branches 'core', 'cxgb4', 'ip-roce', 'iser', 'misc', 'mlx4', 'nes', 'ocrdma', 'qib', 'sgwrapper', 'srp' and 'usnic' into for-next 2014-04-03 08:30:17 -07:00
ipath [infiniband] remove pointless assignments 2014-10-09 02:39:15 -04:00
mlx4 net/mlx4: Add A0 hybrid steering 2014-12-11 14:47:35 -05:00
mlx5 mlx5: Fix error flow in add_keys 2014-12-08 20:45:56 -05:00
mthca IB/mad: add new ioctl to ABI to support new registration options 2014-08-10 20:36:00 -07:00
nes infiniband: use pci_zalloc_consistent 2014-08-08 15:57:28 -07:00
ocrdma Main set of InfiniBand/RDMA updates for 3.18 merge window: 2014-10-19 12:29:23 -07:00
qib [infiniband] remove pointless assignments 2014-10-09 02:39:15 -04:00
usnic IOMMU Updates for Linux v3.18 2014-10-15 07:23:49 +02:00
Makefile IB: Allow build of hw/ and ulp/ subdirectories independently 2014-06-02 14:51:12 -07:00