linux_dsm_epyc7002/drivers/net
Zefir Kurtisi 6c389fc931 gianfar: fix size of scatter-gathered frames
The current scatter-gather logic in gianfar is flawed, since
it does not consider the eTSEC's RxBD 'Data Length' field is
context depening: for the last fragment it contains the full
frame size, while fragments contain the fragment size, which
equals the value written to register MRBLR.

This causes data corruption as soon as the hardware starts
to fragment receiving frames. As a result, the size of
fragmented frames is increased by
(nr_frags - 1) * MRBLR

We first noticed this issue working with DSA, where an ICMP
request sized 1472 bytes causes the scatter-gather logic to
kick in. The full Ethernet frame (1518) gets increased by
DSA (4), GMAC_FCB_LEN (8), and FSL_GIANFAR_DEV_HAS_TIMER
(priv->padding=8) to a total of 1538 octets, which is
fragmented by the hardware and reconstructed by the driver
to a 3074 octet frame.

This patch fixes the problem by adjusting the size of
the last fragment.

It was tested by setting MRBLR to different multiples of
64, proving correct scatter-gather operation on frames
with up to 9000 octets in size.

Signed-off-by: Zefir Kurtisi <zefir.kurtisi@neratec.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-08-23 16:49:00 -07: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 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-06-30 05:03:36 -04:00
cris
dsa dsa: mv88e6xxx: hide unused functions 2016-08-12 17:32:21 -07:00
ethernet gianfar: fix size of scatter-gathered frames 2016-08-23 16:49:00 -07:00
fddi net: skfb: remove obsolete -I cflag 2016-06-15 22:06:06 -07:00
fjes
hamradio hamradio: baycom: fix old-style declaration 2016-06-16 22:06:30 -07:00
hippi
hyperv hv_netvsc: fix bonding devices check in netvsc_netdev_event() 2016-08-15 13:48:07 -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: micrel: Add specific suspend 2016-08-09 16:19:15 -07:00
plip
ppp Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-07-24 00:53:32 -04:00
slip
team net: introduce default neigh_construct/destroy ndo calls for L2 upper devices 2016-07-05 09:06:28 -07:00
usb kaweth: fix oops upon failed memory allocation 2016-08-18 23:25:33 -07:00
vmxnet3 vmxnet3: fix tx data ring copy for variable size 2016-08-19 22:44:22 -07:00
wan wan/fsl_ucc_hdlc: avoid possible NULL pointer dereference 2016-08-01 13:32:52 -07:00
wimax
wireless Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-08-17 17:26:58 -07:00
xen-netback
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 gtp: remove unused including <linux/version.h> 2016-06-17 22:28:49 -07:00
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: Don't assume type tun in tun_device_event 2016-07-08 23:58:57 -04:00
veth.c
virtio_net.c virtio-net: Remove more stack DMA 2016-07-19 19:25:43 -07:00
vrf.c net: vrf: Add support for PREROUTING rules on vrf device 2016-07-05 11:50:05 -07:00
vxlan.c net: vxlan: lwt: Fix vxlan local traffic. 2016-08-08 14:16:24 -07:00
xen-netfront.c