On 8/23/2019 2:46 PM, Wei Hu (Xavier) wrote: > This patch adds the following operations defined in struct eth_dev_ops: > mtu_set, infos_get and fw_version_get for hns3 PMD driver. > > Signed-off-by: Wei Hu (Xavier) <xavier.hu...@huawei.com> > Signed-off-by: Chunsong Feng <fengchuns...@huawei.com> > Signed-off-by: Min Hu (Connor) <humi...@huawei.com> > Signed-off-by: Hao Chen <chenhao...@huawei.com> > Signed-off-by: Huisong Li <lihuis...@huawei.com> > --- > drivers/net/hns3/hns3_ethdev.c | 137 > ++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 136 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c > index 44e21ac..ced9348 100644 > --- a/drivers/net/hns3/hns3_ethdev.c > +++ b/drivers/net/hns3/hns3_ethdev.c > @@ -40,6 +40,8 @@ > int hns3_logtype_init; > int hns3_logtype_driver; > > +static int hns3_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); > +
This forward deceleration is not needed. > static int > hns3_config_tso(struct hns3_hw *hw, unsigned int tso_mss_min, > unsigned int tso_mss_max) > @@ -1000,6 +1002,131 @@ hns3_config_mtu(struct hns3_hw *hw, uint16_t mps) > } > > static int > +hns3_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > +{ > + struct hns3_adapter *hns = dev->data->dev_private; > + uint32_t frame_size = mtu + HNS3_ETH_OVERHEAD; > + struct hns3_hw *hw = &hns->hw; > + bool is_jumbo_frame; > + int ret; > + > + if (mtu < RTE_ETHER_MIN_MTU || frame_size > HNS3_MAX_FRAME_LEN) { > + hns3_err(hw, "Failed to set mtu, mtu(%u) invalid. valid " > + "range: %d~%d", mtu, RTE_ETHER_MIN_MTU, HNS3_MAX_MTU); > + return -EINVAL; > + } If 'hns3_dev_infos_get()' sets 'min_mtu' & 'max_mtu' properly, above check will be done by 'rte_eth_dev_set_mtu()' already. <...> > +static void > +hns3_dev_infos_get(struct rte_eth_dev *eth_dev, struct rte_eth_dev_info > *info) > +{ > + struct hns3_adapter *hns = eth_dev->data->dev_private; > + struct hns3_hw *hw = &hns->hw; > + > + info->max_rx_queues = hw->tqps_num; > + info->max_tx_queues = hw->tqps_num; > + info->max_rx_pktlen = HNS3_MAX_FRAME_LEN; /* CRC included */ > + info->min_rx_bufsize = hw->rx_buf_len; > + info->max_mac_addrs = HNS3_UC_MACADDR_NUM; > + info->max_mtu = info->max_rx_pktlen - HNS3_ETH_OVERHEAD; > + info->min_mtu = RTE_ETHER_MIN_MTU; 'RTE_ETHER_MIN_MTU' is default value and can be skipped. <...> > @@ -2394,6 +2521,9 @@ hns3_dev_close(struct rte_eth_dev *eth_dev) > > static const struct eth_dev_ops hns3_eth_dev_ops = { > .dev_close = hns3_dev_close, > + .mtu_set = hns3_dev_mtu_set, > + .dev_infos_get = hns3_dev_infos_get, > + .fw_version_get = hns3_fw_version_get, Can you please update .ini file in this patch and mark following features as supported: MTU update FW version