linux/drivers/net
Jack Morgenstein fd10ed8e6f IB/mlx4: Fix possible vl/sl field mismatch in LRH header in QP1 packets
In MLX qp packets, the LRH (built by the driver) has both a VL field
and an SL field. When building a QP1 packet, the VL field should
reflect the SLtoVL mapping and not arbitrarily contain zero (as is
done now). This bug causes credit problems in IB switches at
high rates of QP1 packets.

The fix is to cache the SL to VL mapping in the driver, and look up
the VL mapped to the SL provided in the send request when sending
QP1 packets.

For FW versions which support generating a port_management_config_change
event with subtype sl-to-vl-table-change, the driver uses that event
to update its sl-to-vl mapping cache.  Otherwise, the driver snoops
incoming SMP mads to update the cache.

There remains the case where the FW is running in secure-host mode
(so no QP0 packets are delivered to the driver), and the FW does not
generate the sl2vl mapping change event. To support this case, the
driver updates (via querying the FW) its sl2vl mapping cache when
running in secure-host mode when it receives either a Port Up event
or a client-reregister event (where the port is still up, but there
may have been an opensm failover).
OpenSM modifies the sl2vl mapping before Port Up and Client-reregister
events occur, so if there is a mapping change the driver's cache will
be properly updated.

Fixes: 225c7b1fee ("IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters")
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2016-10-07 16:54:38 -04:00
..
appletalk
arcnet
bonding bonding: fix the typo 2016-08-09 14:57:14 -07:00
caif virtio/vhost: new features for 4.8 2016-08-06 09:20:13 -04:00
can net: can: usb: usb_8dev: don't print error when allocating urb fails 2016-08-13 14:53:39 -07:00
cris
dsa net: dsa: bcm_sf2: Remove probing through old DSA binding 2016-08-19 17:15:36 -07:00
ethernet IB/mlx4: Fix possible vl/sl field mismatch in LRH header in QP1 packets 2016-10-07 16:54:38 -04:00
fddi
fjes fjes: Delete owner assignment 2016-08-15 11:57:55 -07:00
hamradio
hippi
hyperv hv_netvsc: Implement batching of receive completions 2016-08-19 22:41:19 -07:00
ieee802154 mrf24j40: avoid uninitialized byte in SPI transfer to radio. 2016-07-12 11:54:53 +02:00
ipvlan ipvlan: Scrub skb before crossing the namespace boundry 2016-07-25 21:47:26 -07:00
irda
phy net: phy: Kconfig: Remove redundant "Support for" 2016-08-19 17:11:50 -07:00
plip
ppp pptp: Refactor the struct and macros of PPTP codes 2016-08-15 10:55:53 -07:00
slip
team
usb net: usb: usbnet: don't print error when allocating urb fails 2016-08-13 14:53:40 -07:00
vmxnet3
wan wan/fsl_ucc_hdlc: avoid possible NULL pointer dereference 2016-08-01 13:32:52 -07:00
wimax net: wimax: i2400m: usb-notif: don't print error when allocating urb fails 2016-08-13 14:53:40 -07:00
wireless Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-08-18 01:17:32 -04:00
xen-netback xen-netback: create a debugfs node for hash information 2016-08-18 23:29:09 -07:00
dummy.c
eql.c
geneve.c drivers/net: fixup comments after "Future-proof tunnel offload handlers" 2016-07-11 13:42:11 -07:00
gtp.c
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c net: remove type_check from dev_get_nest_level() 2016-08-13 15:15:54 -07:00
macvlan.c net: remove type_check from dev_get_nest_level() 2016-08-13 15:15:54 -07:00
macvtap.c macvtap: fix use after free for skb_array during release 2016-08-11 09:55:51 -07:00
Makefile
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c tun: Rename a jump label in update_filter() 2016-08-20 19:11:33 -07:00
veth.c
virtio_net.c virtio-net: Remove more stack DMA 2016-07-19 19:25:43 -07:00
vrf.c
vxlan.c net: vxlan: lwt: Fix vxlan local traffic. 2016-08-08 14:16:24 -07:00
xen-netfront.c