[dpdk-dev] [PATCH v6] net/virtio: add set_mtu in virtio

Stephen Hemminger stephen at networkplumber.org
Thu Sep 22 01:22:13 CEST 2016


On Wed, 21 Sep 2016 19:11:47 -0400
Dey <sodey at sonusnet.com> wrote:

>  
> +
> +#define VLAN_TAG_SIZE           4    /* 802.3ac tag (not DMA'd) */
> +
> +static int virtio_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
> +{
> +       struct rte_eth_dev_info dev_info;
> +       uint32_t ether_hdr_len = ETHER_HDR_LEN + ETHER_CRC_LEN + VLAN_TAG_SIZE;
> +       uint32_t frame_size = mtu + ether_hdr_len;
> +
> +       virtio_dev_info_get(dev, &dev_info);
> +
> +       if (mtu < ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen) {
> +               PMD_INIT_LOG(ERR, "MTU should be between %d and %d\n",
> +                               ETHER_MIN_MTU,
> +                               (dev_info.max_rx_pktlen - ether_hdr_len));
> +               return -EINVAL;
> +       }
> +       return 0;
> +}

I am fine with the general idea of this patch but:
  1. Calling virtio_dev_info_get is needlessly wasteful when all you want
     is to access the max packet length. Since max_rx_pktlen is always
     VIRTIO_MAX_RX_PKTLEN, please just use that.

  2. Defining VLAN_TAG_SIZE is irrelevant if doing vlan offload.

  3. Virtio doesn't insert CRC, therefore CRC_LEN is irrelevant



More information about the dev mailing list