ether: Fix MTU control variables
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 1 Nov 2017 23:08:45 +0000 (19:08 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Nov 2017 15:46:55 +0000 (10:46 -0500)
Plan 9 had maxmtu, but it was pretty much used as 'what is the current
MTU", not "what is the highest MTU we can have."  I had been spatching
Linux drivers from mtu -> maxmtu.

Instead, let's name the MTU we're using 'mtu' (like Linux).  We'll have
max_mtu and min_mtu, which are the highest and lowest possible settings.

Mostly this is a revert of commit a73aedb3c118 ("BNX2X: spatch ether->mtu
-> ether->maxmtu"), manually changing the mlx4 driver, and all of the
renames.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/drivers/dev/ether.c
kern/drivers/net/bnx2x/bnx2x_cmn.c
kern/drivers/net/bnx2x/bnx2x_ethtool.c
kern/drivers/net/bnx2x/bnx2x_main.c
kern/drivers/net/bnx2x/bnx2x_vfpf.c
kern/drivers/net/ether82563.c
kern/drivers/net/mlx4/en_netdev.c
kern/drivers/net/mlx4/en_rx.c
kern/include/net/ip.h
scripts/spatch/linux/scalar.cocci

index 21db7e5..bd059d6 100644 (file)
@@ -86,7 +86,7 @@ struct chan *etherattach(char *spec)
                nexterror();
        }
        if (vlanid) {
-               if (ether->maxmtu < ETHERMAXTU + 4)
+               if (ether->max_mtu < ETHERMAXTU + 4)
                        error(EFAIL, "interface cannot support 802.1 tags");
                vlan = vlanalloc(ether, vlanid);
                chan = devattach(devname(), spec);
@@ -440,8 +440,8 @@ static int etheroq(struct ether *ether, struct block *bp)
                ether = ether->ctlr;
        }
 
-       if ((ether->feat & NETF_PADMIN) == 0 && BLEN(bp) < ether->minmtu)
-               bp = adjustblock(bp, ether->minmtu);
+       if ((ether->feat & NETF_PADMIN) == 0 && BLEN(bp) < ether->min_mtu)
+               bp = adjustblock(bp, ether->min_mtu);
 
        qbwrite(ether->oq, bp);
        if (ether->transmit != NULL)
@@ -492,7 +492,7 @@ static long etherwrite(struct chan *chan, void *buf, long n, int64_t unused)
                error(EINVAL, ERROR_FIXME);
        }
 
-       if (n > ether->maxmtu + ETHERHDRSIZE)
+       if (n > ether->mtu + ETHERHDRSIZE)
                error(E2BIG, ERROR_FIXME);
        bp = block_alloc(n, MEM_WAIT);
        if (waserror()) {
@@ -534,7 +534,7 @@ static long etherbwrite(struct chan *chan, struct block *bp, uint32_t unused)
                runlock(&ether->rwlock);
                nexterror();
        }
-       if (n > ether->maxmtu + ETHERHDRSIZE && (bp->flag & Btso) == 0) {
+       if (n > ether->mtu + ETHERHDRSIZE && (bp->flag & Btso) == 0) {
                freeb(bp);
                error(E2BIG, ERROR_FIXME);
        }
@@ -629,8 +629,9 @@ static struct ether *vlanalloc(struct ether *ether, int id)
        vlan->mbps = ether->mbps;
        vlan->fullduplex = ether->fullduplex;
        vlan->encry = ether->encry;
-       vlan->minmtu = ether->minmtu;
-       vlan->maxmtu = ether->maxmtu;
+       vlan->mtu = ether->mtu;
+       vlan->min_mtu = ether->min_mtu;
+       vlan->max_mtu = ether->max_mtu;
        vlan->ctlrno = ether->ctlrno;
        vlan->vlanid = id;
        vlan->alen = Eaddrlen;
@@ -696,8 +697,9 @@ static void etherreset(void)
                qlock_init(&ether->vlq);
                ether->ctlrno = ctlrno;
                ether->mbps = 10;
-               ether->minmtu = ETHERMINTU;
-               ether->maxmtu = ETHERMAXTU;
+               ether->mtu = ETHERMAXTU;
+               ether->min_mtu = ETHERMINTU;
+               ether->max_mtu = ETHERMAXTU;
                /* looked like irq type, we don't have these yet */
                //ether->netif.itype = -1;
 
index 4ab1d1e..9ee6d74 100644 (file)
@@ -1004,7 +1004,7 @@ static int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
                 */
                /* TODO: AKAROS_PORT always copy out the packet for now. */
                if (1) {
-//             if ((bp->dev->maxmtu > ETH_MAX_PACKET_SIZE) &&
+//             if ((bp->dev->mtu > ETH_MAX_PACKET_SIZE) &&
 //                 (len <= RX_COPY_THRESH)) {
                        block = block_alloc(len, MEM_ATOMIC);
                        if (block == NULL) {
@@ -1391,7 +1391,7 @@ void bnx2x_init_rx_rings(struct bnx2x *bp)
                struct bnx2x_fastpath *fp = &bp->fp[j];
 
                DP(NETIF_MSG_IFUP,
-                  "mtu %d  rx_buf_size %d\n", bp->dev->maxmtu, fp->rx_buf_size);
+                  "mtu %d  rx_buf_size %d\n", bp->dev->mtu, fp->rx_buf_size);
 
                if (!fp->disable_tpa) {
                        /* Fill the per-aggregation pool */
@@ -2057,7 +2057,7 @@ static void bnx2x_set_rx_buf_size(struct bnx2x *bp)
                         */
                        mtu = BNX2X_FCOE_MINI_JUMBO_MTU;
                else
-                       mtu = bp->dev->maxmtu;
+                       mtu = bp->dev->mtu;
                /* AKAROS_PORT XME struct block alignment and size issues? */
                fp->rx_buf_size = BNX2X_FW_RX_ALIGN_START +
                                  IP_HEADER_ALIGNMENT_PADDING +
@@ -2526,7 +2526,7 @@ static void bnx2x_bz_fp(struct bnx2x *bp, int index)
         */
        fp->disable_tpa = !(bp->flags & TPA_ENABLE_FLAG ||
                                  (bp->flags & GRO_ENABLE_FLAG &&
-                                  bnx2x_mtu_allows_gro(bp->dev->maxmtu)));
+                                  bnx2x_mtu_allows_gro(bp->dev->mtu)));
        if (bp->flags & TPA_ENABLE_FLAG)
                fp->mode = TPA_MODE_LRO;
        else if (bp->flags & GRO_ENABLE_FLAG)
@@ -4888,7 +4888,7 @@ int bnx2x_change_mtu(struct ether *dev, int new_mtu)
         * because the actual alloc size is
         * only updated as part of load
         */
-       dev->maxmtu = new_mtu;
+       dev->mtu = new_mtu;
 
        return bnx2x_reload_if_running(dev);
 }
index 176b6e9..5fdc5e1 100644 (file)
@@ -2448,8 +2448,8 @@ panic("Not implemented");
        }
 
        /* prepare the loopback packet */
-       pkt_size = (((bp->dev->maxmtu < ETH_MAX_PACKET_SIZE) ?
-                    bp->dev->maxmtu : ETH_MAX_PACKET_SIZE) + ETHERHDRSIZE);
+       pkt_size = (((bp->dev->mtu < ETH_MAX_PACKET_SIZE) ?
+                    bp->dev->mtu : ETH_MAX_PACKET_SIZE) + ETHERHDRSIZE);
        skb = netdev_alloc_skb(bp->dev, fp_rx->rx_buf_size);
        if (!skb) {
                DP(BNX2X_MSG_ETHTOOL, "Can't allocate skb\n");
index e4cf3f9..2ed2c12 100644 (file)
@@ -2306,7 +2306,7 @@ static void bnx2x_set_requested_fc(struct bnx2x *bp)
         * It is recommended to turn off RX FC for jumbo frames
         *  for better performance
         */
-       if (CHIP_IS_E1x(bp) && (bp->dev->maxmtu > 5000))
+       if (CHIP_IS_E1x(bp) && (bp->dev->mtu > 5000))
                bp->link_params.req_fc_auto_adv = BNX2X_FLOW_CTRL_TX;
        else
                bp->link_params.req_fc_auto_adv = BNX2X_FLOW_CTRL_BOTH;
@@ -3160,7 +3160,7 @@ static void bnx2x_pf_q_prep_general(struct bnx2x *bp,
        if (IS_FCOE_FP(fp))
                gen_init->mtu = BNX2X_FCOE_MINI_JUMBO_MTU;
        else
-               gen_init->mtu = bp->dev->maxmtu;
+               gen_init->mtu = bp->dev->mtu;
 
        gen_init->cos = cos;
 
@@ -3186,7 +3186,7 @@ static void bnx2x_pf_rx_q_prep(struct bnx2x *bp,
 
                /* TODO XME this is based on MAX_SKB_FRAGS */
                tpa_agg_size = TPA_AGG_SIZE;
-               max_sge = SGE_PAGE_ALIGN(bp->dev->maxmtu) >>
+               max_sge = SGE_PAGE_ALIGN(bp->dev->mtu) >>
                        SGE_PAGE_SHIFT;
                max_sge = ((max_sge + PAGES_PER_SGE - 1) &
                          (~(PAGES_PER_SGE-1))) >> PAGES_PER_SGE_SHIFT;
@@ -3396,7 +3396,7 @@ panic("Not implemented");
                                DRV_INFO_ETH_STAT_NUM_MACS_REQUIRED,
                                ether_stat->mac_local + MAC_PAD, MAC_PAD,
                                Eaddrlen);
-       ether_stat->mtu_size = bp->dev->maxmtu;
+       ether_stat->mtu_size = bp->dev->mtu;
        if (bp->dev->feat & NETIF_F_RXCSUM)
                ether_stat->feature_flags |= FEATURE_ETH_CHKSUM_OFFLOAD_MASK;
        if (bp->dev->feat & NETIF_F_TSO)
@@ -7519,11 +7519,11 @@ static int bnx2x_init_hw_port(struct bnx2x *bp)
 
                if (IS_MF(bp))
                        low = ((bp->flags & ONE_PORT_FLAG) ? 160 : 246);
-               else if (bp->dev->maxmtu > 4096) {
+               else if (bp->dev->mtu > 4096) {
                        if (bp->flags & ONE_PORT_FLAG)
                                low = 160;
                        else {
-                               val = bp->dev->maxmtu;
+                               val = bp->dev->mtu;
                                /* (24*1024 + val*4)/256 */
                                low = 96 + (val/64) +
                                                ((val % 64) ? 1 : 0);
index f982518..d4dfba5 100644 (file)
@@ -624,11 +624,11 @@ int bnx2x_vfpf_setup_q(struct bnx2x *bp, struct bnx2x_fastpath *fp,
        req->rxq.vf_sb = fp_idx;
        req->rxq.sb_index = HC_INDEX_ETH_RX_CQ_CONS;
        req->rxq.hc_rate = bp->rx_ticks ? 1000000/bp->rx_ticks : 0;
-       req->rxq.mtu = bp->dev->maxmtu;
+       req->rxq.mtu = bp->dev->mtu;
        req->rxq.buf_sz = fp->rx_buf_size;
        req->rxq.sge_buf_sz = BCM_PAGE_SIZE * PAGES_PER_SGE;
        req->rxq.tpa_agg_sz = tpa_agg_size;
-       req->rxq.max_sge_pkt = SGE_PAGE_ALIGN(bp->dev->maxmtu) >> SGE_PAGE_SHIFT;
+       req->rxq.max_sge_pkt = SGE_PAGE_ALIGN(bp->dev->mtu) >> SGE_PAGE_SHIFT;
        req->rxq.max_sge_pkt = ((req->rxq.max_sge_pkt + PAGES_PER_SGE - 1) &
                          (~(PAGES_PER_SGE-1))) >> PAGES_PER_SGE_SHIFT;
        req->rxq.flags = flags;
index 4af5e97..6fdb805 100644 (file)
@@ -2211,7 +2211,8 @@ static int pnp(struct ether *edev, int type)
        edev->irq = ctlr->pcidev->irqline;
        edev->tbdf = pci_to_tbdf(ctlr->pcidev);
        edev->mbps = 1000;
-       edev->maxmtu = ctlr->rbsz - ETHERHDRSIZE;
+       edev->max_mtu = ctlr->rbsz - ETHERHDRSIZE;
+       edev->mtu = edev->mtu;
        memmove(edev->ea, ctlr->ra, Eaddrlen);
 
        /*
index 55b34ad..feeee2f 100644 (file)
@@ -1358,7 +1358,7 @@ static void mlx4_en_set_default_moderation(struct mlx4_en_priv *priv)
        priv->tx_frames = MLX4_EN_TX_COAL_PKTS;
        priv->tx_usecs = MLX4_EN_TX_COAL_TIME;
        en_dbg(INTR, priv, "Default coalesing params for mtu:%d - rx_frames:%d rx_usecs:%d\n",
-              priv->dev->maxmtu, priv->rx_frames, priv->rx_usecs);
+              priv->dev->mtu, priv->rx_frames, priv->rx_usecs);
 
        /* Setup cq moderation params */
        for (i = 0; i < priv->rx_ring_num; i++) {
@@ -1578,7 +1578,7 @@ int mlx4_en_start_port(struct ether *dev)
 #endif
 
        /* Calculate Rx buf size */
-       dev->maxmtu = MIN(dev->maxmtu, priv->max_mtu);
+       dev->mtu = MIN(dev->mtu, priv->max_mtu);
        mlx4_en_calc_rx_buf(dev);
        en_dbg(DRV, priv, "Rx buf size:%d\n", priv->rx_skb_size);
 
@@ -2140,13 +2140,13 @@ static int mlx4_en_change_mtu(struct ether *dev, int new_mtu)
        int err = 0;
 
        en_dbg(DRV, priv, "Change MTU called - current:%d new:%d\n",
-                dev->maxmtu, new_mtu);
+                dev->mtu, new_mtu);
 
        if ((new_mtu < MLX4_EN_MIN_MTU) || (new_mtu > priv->max_mtu)) {
                en_err(priv, "Bad MTU size:%d.\n", new_mtu);
                return -EPERM;
        }
-       dev->maxmtu = new_mtu;
+       dev->mtu = new_mtu;
 
        if (netif_running(dev)) {
                qlock(&mdev->state_lock);
index d3d096b..bd3b015 100644 (file)
@@ -1154,7 +1154,7 @@ static const int frag_sizes[] = {
 void mlx4_en_calc_rx_buf(struct ether *dev)
 {
        struct mlx4_en_priv *priv = netdev_priv(dev);
-       int eff_mtu = dev->maxmtu + ETHERHDRSIZE + VLAN_HLEN;
+       int eff_mtu = dev->mtu + ETHERHDRSIZE + VLAN_HLEN;
        int buf_size = 0;
        int i = 0;
 
index 2f0a0f2..3ef39c2 100644 (file)
@@ -1070,8 +1070,9 @@ struct ether {
        int irq;
        unsigned int tbdf;
        int port;
-       int minmtu;
-       int maxmtu;
+       int mtu;
+       int min_mtu;
+       int max_mtu;
        uint8_t ea[Eaddrlen];
        int encry;
 
index fde2a85..8eff47a 100644 (file)
@@ -153,13 +153,6 @@ expression E;
 @@
 -p->hw_enc_features = E;
 
-// yes, that's a max max trans unit...
-@@
-struct ether *p;
-@@
--p->mtu
-+p->maxmtu
-
 @@
 struct ether *p;
 @@