Skip to content

Commit 44770e1

Browse files
jarodwilsondavem330
authored andcommitted
ethernet: use core min/max MTU checking
et131x: min_mtu 64, max_mtu 9216 altera_tse: min_mtu 64, max_mtu 1500 amd8111e: min_mtu 60, max_mtu 9000 bnad: min_mtu 46, max_mtu 9000 macb: min_mtu 68, max_mtu 1500 or 10240 depending on hardware capability xgmac: min_mtu 46, max_mtu 9000 cxgb2: min_mtu 68, max_mtu 9582 (pm3393) or 9600 (vsc7326) enic: min_mtu 68, max_mtu 9000 gianfar: min_mtu 50, max_mu 9586 hns_enet: min_mtu 68, max_mtu 9578 (v1) or 9706 (v2) ksz884x: min_mtu 60, max_mtu 1894 myri10ge: min_mtu 68, max_mtu 9000 natsemi: min_mtu 64, max_mtu 2024 nfp: min_mtu 68, max_mtu hardware-specific forcedeth: min_mtu 64, max_mtu 1500 or 9100, depending on hardware pch_gbe: min_mtu 46, max_mtu 10300 pasemi_mac: min_mtu 64, max_mtu 9000 qcaspi: min_mtu 46, max_mtu 1500 - remove qcaspi_netdev_change_mtu as it is now redundant rocker: min_mtu 68, max_mtu 9000 sxgbe: min_mtu 68, max_mtu 9000 stmmac: min_mtu 46, max_mtu depends on hardware tehuti: min_mtu 60, max_mtu 16384 - driver had no max mtu checking, but product docs say 16k jumbo packets are supported by the hardware netcp: min_mtu 68, max_mtu 9486 - remove netcp_ndo_change_mtu as it is now redundant via-velocity: min_mtu 64, max_mtu 9000 octeon: min_mtu 46, max_mtu 65370 CC: [email protected] CC: Mark Einon <[email protected]> CC: Vince Bridgers <[email protected]> CC: Rasesh Mody <[email protected]> CC: Nicolas Ferre <[email protected]> CC: Santosh Raspatur <[email protected]> CC: Hariprasad S <[email protected]> CC: Christian Benvenuti <[email protected]> CC: Sujith Sankar <[email protected]> CC: Govindarajulu Varadarajan <[email protected]> CC: Neel Patel <[email protected]> CC: Claudiu Manoil <[email protected]> CC: Yisen Zhuang <[email protected]> CC: Salil Mehta <[email protected]> CC: Hyong-Youb Kim <[email protected]> CC: Jakub Kicinski <[email protected]> CC: Olof Johansson <[email protected]> CC: Jiri Pirko <[email protected]> CC: Byungho An <[email protected]> CC: Girish K S <[email protected]> CC: Vipul Pandya <[email protected]> CC: Giuseppe Cavallaro <[email protected]> CC: Alexandre Torgue <[email protected]> CC: Andy Gospodarek <[email protected]> CC: Wingman Kwok <[email protected]> CC: Murali Karicheri <[email protected]> CC: Francois Romieu <[email protected]> Signed-off-by: Jarod Wilson <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 1281a2c commit 44770e1

File tree

33 files changed

+169
-222
lines changed

33 files changed

+169
-222
lines changed

drivers/net/ethernet/agere/et131x.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ MODULE_DESCRIPTION("10/100/1000 Base-T Ethernet Driver for the ET1310 by Agere S
176176
#define NUM_FBRS 2
177177

178178
#define MAX_PACKETS_HANDLED 256
179+
#define ET131X_MIN_MTU 64
180+
#define ET131X_MAX_MTU 9216
179181

180182
#define ALCATEL_MULTICAST_PKT 0x01000000
181183
#define ALCATEL_BROADCAST_PKT 0x02000000
@@ -3869,9 +3871,6 @@ static int et131x_change_mtu(struct net_device *netdev, int new_mtu)
38693871
int result = 0;
38703872
struct et131x_adapter *adapter = netdev_priv(netdev);
38713873

3872-
if (new_mtu < 64 || new_mtu > 9216)
3873-
return -EINVAL;
3874-
38753874
et131x_disable_txrx(netdev);
38763875

38773876
netdev->mtu = new_mtu;
@@ -3958,6 +3957,8 @@ static int et131x_pci_setup(struct pci_dev *pdev,
39583957

39593958
netdev->watchdog_timeo = ET131X_TX_TIMEOUT;
39603959
netdev->netdev_ops = &et131x_netdev_ops;
3960+
netdev->min_mtu = ET131X_MIN_MTU;
3961+
netdev->max_mtu = ET131X_MAX_MTU;
39613962

39623963
SET_NETDEV_DEV(netdev, &pdev->dev);
39633964
netdev->ethtool_ops = &et131x_ethtool_ops;

drivers/net/ethernet/altera/altera_tse.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,6 @@ struct altera_tse_private {
443443
/* RX/TX MAC FIFO configs */
444444
u32 tx_fifo_depth;
445445
u32 rx_fifo_depth;
446-
u32 max_mtu;
447446

448447
/* Hash filter settings */
449448
u32 hash_filter;

drivers/net/ethernet/altera/altera_tse_main.c

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -994,20 +994,11 @@ static void tse_set_mac(struct altera_tse_private *priv, bool enable)
994994
*/
995995
static int tse_change_mtu(struct net_device *dev, int new_mtu)
996996
{
997-
struct altera_tse_private *priv = netdev_priv(dev);
998-
unsigned int max_mtu = priv->max_mtu;
999-
unsigned int min_mtu = ETH_ZLEN + ETH_FCS_LEN;
1000-
1001997
if (netif_running(dev)) {
1002998
netdev_err(dev, "must be stopped to change its MTU\n");
1003999
return -EBUSY;
10041000
}
10051001

1006-
if ((new_mtu < min_mtu) || (new_mtu > max_mtu)) {
1007-
netdev_err(dev, "invalid MTU, max MTU is: %u\n", max_mtu);
1008-
return -EINVAL;
1009-
}
1010-
10111002
dev->mtu = new_mtu;
10121003
netdev_update_features(dev);
10131004

@@ -1446,15 +1437,16 @@ static int altera_tse_probe(struct platform_device *pdev)
14461437
of_property_read_bool(pdev->dev.of_node,
14471438
"altr,has-supplementary-unicast");
14481439

1440+
priv->dev->min_mtu = ETH_ZLEN + ETH_FCS_LEN;
14491441
/* Max MTU is 1500, ETH_DATA_LEN */
1450-
priv->max_mtu = ETH_DATA_LEN;
1442+
priv->dev->max_mtu = ETH_DATA_LEN;
14511443

14521444
/* Get the max mtu from the device tree. Note that the
14531445
* "max-frame-size" parameter is actually max mtu. Definition
14541446
* in the ePAPR v1.1 spec and usage differ, so go with usage.
14551447
*/
14561448
of_property_read_u32(pdev->dev.of_node, "max-frame-size",
1457-
&priv->max_mtu);
1449+
&priv->dev->max_mtu);
14581450

14591451
/* The DMA buffer size already accounts for an alignment bias
14601452
* to avoid unaligned access exceptions for the NIOS processor,

drivers/net/ethernet/amd/amd8111e.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1556,9 +1556,6 @@ static int amd8111e_change_mtu(struct net_device *dev, int new_mtu)
15561556
struct amd8111e_priv *lp = netdev_priv(dev);
15571557
int err;
15581558

1559-
if ((new_mtu < AMD8111E_MIN_MTU) || (new_mtu > AMD8111E_MAX_MTU))
1560-
return -EINVAL;
1561-
15621559
if (!netif_running(dev)) {
15631560
/* new_mtu will be used
15641561
* when device starts netxt time
@@ -1874,6 +1871,8 @@ static int amd8111e_probe_one(struct pci_dev *pdev,
18741871
dev->ethtool_ops = &ops;
18751872
dev->irq =pdev->irq;
18761873
dev->watchdog_timeo = AMD8111E_TX_TIMEOUT;
1874+
dev->min_mtu = AMD8111E_MIN_MTU;
1875+
dev->max_mtu = AMD8111E_MAX_MTU;
18771876
netif_napi_add(dev, &lp->napi, amd8111e_rx_poll, 32);
18781877

18791878
#if AMD8111E_VLAN_TAG_USED

drivers/net/ethernet/brocade/bna/bnad.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3296,9 +3296,6 @@ bnad_change_mtu(struct net_device *netdev, int new_mtu)
32963296
struct bnad *bnad = netdev_priv(netdev);
32973297
u32 rx_count = 0, frame, new_frame;
32983298

3299-
if (new_mtu + ETH_HLEN < ETH_ZLEN || new_mtu > BNAD_JUMBO_MTU)
3300-
return -EINVAL;
3301-
33023299
mutex_lock(&bnad->conf_mutex);
33033300

33043301
mtu = netdev->mtu;
@@ -3465,6 +3462,10 @@ bnad_netdev_init(struct bnad *bnad, bool using_dac)
34653462
netdev->mem_start = bnad->mmio_start;
34663463
netdev->mem_end = bnad->mmio_start + bnad->mmio_len - 1;
34673464

3465+
/* MTU range: 46 - 9000 */
3466+
netdev->min_mtu = ETH_ZLEN - ETH_HLEN;
3467+
netdev->max_mtu = BNAD_JUMBO_MTU;
3468+
34683469
netdev->netdev_ops = &bnad_netdev_ops;
34693470
bnad_set_ethtool_ops(netdev);
34703471
}

drivers/net/ethernet/cadence/macb.c

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
#define MACB_MAX_TX_LEN ((unsigned int)((1 << MACB_TX_FRMLEN_SIZE) - 1))
5757
#define GEM_MAX_TX_LEN ((unsigned int)((1 << GEM_TX_FRMLEN_SIZE) - 1))
5858

59-
#define GEM_MTU_MIN_SIZE 68
59+
#define GEM_MTU_MIN_SIZE ETH_MIN_MTU
6060

6161
#define MACB_WOL_HAS_MAGIC_PACKET (0x1 << 0)
6262
#define MACB_WOL_ENABLED (0x1 << 1)
@@ -1986,19 +1986,9 @@ static int macb_close(struct net_device *dev)
19861986

19871987
static int macb_change_mtu(struct net_device *dev, int new_mtu)
19881988
{
1989-
struct macb *bp = netdev_priv(dev);
1990-
u32 max_mtu;
1991-
19921989
if (netif_running(dev))
19931990
return -EBUSY;
19941991

1995-
max_mtu = ETH_DATA_LEN;
1996-
if (bp->caps & MACB_CAPS_JUMBO)
1997-
max_mtu = gem_readl(bp, JML) - ETH_HLEN - ETH_FCS_LEN;
1998-
1999-
if ((new_mtu > max_mtu) || (new_mtu < GEM_MTU_MIN_SIZE))
2000-
return -EINVAL;
2001-
20021992
dev->mtu = new_mtu;
20031993

20041994
return 0;
@@ -3027,6 +3017,13 @@ static int macb_probe(struct platform_device *pdev)
30273017
goto err_out_free_netdev;
30283018
}
30293019

3020+
/* MTU range: 68 - 1500 or 10240 */
3021+
dev->min_mtu = GEM_MTU_MIN_SIZE;
3022+
if (bp->caps & MACB_CAPS_JUMBO)
3023+
dev->max_mtu = gem_readl(bp, JML) - ETH_HLEN - ETH_FCS_LEN;
3024+
else
3025+
dev->max_mtu = ETH_DATA_LEN;
3026+
30303027
mac = of_get_mac_address(np);
30313028
if (mac)
30323029
ether_addr_copy(bp->dev->dev_addr, mac);

drivers/net/ethernet/calxeda/xgmac.c

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ struct xgmac_priv {
394394
};
395395

396396
/* XGMAC Configuration Settings */
397-
#define MAX_MTU 9000
397+
#define XGMAC_MAX_MTU 9000
398398
#define PAUSE_TIME 0x400
399399

400400
#define DMA_RX_RING_SZ 256
@@ -1360,20 +1360,6 @@ static void xgmac_set_rx_mode(struct net_device *dev)
13601360
*/
13611361
static int xgmac_change_mtu(struct net_device *dev, int new_mtu)
13621362
{
1363-
struct xgmac_priv *priv = netdev_priv(dev);
1364-
int old_mtu;
1365-
1366-
if ((new_mtu < 46) || (new_mtu > MAX_MTU)) {
1367-
netdev_err(priv->dev, "invalid MTU, max MTU is: %d\n", MAX_MTU);
1368-
return -EINVAL;
1369-
}
1370-
1371-
old_mtu = dev->mtu;
1372-
1373-
/* return early if the buffer sizes will not change */
1374-
if (old_mtu == new_mtu)
1375-
return 0;
1376-
13771363
/* Stop everything, get ready to change the MTU */
13781364
if (!netif_running(dev))
13791365
return 0;
@@ -1804,6 +1790,10 @@ static int xgmac_probe(struct platform_device *pdev)
18041790
ndev->features |= ndev->hw_features;
18051791
ndev->priv_flags |= IFF_UNICAST_FLT;
18061792

1793+
/* MTU range: 46 - 9000 */
1794+
ndev->min_mtu = ETH_ZLEN - ETH_HLEN;
1795+
ndev->max_mtu = XGMAC_MAX_MTU;
1796+
18071797
/* Get the MAC address */
18081798
xgmac_get_mac_addr(priv->base, ndev->dev_addr, 0);
18091799
if (!is_valid_ether_addr(ndev->dev_addr))

drivers/net/ethernet/chelsio/cxgb/common.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ struct t1_rx_mode {
8585
#define SPEED_INVALID 0xffff
8686
#define DUPLEX_INVALID 0xff
8787

88+
/* Max frame size PM3393 can handle. Includes Ethernet header and CRC. */
89+
#define PM3393_MAX_FRAME_SIZE 9600
90+
91+
#define VSC7326_MAX_MTU 9600
92+
8893
enum {
8994
CHBT_BOARD_N110,
9095
CHBT_BOARD_N210,

drivers/net/ethernet/chelsio/cxgb/cxgb2.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -825,8 +825,6 @@ static int t1_change_mtu(struct net_device *dev, int new_mtu)
825825

826826
if (!mac->ops->set_mtu)
827827
return -EOPNOTSUPP;
828-
if (new_mtu < 68)
829-
return -EINVAL;
830828
if ((ret = mac->ops->set_mtu(mac, new_mtu)))
831829
return ret;
832830
dev->mtu = new_mtu;
@@ -1101,6 +1099,22 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
11011099
netif_napi_add(netdev, &adapter->napi, t1_poll, 64);
11021100

11031101
netdev->ethtool_ops = &t1_ethtool_ops;
1102+
1103+
switch (bi->board) {
1104+
case CHBT_BOARD_CHT110:
1105+
case CHBT_BOARD_N110:
1106+
case CHBT_BOARD_N210:
1107+
case CHBT_BOARD_CHT210:
1108+
netdev->max_mtu = PM3393_MAX_FRAME_SIZE -
1109+
(ETH_HLEN + ETH_FCS_LEN);
1110+
break;
1111+
case CHBT_BOARD_CHN204:
1112+
netdev->max_mtu = VSC7326_MAX_MTU;
1113+
break;
1114+
default:
1115+
netdev->max_mtu = ETH_DATA_LEN;
1116+
break;
1117+
}
11041118
}
11051119

11061120
if (t1_init_sw_modules(adapter, bi) < 0) {

drivers/net/ethernet/chelsio/cxgb/pm3393.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,6 @@
4747

4848
#define OFFSET(REG_ADDR) ((REG_ADDR) << 2)
4949

50-
/* Max frame size PM3393 can handle. Includes Ethernet header and CRC. */
51-
#define MAX_FRAME_SIZE 9600
52-
5350
#define IPG 12
5451
#define TXXG_CONF1_VAL ((IPG << SUNI1x10GEXP_BITOFF_TXXG_IPGT) | \
5552
SUNI1x10GEXP_BITMSK_TXXG_32BIT_ALIGN | SUNI1x10GEXP_BITMSK_TXXG_CRCEN | \
@@ -331,10 +328,7 @@ static int pm3393_set_mtu(struct cmac *cmac, int mtu)
331328
{
332329
int enabled = cmac->instance->enabled;
333330

334-
/* MAX_FRAME_SIZE includes header + FCS, mtu doesn't */
335-
mtu += 14 + 4;
336-
if (mtu > MAX_FRAME_SIZE)
337-
return -EINVAL;
331+
mtu += ETH_HLEN + ETH_FCS_LEN;
338332

339333
/* Disable Rx/Tx MAC before configuring it. */
340334
if (enabled)

drivers/net/ethernet/chelsio/cxgb/vsc7326.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
/* 30 minutes for full statistics update */
1212
#define MAJOR_UPDATE_TICKS (1800 / STATS_TICK_SECS)
1313

14-
#define MAX_MTU 9600
15-
1614
/* The egress WM value 0x01a01fff should be used only when the
1715
* interface is down (MAC port disabled). This is a workaround
1816
* for disabling the T2/MAC flow-control. When the interface is
@@ -452,9 +450,6 @@ static int mac_set_mtu(struct cmac *mac, int mtu)
452450
{
453451
int port = mac->instance->index;
454452

455-
if (mtu > MAX_MTU)
456-
return -EINVAL;
457-
458453
/* max_len includes header and FCS */
459454
vsc_write(mac->adapter, REG_MAX_LEN(port), mtu + 14 + 4);
460455
return 0;

drivers/net/ethernet/cisco/enic/enic_main.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1843,9 +1843,6 @@ static int enic_change_mtu(struct net_device *netdev, int new_mtu)
18431843
struct enic *enic = netdev_priv(netdev);
18441844
int running = netif_running(netdev);
18451845

1846-
if (new_mtu < ENIC_MIN_MTU || new_mtu > ENIC_MAX_MTU)
1847-
return -EINVAL;
1848-
18491846
if (enic_is_dynamic(enic) || enic_is_sriov_vf(enic))
18501847
return -EOPNOTSUPP;
18511848

@@ -2751,6 +2748,10 @@ static int enic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
27512748

27522749
netdev->priv_flags |= IFF_UNICAST_FLT;
27532750

2751+
/* MTU range: 68 - 9000 */
2752+
netdev->min_mtu = ENIC_MIN_MTU;
2753+
netdev->max_mtu = ENIC_MAX_MTU;
2754+
27542755
err = register_netdev(netdev);
27552756
if (err) {
27562757
dev_err(dev, "Cannot register net device, aborting\n");

drivers/net/ethernet/cisco/enic/enic_res.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
#define ENIC_MIN_RQ_DESCS 64
3131
#define ENIC_MAX_RQ_DESCS 4096
3232

33-
#define ENIC_MIN_MTU 68
33+
#define ENIC_MIN_MTU ETH_MIN_MTU
3434
#define ENIC_MAX_MTU 9000
3535

3636
#define ENIC_MULTICAST_PERFECT_FILTERS 32

drivers/net/ethernet/freescale/gianfar.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,7 +1338,10 @@ static int gfar_probe(struct platform_device *ofdev)
13381338

13391339
/* Fill in the dev structure */
13401340
dev->watchdog_timeo = TX_TIMEOUT;
1341+
/* MTU range: 50 - 9586 */
13411342
dev->mtu = 1500;
1343+
dev->min_mtu = 50;
1344+
dev->max_mtu = GFAR_JUMBO_FRAME_SIZE - ETH_HLEN;
13421345
dev->netdev_ops = &gfar_netdev_ops;
13431346
dev->ethtool_ops = &gfar_ethtool_ops;
13441347

@@ -2592,12 +2595,6 @@ static int gfar_set_mac_address(struct net_device *dev)
25922595
static int gfar_change_mtu(struct net_device *dev, int new_mtu)
25932596
{
25942597
struct gfar_private *priv = netdev_priv(dev);
2595-
int frame_size = new_mtu + ETH_HLEN;
2596-
2597-
if ((frame_size < 64) || (frame_size > GFAR_JUMBO_FRAME_SIZE)) {
2598-
netif_err(priv, drv, dev, "Invalid MTU setting\n");
2599-
return -EINVAL;
2600-
}
26012598

26022599
while (test_and_set_bit_lock(GFAR_RESETTING, &priv->state))
26032600
cpu_relax();

drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,8 +446,7 @@ int hns_mac_set_mtu(struct hns_mac_cb *mac_cb, u32 new_mtu)
446446
if (mac_cb->mac_type == HNAE_PORT_DEBUG)
447447
max_frm = MAC_MAX_MTU_DBG;
448448

449-
if ((new_mtu < MAC_MIN_MTU) || (new_frm > max_frm) ||
450-
(new_frm > HNS_RCB_RING_MAX_BD_PER_PKT * buf_size))
449+
if (new_frm > HNS_RCB_RING_MAX_BD_PER_PKT * buf_size)
451450
return -EINVAL;
452451

453452
if (!drv->config_max_frame_length)

drivers/net/ethernet/hisilicon/hns/hns_enet.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
#include "hnae.h"
2424
#include "hns_enet.h"
25+
#include "hns_dsaf_mac.h"
2526

2627
#define NIC_MAX_Q_PER_VF 16
2728
#define HNS_NIC_TX_TIMEOUT (5 * HZ)
@@ -1405,10 +1406,6 @@ static int hns_nic_change_mtu(struct net_device *ndev, int new_mtu)
14051406
struct hnae_handle *h = priv->ae_handle;
14061407
int ret;
14071408

1408-
/* MTU < 68 is an error and causes problems on some kernels */
1409-
if (new_mtu < 68)
1410-
return -EINVAL;
1411-
14121409
if (!h->dev->ops->set_mtu)
14131410
return -ENOTSUPP;
14141411

@@ -1953,14 +1950,20 @@ static int hns_nic_dev_probe(struct platform_device *pdev)
19531950
NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM;
19541951
ndev->vlan_features |= NETIF_F_SG | NETIF_F_GSO | NETIF_F_GRO;
19551952

1953+
/* MTU range: 68 - 9578 (v1) or 9706 (v2) */
1954+
ndev->min_mtu = MAC_MIN_MTU;
19561955
switch (priv->enet_ver) {
19571956
case AE_VERSION_2:
19581957
ndev->features |= NETIF_F_TSO | NETIF_F_TSO6;
19591958
ndev->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM |
19601959
NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_GSO |
19611960
NETIF_F_GRO | NETIF_F_TSO | NETIF_F_TSO6;
1961+
ndev->max_mtu = MAC_MAX_MTU_V2 -
1962+
(ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN);
19621963
break;
19631964
default:
1965+
ndev->max_mtu = MAC_MAX_MTU -
1966+
(ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN);
19641967
break;
19651968
}
19661969

0 commit comments

Comments
 (0)