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


Reply via email to