Skip to content

Commit

Permalink
net: ixp4xx_eth: Specify min/max MTU
Browse files Browse the repository at this point in the history
As we don't specify the MTU in the driver, the framework
will fall back to 1500 bytes and this doesn't work very
well when we try to attach a DSA switch:

  eth1: mtu greater than device maximum
  ixp4xx_eth c800a000.ethernet eth1: error -22 setting
  MTU to 1504 to include DSA overhead

I checked the developer docs and the hardware can actually
do really big frames, so update the driver accordingly.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20230923-ixp4xx-eth-mtu-v1-1-9e88b908e1b2@linaro.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
  • Loading branch information
Linus Walleij authored and Paolo Abeni committed Oct 3, 2023
1 parent f01821b commit 13efc44
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions drivers/net/ethernet/xscale/ixp4xx_eth.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <linux/dma-mapping.h>
#include <linux/dmapool.h>
#include <linux/etherdevice.h>
#include <linux/if_vlan.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/net_tstamp.h>
Expand Down Expand Up @@ -1488,6 +1489,13 @@ static int ixp4xx_eth_probe(struct platform_device *pdev)
ndev->dev.dma_mask = dev->dma_mask;
ndev->dev.coherent_dma_mask = dev->coherent_dma_mask;

/* Maximum frame size is 16320 bytes and includes VLAN and
* ethernet headers. See "IXP400 Software Programmer's Guide"
* section 10.3.2, page 161.
*/
ndev->min_mtu = ETH_MIN_MTU;
ndev->max_mtu = 16320 - VLAN_ETH_HLEN;

netif_napi_add_weight(ndev, &port->napi, eth_poll, NAPI_WEIGHT);

if (!(port->npe = npe_request(NPE_ID(port->id))))
Expand Down

0 comments on commit 13efc44

Please sign in to comment.