diff options
author | Sudarsana Reddy Kalluru <skalluru@marvell.com> | 2019-03-07 07:56:35 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-03-07 09:43:30 -0800 |
commit | b89869da2db916914f6a2c7ab14183c8aef23d97 (patch) | |
tree | 44a1696bca86b8a50b7df721e344aa4bb47174ee | |
parent | 43d281662fdb46750d49417559b71069f435298d (diff) | |
download | linux-b89869da2db916914f6a2c7ab14183c8aef23d97.tar.gz linux-b89869da2db916914f6a2c7ab14183c8aef23d97.tar.bz2 linux-b89869da2db916914f6a2c7ab14183c8aef23d97.zip |
qede: Fix internal loopback failure with jumbo mtu configuration
Driver uses port-mtu as packet-size for the loopback traffic. This patch
limits the max packet size to 1.5K to avoid data being split over multiple
buffer descriptors (BDs) in cases where MTU > PAGE_SIZE.
Signed-off-by: Sudarsana Reddy Kalluru <skalluru@marvell.com>
Signed-off-by: Ariel Elior <aelior@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/qlogic/qede/qede_ethtool.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c index c6238083e898..b4c8949933f1 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_ethtool.c +++ b/drivers/net/ethernet/qlogic/qede/qede_ethtool.c @@ -1663,8 +1663,11 @@ static int qede_selftest_run_loopback(struct qede_dev *edev, u32 loopback_mode) /* Wait for loopback configuration to apply */ msleep_interruptible(500); - /* prepare the loopback packet */ - pkt_size = edev->ndev->mtu + ETH_HLEN; + /* Setting max packet size to 1.5K to avoid data being split over + * multiple BDs in cases where MTU > PAGE_SIZE. + */ + pkt_size = (((edev->ndev->mtu < ETH_DATA_LEN) ? + edev->ndev->mtu : ETH_DATA_LEN) + ETH_HLEN); skb = netdev_alloc_skb(edev->ndev, pkt_size); if (!skb) { |