linux_dsm_epyc7002/drivers/net/ethernet/mellanox/mlx4
Jack Morgenstein 54679e1482 mlx4: Implement QP paravirtualization and maintain phys_pkey_cache for smp_snoop
This requires:

1. Replacing the paravirtualized P_Key index (inserted by the guest)
   with the real P_Key index.

2. For UD QPs, placing the guest's true source GID index in the
   address path structure mgid field, and setting the ud_force_mgid
   bit so that the mgid is taken from the QP context and not from the
   WQE when posting sends.

3. For UC and RC QPs, placing the guest's true source GID index in the
   address path structure mgid field.

4. For tunnel and proxy QPs, setting the Q_Key value reserved for that
   proxy/tunnel pair.

Since not all the above adjustments occur in all the QP transitions,
the QP transitions require separate wrapper functions.

Secondly, initialize the P_Key virtualization table to its default
values: Master virtualized table is 1-1 with the real P_Key table,
guest virtualized table has P_Key index 0 mapped to the real P_Key
index 0, and all the other P_Key indices mapped to the reserved
(invalid) P_Key at index 127.

Finally, add logic in smp_snoop for maintaining the phys_P_Key_cache.
and generating events on the master only if a P_Key actually changed.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2012-09-30 20:33:33 -07:00
..
alloc.c mlx4_core: Change bitmap allocator to work in round-robin fashion 2012-05-14 13:44:38 -07:00
catas.c mlx4: Add support for EEH error recovery 2012-07-25 15:24:13 -07:00
cmd.c mlx4: Implement QP paravirtualization and maintain phys_pkey_cache for smp_snoop 2012-09-30 20:33:33 -07:00
cq.c mlx4_core: removed function index from vf. 2012-01-22 15:08:43 -05:00
en_cq.c net/mlx4_en: Add accelerated RFS support 2012-07-19 08:34:37 -07:00
en_dcb_nl.c drivers/net: fix unresolved 64bit math in mellanox/mlx4/en_dcb_nl.c 2012-04-16 02:12:11 -04:00
en_ethtool.c net/mlx4: Move MAC_MASK to a common place 2012-07-19 08:34:37 -07:00
en_main.c mlx4: Use port management change event instead of smp_snoop 2012-07-10 09:47:10 -07:00
en_netdev.c net/mlx4_en: Limit the RFS filter IDs to be < RPS_NO_FILTER 2012-07-26 00:23:55 -07:00
en_port.c mlx4: Ethernet port management modifications 2011-12-13 13:56:07 -05:00
en_port.h net/mlx4_core: set port QoS attributes 2012-04-05 05:08:03 -04:00
en_resources.c net/mlx4_en: Force user priority by QP attribute 2012-04-05 05:08:03 -04:00
en_rx.c net/mlx4_en: loopbacked packets are dropped when SMAC=DMAC 2012-08-03 16:49:02 -07:00
en_selftest.c mlx4_core: Add "native" argument to mlx4_cmd and its callers (where needed) 2011-12-13 13:56:05 -05:00
en_tx.c net/mlx4_en: Fixing TX queue stop/wake flow 2012-08-03 16:49:02 -07:00
eq.c InfiniBand/RDMA changes for the 3.6 merge window: 2012-07-24 13:56:26 -07:00
fw.c mlx4_core: Add proxy and tunnel QPs to the reserved QP area 2012-09-30 20:33:31 -07:00
fw.h mlx4_core: Add proxy and tunnel QPs to the reserved QP area 2012-09-30 20:33:31 -07:00
icm.c mlx4_core: Fix integer overflows so 8TBs of memory registration works 2012-09-13 17:52:02 -07:00
icm.h mlx4_core: Fix integer overflows so 8TBs of memory registration works 2012-09-13 17:52:02 -07:00
intf.c mlx4: Use port management change event instead of smp_snoop 2012-07-10 09:47:10 -07:00
Kconfig net/mlx4_en: DCB QoS support 2012-04-05 05:08:04 -04:00
main.c mlx4: Implement QP paravirtualization and maintain phys_pkey_cache for smp_snoop 2012-09-30 20:33:33 -07:00
Makefile net/mlx4_en: DCB QoS support 2012-04-05 05:08:04 -04:00
mcg.c net/mlx4_core: Looking for promiscuous entries on the correct port 2012-09-07 12:55:59 -04:00
mlx4_en.h net/mlx4_en: Fixing TX queue stop/wake flow 2012-08-03 16:49:02 -07:00
mlx4.h mlx4: Implement QP paravirtualization and maintain phys_pkey_cache for smp_snoop 2012-09-30 20:33:33 -07:00
mr.c mlx4_core: Clean up buddy bitmap allocation 2012-08-15 21:05:27 -07:00
pd.c net/mlx4_core: Add XRC domains and counters to resource tracker 2012-05-16 00:56:59 -04:00
port.c InfiniBand/RDMA changes for the 3.6 merge window: 2012-07-24 13:56:26 -07:00
profile.c mlx4_core: Fix integer overflow issues around MTT table 2012-08-15 21:05:26 -07:00
qp.c mlx4_core: Add proxy and tunnel QPs to the reserved QP area 2012-09-30 20:33:31 -07:00
reset.c
resource_tracker.c mlx4: Implement QP paravirtualization and maintain phys_pkey_cache for smp_snoop 2012-09-30 20:33:33 -07:00
sense.c net/mlx4_core: Remove port type restrictions 2012-08-03 16:49:40 -07:00
srq.c mlx4_core: removed function index from vf. 2012-01-22 15:08:43 -05:00