On Wed, 18 Dec 2024 17:26:02 +0800 Junlong Wang <wang.junlo...@zte.com.cn> wrote:
> +int zxdh_dev_mtu_set(struct rte_eth_dev *dev, uint16_t new_mtu) > +{ > + struct zxdh_hw *hw = dev->data->dev_private; > + struct zxdh_panel_table panel = {0}; > + struct zxdh_port_attr_table vport_att = {0}; > + uint16_t vfid = zxdh_vport_to_vfid(hw->vport); > + uint16_t max_mtu = 0; > + int ret = 0; useless initializations. > + > + max_mtu = ZXDH_MAX_RX_PKTLEN - RTE_ETHER_HDR_LEN - RTE_VLAN_HLEN - > ZXDH_DL_NET_HDR_SIZE; > + if (new_mtu < ZXDH_ETHER_MIN_MTU || new_mtu > max_mtu) { > + PMD_DRV_LOG(ERR, "invalid mtu:%d, range[%d, %d]", > + new_mtu, ZXDH_ETHER_MIN_MTU, max_mtu); > + return -EINVAL; > + } These checks are redundant. See rte_ethdev.c::eth_dev_validate_mtu function. It already checks the mtu against values returned from info_get. > + > + if (dev->data->mtu == new_mtu) > + return 0; This should be done in ethdev_set_mtu but does not look like that is checked. Will look into fixing it there.