From: Jiawen Wu Date: Thu, 29 Apr 2021 10:33:32 +0000 (+0800) Subject: net/txgbe: fix MTU limitation for VF X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=89d2a1061df5b874a41739b146693b0d542aebd4;p=dpdk.git net/txgbe: fix MTU limitation for VF When requested MTU is bigger than mbuf size and scattered Rx is not enabled, setting MTU fails for VF. But scattered Rx can be enabled in next port start if required, so enabling setting MTU bigger than mbuf size if device is stopped independent from scattered Rx configuration. Fixes: a2beaa4a769e ("net/txgbe: support VF MTU update") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- diff --git a/drivers/net/txgbe/txgbe_ethdev_vf.c b/drivers/net/txgbe/txgbe_ethdev_vf.c index 3a5123733e..5597968e18 100644 --- a/drivers/net/txgbe/txgbe_ethdev_vf.c +++ b/drivers/net/txgbe/txgbe_ethdev_vf.c @@ -1115,7 +1115,7 @@ txgbevf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) { struct txgbe_hw *hw; uint32_t max_frame = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN; - struct rte_eth_rxmode *rx_conf = &dev->data->dev_conf.rxmode; + struct rte_eth_dev_data *dev_data = dev->data; hw = TXGBE_DEV_HW(dev); @@ -1123,13 +1123,15 @@ txgbevf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) max_frame > RTE_ETHER_MAX_JUMBO_FRAME_LEN) return -EINVAL; - /* refuse mtu that requires the support of scattered packets when this - * feature has not been enabled before. + /* If device is started, refuse mtu that requires the support of + * scattered packets when this feature has not been enabled before. */ - if (!(rx_conf->offloads & DEV_RX_OFFLOAD_SCATTER) && + if (dev_data->dev_started && !dev_data->scattered_rx && (max_frame + 2 * TXGBE_VLAN_TAG_SIZE > - dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM)) + dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM)) { + PMD_INIT_LOG(ERR, "Stop port first."); return -EINVAL; + } /* * When supported by the underlying PF driver, use the TXGBE_VF_SET_MTU