Hi, > -----Original Message----- > From: Yigit, Ferruh <ferruh.yi...@intel.com> > Sent: Saturday, July 10, 2021 1:29 > To: Somalapuram Amaranath <asoma...@amd.com>; Ajit Khaparde > <ajit.khapa...@broadcom.com>; Somnath Kotur > <somnath.ko...@broadcom.com>; Rahul Lakkireddy > <rahul.lakkire...@chelsio.com>; Hemant Agrawal > <hemant.agra...@nxp.com>; Sachin Saxena <sachin.sax...@oss.nxp.com>; > Wang, Haiyue <haiyue.w...@intel.com>; Gagandeep Singh > <g.si...@nxp.com>; Ziyang Xuan <xuanziya...@huawei.com>; Xiaoyun > Wang <cloud.wangxiao...@huawei.com>; Guoyang Zhou > <zhouguoy...@huawei.com>; Xing, Beilei <beilei.x...@intel.com>; Wu, > Jingjing <jingjing...@intel.com>; Yang, Qiming <qiming.y...@intel.com>; > Zhang, Qi Z <qi.z.zh...@intel.com>; Xu, Rosen <rosen...@intel.com>; > Shijith Thotton <sthot...@marvell.com>; Srisivasubramanian Srinivasan > <sriniva...@marvell.com>; Heinrich Kuhn > <heinrich.k...@netronome.com>; Harman Kalra <hka...@marvell.com>; > Jerin Jacob <jer...@marvell.com>; Nithin Dabilpuram > <ndabilpu...@marvell.com>; Kiran Kumar K <kirankum...@marvell.com>; > Rasesh Mody <rm...@marvell.com>; Devendra Singh Rawat > <dsinghra...@marvell.com>; Igor Russkikh <irussk...@marvell.com>; > Maciej Czekaj <mcze...@marvell.com>; Jiawen Wu > <jiawe...@trustnetic.com>; Jian Wang <jianw...@trustnetic.com>; > Thomas Monjalon <tho...@monjalon.net>; Andrew Rybchenko > <andrew.rybche...@oktetlabs.ru> > Cc: Yigit, Ferruh <ferruh.yi...@intel.com>; dev@dpdk.org > Subject: [PATCH 3/4] ethdev: move check to library for MTU set > > Move requested MTU value check to the API to prevent the duplicated code. > > Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com> > --- > drivers/net/axgbe/axgbe_ethdev.c | 15 ++++----------- > drivers/net/bnxt/bnxt_ethdev.c | 2 +- > drivers/net/cxgbe/cxgbe_ethdev.c | 13 +------------ > drivers/net/dpaa/dpaa_ethdev.c | 2 -- > drivers/net/dpaa2/dpaa2_ethdev.c | 4 ---- > drivers/net/e1000/em_ethdev.c | 10 ---------- > drivers/net/e1000/igb_ethdev.c | 11 ----------- > drivers/net/enetc/enetc_ethdev.c | 4 ---- > drivers/net/hinic/hinic_pmd_ethdev.c | 8 +------- > drivers/net/i40e/i40e_ethdev.c | 17 ++++------------- > drivers/net/i40e/i40e_ethdev_vf.c | 17 ++++------------- > drivers/net/iavf/iavf_ethdev.c | 10 ++-------- > drivers/net/ice/ice_ethdev.c | 14 +++----------- > drivers/net/igc/igc_ethdev.c | 5 ----- > drivers/net/ipn3ke/ipn3ke_representor.c | 6 ------ > drivers/net/liquidio/lio_ethdev.c | 10 ---------- > drivers/net/nfp/nfp_net.c | 4 ---- > drivers/net/octeontx/octeontx_ethdev.c | 4 ---- > drivers/net/octeontx2/otx2_ethdev_ops.c | 5 ----- > drivers/net/qede/qede_ethdev.c | 12 ------------ > drivers/net/thunderx/nicvf_ethdev.c | 6 ------ > drivers/net/txgbe/txgbe_ethdev.c | 10 ---------- > lib/ethdev/rte_ethdev.c | 9 +++++++++ > 23 files changed, 29 insertions(+), 169 deletions(-) > > diff --git a/drivers/net/axgbe/axgbe_ethdev.c > b/drivers/net/axgbe/axgbe_ethdev.c > index 2960834b4539..c36cd7b1d2f0 100644 > --- a/drivers/net/axgbe/axgbe_ethdev.c > +++ b/drivers/net/axgbe/axgbe_ethdev.c > @@ -1478,25 +1478,18 @@ axgbe_dev_supported_ptypes_get(struct > rte_eth_dev *dev) > > static int axgb_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) { > - struct rte_eth_dev_info dev_info; > struct axgbe_port *pdata = dev->data->dev_private; > - uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + > RTE_ETHER_CRC_LEN; > - unsigned int val = 0; > - axgbe_dev_info_get(dev, &dev_info); > - /* check that mtu is within the allowed range */ > - if (mtu < RTE_ETHER_MIN_MTU || frame_size > > dev_info.max_rx_pktlen) > - return -EINVAL; > + unsigned int val; > + > /* mtu setting is forbidden if port is start */ > if (dev->data->dev_started) { > PMD_DRV_LOG(ERR, "port %d must be stopped before > configuration", > dev->data->port_id); > return -EBUSY; > } > - if (mtu > RTE_ETHER_MTU) > - val = 1; > - else > - val = 0; > + val = mtu > RTE_ETHER_MTU ? 1 : 0; > AXGMAC_IOWRITE_BITS(pdata, MAC_RCR, JE, val); > + > return 0; > } > > diff --git a/drivers/net/bnxt/bnxt_ethdev.c > b/drivers/net/bnxt/bnxt_ethdev.c index 4344a012f06e..1e7da8ba61a6 > 100644 > --- a/drivers/net/bnxt/bnxt_ethdev.c > +++ b/drivers/net/bnxt/bnxt_ethdev.c > @@ -2991,7 +2991,7 @@ int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, > uint16_t new_mtu) > uint32_t overhead = BNXT_MAX_PKT_LEN - BNXT_MAX_MTU; > struct bnxt *bp = eth_dev->data->dev_private; > uint32_t new_pkt_size; > - uint32_t rc = 0; > + uint32_t rc; > uint32_t i; > > rc = is_bnxt_in_error(bp); > diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c > b/drivers/net/cxgbe/cxgbe_ethdev.c > index 0c9cc2f5bb3f..70b879fed100 100644 > --- a/drivers/net/cxgbe/cxgbe_ethdev.c > +++ b/drivers/net/cxgbe/cxgbe_ethdev.c > @@ -301,21 +301,10 @@ int cxgbe_dev_mtu_set(struct rte_eth_dev > *eth_dev, uint16_t mtu) { > struct port_info *pi = eth_dev->data->dev_private; > struct adapter *adapter = pi->adapter; > - struct rte_eth_dev_info dev_info; > - int err; > uint16_t new_mtu = mtu + RTE_ETHER_HDR_LEN + > RTE_ETHER_CRC_LEN; > > - err = cxgbe_dev_info_get(eth_dev, &dev_info); > - if (err != 0) > - return err; > - > - /* Must accommodate at least RTE_ETHER_MIN_MTU */ > - if (mtu < RTE_ETHER_MIN_MTU || new_mtu > > dev_info.max_rx_pktlen) > - return -EINVAL; > - > - err = t4_set_rxmode(adapter, adapter->mbox, pi->viid, new_mtu, -1, > -1, > + return t4_set_rxmode(adapter, adapter->mbox, pi->viid, new_mtu, > -1, > +-1, > -1, -1, true); > - return err; > } > > /* > diff --git a/drivers/net/dpaa/dpaa_ethdev.c > b/drivers/net/dpaa/dpaa_ethdev.c index a444f749bb96..60dd4f67fc26 > 100644 > --- a/drivers/net/dpaa/dpaa_ethdev.c > +++ b/drivers/net/dpaa/dpaa_ethdev.c > @@ -167,8 +167,6 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t > mtu) > > PMD_INIT_FUNC_TRACE(); > > - if (mtu < RTE_ETHER_MIN_MTU || frame_size > > DPAA_MAX_RX_PKT_LEN) > - return -EINVAL; > /* > * Refuse mtu that requires the support of scattered packets > * when this feature has not been enabled before. > diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c > b/drivers/net/dpaa2/dpaa2_ethdev.c > index be2858b3adac..6b44b0557e6a 100644 > --- a/drivers/net/dpaa2/dpaa2_ethdev.c > +++ b/drivers/net/dpaa2/dpaa2_ethdev.c > @@ -1466,10 +1466,6 @@ dpaa2_dev_mtu_set(struct rte_eth_dev *dev, > uint16_t mtu) > return -EINVAL; > } > > - /* check that mtu is within the allowed range */ > - if (mtu < RTE_ETHER_MIN_MTU || frame_size > > DPAA2_MAX_RX_PKT_LEN) > - return -EINVAL; > - > /* Set the Max Rx frame length as 'mtu' + > * Maximum Ethernet header length > */ > diff --git a/drivers/net/e1000/em_ethdev.c > b/drivers/net/e1000/em_ethdev.c index 1b41dd04df5a..6ebef55588bc > 100644 > --- a/drivers/net/e1000/em_ethdev.c > +++ b/drivers/net/e1000/em_ethdev.c > @@ -1788,22 +1788,12 @@ eth_em_default_mac_addr_set(struct > rte_eth_dev *dev, static int eth_em_mtu_set(struct rte_eth_dev *dev, > uint16_t mtu) { > - struct rte_eth_dev_info dev_info; > struct e1000_hw *hw; > uint32_t frame_size; > uint32_t rctl; > - int ret; > - > - ret = eth_em_infos_get(dev, &dev_info); > - if (ret != 0) > - return ret; > > frame_size = mtu + E1000_ETH_OVERHEAD; > > - /* check that mtu is within the allowed range */ > - if (mtu < RTE_ETHER_MIN_MTU || frame_size > > dev_info.max_rx_pktlen) > - return -EINVAL; > - > /* > * If device is started, refuse mtu that requires the support of > * scattered packets when this feature has not been enabled before. > diff --git a/drivers/net/e1000/igb_ethdev.c > b/drivers/net/e1000/igb_ethdev.c index f15774eae20d..fb69210ba9f4 > 100644 > --- a/drivers/net/e1000/igb_ethdev.c > +++ b/drivers/net/e1000/igb_ethdev.c > @@ -4368,9 +4368,7 @@ eth_igb_mtu_set(struct rte_eth_dev *dev, > uint16_t mtu) { > uint32_t rctl; > struct e1000_hw *hw; > - struct rte_eth_dev_info dev_info; > uint32_t frame_size = mtu + E1000_ETH_OVERHEAD; > - int ret; > > hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); > > @@ -4379,15 +4377,6 @@ eth_igb_mtu_set(struct rte_eth_dev *dev, > uint16_t mtu) > if (hw->mac.type == e1000_82571) > return -ENOTSUP; > #endif > - ret = eth_igb_infos_get(dev, &dev_info); > - if (ret != 0) > - return ret; > - > - /* check that mtu is within the allowed range */ > - if (mtu < RTE_ETHER_MIN_MTU || > - frame_size > dev_info.max_rx_pktlen) > - return -EINVAL; > - > /* > * If device is started, refuse mtu that requires the support of > * scattered packets when this feature has not been enabled before. > diff --git a/drivers/net/enetc/enetc_ethdev.c > b/drivers/net/enetc/enetc_ethdev.c > index fbcbbb6c0533..a7372c1787c7 100644 > --- a/drivers/net/enetc/enetc_ethdev.c > +++ b/drivers/net/enetc/enetc_ethdev.c > @@ -662,10 +662,6 @@ enetc_mtu_set(struct rte_eth_dev *dev, uint16_t > mtu) > struct enetc_hw *enetc_hw = &hw->hw; > uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + > RTE_ETHER_CRC_LEN; > > - /* check that mtu is within the allowed range */ > - if (mtu < ENETC_MAC_MINFRM_SIZE || frame_size > > ENETC_MAC_MAXFRM_SIZE) > - return -EINVAL; > - > /* > * Refuse mtu that requires the support of scattered packets > * when this feature has not been enabled before. > diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c > b/drivers/net/hinic/hinic_pmd_ethdev.c > index c1cde811a252..ce0b52c718ab 100644 > --- a/drivers/net/hinic/hinic_pmd_ethdev.c > +++ b/drivers/net/hinic/hinic_pmd_ethdev.c > @@ -1539,17 +1539,11 @@ static void hinic_deinit_mac_addr(struct > rte_eth_dev *eth_dev) static int hinic_dev_set_mtu(struct rte_eth_dev > *dev, uint16_t mtu) { > struct hinic_nic_dev *nic_dev = > HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); > - int ret = 0; > + int ret; > > PMD_DRV_LOG(INFO, "Set port mtu, port_id: %d, mtu: %d, > max_pkt_len: %d", > dev->data->port_id, mtu, > HINIC_MTU_TO_PKTLEN(mtu)); > > - if (mtu < HINIC_MIN_MTU_SIZE || mtu > HINIC_MAX_MTU_SIZE) { > - PMD_DRV_LOG(ERR, "Invalid mtu: %d, must between %d > and %d", > - mtu, HINIC_MIN_MTU_SIZE, > HINIC_MAX_MTU_SIZE); > - return -EINVAL; > - } > - > ret = hinic_set_port_mtu(nic_dev->hwdev, mtu); > if (ret) { > PMD_DRV_LOG(ERR, "Set port mtu failed, ret: %d", ret); diff > --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c > index c5058f26dff2..dad151eac5f1 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -11754,25 +11754,16 @@ static int i40e_set_default_mac_addr(struct > rte_eth_dev *dev, } > > static int > -i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > +i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused) > { > - struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data- > >dev_private); > - struct rte_eth_dev_data *dev_data = pf->dev_data; > - uint32_t frame_size = mtu + I40E_ETH_OVERHEAD; > - int ret = 0; > - > - /* check if mtu is within the allowed range */ > - if (mtu < RTE_ETHER_MIN_MTU || frame_size > > I40E_FRAME_SIZE_MAX) > - return -EINVAL; > - > /* mtu setting is forbidden if port is start */ > - if (dev_data->dev_started) { > + if (dev->data->dev_started) { > PMD_DRV_LOG(ERR, "port %d must be stopped before > configuration", > - dev_data->port_id); > + dev->data->port_id); > return -EBUSY; > } > > - return ret; > + return 0; > } > > /* Restore ethertype filter */ > diff --git a/drivers/net/i40e/i40e_ethdev_vf.c > b/drivers/net/i40e/i40e_ethdev_vf.c > index 2015a86ba5ca..f7f9d44ef181 100644 > --- a/drivers/net/i40e/i40e_ethdev_vf.c > +++ b/drivers/net/i40e/i40e_ethdev_vf.c > @@ -2866,25 +2866,16 @@ i40evf_dev_rss_hash_conf_get(struct > rte_eth_dev *dev, } > > static int > -i40evf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > +i40evf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused) > { > - struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data- > >dev_private); > - struct rte_eth_dev_data *dev_data = vf->dev_data; > - uint32_t frame_size = mtu + I40E_ETH_OVERHEAD; > - int ret = 0; > - > - /* check if mtu is within the allowed range */ > - if (mtu < RTE_ETHER_MIN_MTU || frame_size > > I40E_FRAME_SIZE_MAX) > - return -EINVAL; > - > /* mtu setting is forbidden if port is start */ > - if (dev_data->dev_started) { > + if (dev->data->dev_started) { > PMD_DRV_LOG(ERR, "port %d must be stopped before > configuration", > - dev_data->port_id); > + dev->data->port_id); > return -EBUSY; > } > > - return ret; > + return 0; > } > > static int > diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c > index ba5be45e8c5e..049671ef3da9 100644 > --- a/drivers/net/iavf/iavf_ethdev.c > +++ b/drivers/net/iavf/iavf_ethdev.c > @@ -1432,21 +1432,15 @@ iavf_dev_rss_hash_conf_get(struct rte_eth_dev > *dev, } > > static int > -iavf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > +iavf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused) > { > - uint32_t frame_size = mtu + IAVF_ETH_OVERHEAD; > - int ret = 0; > - > - if (mtu < RTE_ETHER_MIN_MTU || frame_size > > IAVF_FRAME_SIZE_MAX) > - return -EINVAL; > - > /* mtu setting is forbidden if port is start */ > if (dev->data->dev_started) { > PMD_DRV_LOG(ERR, "port must be stopped before > configuration"); > return -EBUSY; > } > > - return ret; > + return 0; > } > > static int > diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c > index 502e410b5641..c1a96d3de183 100644 > --- a/drivers/net/ice/ice_ethdev.c > +++ b/drivers/net/ice/ice_ethdev.c > @@ -3788,21 +3788,13 @@ ice_dev_set_link_down(struct rte_eth_dev > *dev) } > > static int > -ice_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > +ice_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused) > { > - struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data- > >dev_private); > - struct rte_eth_dev_data *dev_data = pf->dev_data; > - uint32_t frame_size = mtu + ICE_ETH_OVERHEAD; > - > - /* check if mtu is within the allowed range */ > - if (mtu < RTE_ETHER_MIN_MTU || frame_size > > ICE_FRAME_SIZE_MAX) > - return -EINVAL; > - > /* mtu setting is forbidden if port is start */ > - if (dev_data->dev_started) { > + if (dev->data->dev_started) { > PMD_DRV_LOG(ERR, > "port %d must be stopped before configuration", > - dev_data->port_id); > + dev->data->port_id); > return -EBUSY; > } > > diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c index > dcbc26b8186e..e279ae1fff1d 100644 > --- a/drivers/net/igc/igc_ethdev.c > +++ b/drivers/net/igc/igc_ethdev.c > @@ -1576,11 +1576,6 @@ eth_igc_mtu_set(struct rte_eth_dev *dev, > uint16_t mtu) > if (IGC_READ_REG(hw, IGC_CTRL_EXT) & IGC_CTRL_EXT_EXT_VLAN) > frame_size += VLAN_TAG_SIZE; > > - /* check that mtu is within the allowed range */ > - if (mtu < RTE_ETHER_MIN_MTU || > - frame_size > MAX_RX_JUMBO_FRAME_SIZE) > - return -EINVAL; > - > /* > * If device is started, refuse mtu that requires the support of > * scattered packets when this feature has not been enabled before. > diff --git a/drivers/net/ipn3ke/ipn3ke_representor.c > b/drivers/net/ipn3ke/ipn3ke_representor.c > index e8a33f04bd69..377b96c0236a 100644 > --- a/drivers/net/ipn3ke/ipn3ke_representor.c > +++ b/drivers/net/ipn3ke/ipn3ke_representor.c > @@ -2778,12 +2778,6 @@ ipn3ke_rpst_mtu_set(struct rte_eth_dev > *ethdev, uint16_t mtu) > int ret = 0; > struct ipn3ke_rpst *rpst = IPN3KE_DEV_PRIVATE_TO_RPST(ethdev); > struct rte_eth_dev_data *dev_data = ethdev->data; > - uint32_t frame_size = mtu + IPN3KE_ETH_OVERHEAD; > - > - /* check if mtu is within the allowed range */ > - if (mtu < RTE_ETHER_MIN_MTU || > - frame_size > IPN3KE_MAC_FRAME_SIZE_MAX) > - return -EINVAL; > > /* mtu setting is forbidden if port is start */ > /* make sure NIC port is stopped */
Reviewed-by: Rosen Xu <rosen...@intel.com>