octeon_mgmt: Fix MIX registers configuration on MTU setup
authorAlexander Sverdlin <alexander.sverdlin@nsn.com>
Fri, 13 Jul 2018 15:31:50 +0000 (17:31 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 24 Aug 2018 11:09:18 +0000 (13:09 +0200)
commit70cc6b67508ca7a940f463a1aa12869f1f59fd7a
tree9d683d7f45d23145e566d4d17c82402991531e54
parentfc9caa36d80e7f3aaf0720df58a7611ae88b9a94
octeon_mgmt: Fix MIX registers configuration on MTU setup

[ Upstream commit 4aac0b43474d18f6160302a3caa147d77fa3baa1 ]

octeon_mgmt driver doesn't drop RX frames that are 1-4 bytes bigger than
MTU set for the corresponding interface. The problem is in the
AGL_GMX_RX0/1_FRM_MAX register setting, which should not account for VLAN
tagging.

According to Octeon HW manual:
"For tagged frames, MAX increases by four bytes for each VLAN found up to a
maximum of two VLANs, or MAX + 8 bytes."

OCTEON_FRAME_HEADER_LEN "define" is fine for ring buffer management, but
should not be used for AGL_GMX_RX0/1_FRM_MAX.

The problem could be easily reproduced using "ping" command. If affected
system has default MTU 1500, other host (having MTU >= 1504) can
successfully "ping" the affected system with payload size 1473-1476,
resulting in IP packets of size 1501-1504 accepted by the mgmt driver.
Fixed system still accepts IP packets of 1500 bytes even with VLAN tagging,
because the limits are lifted in HW as expected, for every VLAN tag.

Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/cavium/octeon/octeon_mgmt.c