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