linux/drivers/net
Carol L Soto c02b05011f net/mlx4: Copy/set only sizeof struct mlx4_eqe bytes
When doing memcpy/memset of EQEs, we should use sizeof struct
mlx4_eqe as the base size and not caps.eqe_size which could be bigger.

If caps.eqe_size is bigger than the struct mlx4_eqe then we corrupt
data in the master context.

When using a 64 byte stride, the memcpy copied over 63 bytes to the
slave_eq structure.  This resulted in copying over the entire eqe of
interest, including its ownership bit -- and also 31 bytes of garbage
into the next WQE in the slave EQ -- which did NOT include the ownership
bit (and therefore had no impact).

However, once the stride is increased to 128, we are overwriting the
ownership bits of *three* eqes in the slave_eq struct.  This results
in an incorrect ownership bit for those eqes, which causes the eq to
seem to be full. The issue therefore surfaced only once 128-byte EQEs
started being used in SRIOV and (overarchitectures that have 128/256
byte cache-lines such as PPC) - e.g after commit 77507aa249
"net/mlx4_core: Enable CQE/EQE stride support".

Fixes: 08ff32352d ('mlx4: 64-byte CQE/EQE support')
Signed-off-by: Carol L Soto <clsoto@linux.vnet.ibm.com>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-10-27 20:27:11 -07:00
..
appletalk
arcnet ARCNET: fix hard_header_len limit 2015-09-17 22:26:55 -07:00
bonding Changes for 4.3 2015-09-09 08:33:31 -07:00
caif net: caif: convert to using IFF_NO_QUEUE 2015-08-18 11:55:07 -07:00
can can: peak_pci: add unused device id. in devices table 2015-09-30 12:57:58 +02:00
cris
dsa dsa: mv88e6xxx: Enable forwarding for unknown to the CPU port 2015-09-29 21:06:51 -07:00
ethernet net/mlx4: Copy/set only sizeof struct mlx4_eqe bytes 2015-10-27 20:27:11 -07:00
fddi net/fddi: remove HWM_REVERSE() macro 2015-08-13 21:12:17 -07:00
fjes fjes: fix off-by-one error at fjes_hw_update_zone_task() 2015-09-17 22:34:09 -07:00
hamradio Merge branch 'x86/urgent' into x86/asm to fix up conflicts and to pick up fixes 2015-08-18 09:39:47 +02:00
hippi
hyperv flow_dissector: Add flags argument to skb_flow_dissector functions 2015-09-01 15:06:22 -07:00
ieee802154 cc2520: set the default fifo pin value from platform data 2015-08-11 06:13:39 +02:00
ipvlan net: ipvlan: convert to using IFF_NO_QUEUE 2015-08-18 11:55:06 -07:00
irda irda: ali-ircc: Fix deadlock in ali_ircc_sir_change_speed() 2015-09-11 16:18:33 -07:00
phy net: phy: mdio: add missing of_node_put 2015-10-26 22:08:12 -07:00
plip
ppp ppp: fix pppoe_dev deletion condition in pppoe_release() 2015-10-23 03:30:01 -07:00
slip
team net: team: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
usb qmi_wwan: add Sierra Wireless MC74xx/EM74xx 2015-10-22 07:56:21 -07:00
vmxnet3 vmxnet3: prevent receive getting out of sequence on napi poll 2015-07-08 23:36:11 -07:00
wan net: wan: sbni: fix device usage count 2015-09-05 17:32:53 -07:00
wimax
wireless ath6kl: add missing of_node_put 2015-10-26 22:08:12 -07:00
xen-netback xen-netback: correctly check failed allocation 2015-10-18 19:37:29 -07:00
dummy.c net: dummy: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
eql.c
geneve.c openvswitch: Fix egress tunnel info. 2015-10-22 19:39:25 -07:00
ifb.c ifb: add multiqueue operation 2015-07-08 16:00:09 -07:00
Kconfig geneve: Consolidate Geneve functionality in single module. 2015-08-27 15:42:48 -07:00
LICENSE.SRC
loopback.c net: loopback: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
macvlan.c macvlan: Don't segment multiple tagged packets on macvlan device 2015-08-03 14:24:49 -07:00
macvtap.c macvtap: unbreak receiving of gro skb with frag list 2015-10-23 02:34:39 -07:00
Makefile fjes: Introduce FUJITSU Extended Socket Network Device driver 2015-08-24 14:06:33 -07:00
mdio.c
mii.c
netconsole.c netconsole: implement extended console support 2015-06-25 17:00:39 -07:00
nlmon.c net: nlmon: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
ntb_netdev.c NTB: Add flow control to the ntb_netdev 2015-09-07 15:17:08 -04:00
rionet.c bus: subsys: update return type of ->remove_dev() to void 2015-08-05 17:08:14 -07:00
sb1000.c
Space.c
sungem_phy.c
tun.c tuntap: Don't segment multiple tagged packets on tap device 2015-08-03 14:24:50 -07:00
veth.c net: veth: enable noqueue operation by default 2015-08-18 11:55:04 -07:00
virtio_net.c virtio-net: avoid unnecessary sg initialzation 2015-08-27 15:51:45 -07:00
vrf.c net: Fix vti use case with oif in dst lookups 2015-09-17 16:36:34 -07:00
vxlan.c openvswitch: Fix egress tunnel info. 2015-10-22 19:39:25 -07:00
xen-netfront.c xen-netfront: update num_queues to real created 2015-10-21 07:45:39 -07:00