All of lore.kernel.org
 help / color / mirror / Atom feed
From: "lihuisong (C)" <lihuisong@huawei.com>
To: David Marchand <david.marchand@redhat.com>
Cc: dev <dev@dpdk.org>, "Yigit, Ferruh" <ferruh.yigit@intel.com>,
	"Min Hu (Connor)" <humin29@huawei.com>
Subject: Re: [dpdk-dev] [PATCH V1 2/2] examples/ethtool: support the query of MTU
Date: Thu, 18 Nov 2021 10:58:12 +0800	[thread overview]
Message-ID: <6895707a-5c68-32d1-1776-9570e4c41823@huawei.com> (raw)
In-Reply-To: <CAJFAV8w4tZBygxr9grncFZZFHT7o5TOQA7YEpzD2xCKZXnpLWA@mail.gmail.com>


在 2021/11/18 1:51, David Marchand 写道:
> On Thu, Apr 29, 2021 at 12:53 PM Min Hu (Connor) <humin29@huawei.com> wrote:
>> From: Huisong Li <lihuisong@huawei.com>
>>
>> This patch supports the query of MTU.
>>
>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>> ---
>>   examples/ethtool/ethtool-app/ethapp.c | 48 +++++++++++++++++++++++++----------
>>   examples/ethtool/lib/rte_ethtool.c    |  7 +++++
>>   examples/ethtool/lib/rte_ethtool.h    | 14 ++++++++++
>>   3 files changed, 56 insertions(+), 13 deletions(-)
>>
>> diff --git a/examples/ethtool/ethtool-app/ethapp.c b/examples/ethtool/ethtool-app/ethapp.c
>> index fc743ce..aed4bc5 100644
>> --- a/examples/ethtool/ethtool-app/ethapp.c
>> +++ b/examples/ethtool/ethtool-app/ethapp.c
>> @@ -517,31 +517,41 @@ pcmd_macaddr_callback(void *ptr_params,
>>   static void
>>   pcmd_mtu_callback(void *ptr_params,
>>          __rte_unused struct cmdline *ctx,
>> -       __rte_unused void *ptr_data)
>> +       void *ptr_data)
>>   {
>>          struct pcmd_intstr_params *params = ptr_params;
>>          int stat;
>>          uint16_t new_mtu;
>>          char *ptr_parse_end;
>>
>> -       new_mtu = strtoul(params->opt, &ptr_parse_end, 10);
>> -       if (*ptr_parse_end != '\0' ||
>> -                       new_mtu < RTE_ETHER_MIN_MTU ||
>> -                       new_mtu > RTE_ETHER_MAX_JUMBO_FRAME_LEN) {
>> -               printf("Port %i: Invalid MTU value\n", params->port);
>> +       if (ptr_data == NULL) {
>> +               new_mtu = strtoul(params->opt, &ptr_parse_end, 10);
>> +               if (*ptr_parse_end != '\0' ||
>> +                               new_mtu < RTE_ETHER_MIN_MTU ||
>> +                               new_mtu > RTE_ETHER_MAX_JUMBO_FRAME_LEN) {
>> +                       printf("Port %i: Invalid MTU value\n", params->port);
>> +                       return;
>> +               }
>> +               stat = rte_ethtool_net_change_mtu(params->port, new_mtu);
>> +               if (stat == 0)
>> +                       printf("Port %i: MTU set to %i\n", params->port,
>> +                               new_mtu);
>> +               else if (stat == -ENOTSUP)
>> +                       printf("Port %i: Operation not supported\n",
>> +                               params->port);
>> +               else
>> +                       printf("Port %i: Error setting MTU\n", params->port);
>> +
>>                  return;
>>          }
>> -       stat = rte_ethtool_net_change_mtu(params->port, new_mtu);
>> -       if (stat == 0)
>> -               printf("Port %i: MTU set to %i\n", params->port, new_mtu);
>> -       else if (stat == -ENOTSUP)
>> +
>> +       stat = rte_ethtool_net_get_mtu(params->port, &new_mtu);
>> +       if (stat)
>>                  printf("Port %i: Operation not supported\n", params->port);
>>          else
>> -               printf("Port %i: Error setting MTU\n", params->port);
>> +               printf("Port %i: Current MTU: %i\n", params->port, new_mtu);
>>   }
>
> Please separate as two helpers, there is no code shared between set
> and get, afaics.
>
The main purpose of my modification is to be consistent with other 
command styles.

Like: pcmd_ringparam & pcmd_ringparam_set and pcmd_macaddr & 
pcmd_macaddr_get.

Do you mean to use a separate interface to implement MTU query?

>> -
>> -
>>   static void pcmd_portstats_callback(__rte_unused void *ptr_params,
>>          __rte_unused struct cmdline *ctx,
>>          __rte_unused void *ptr_data)
>> @@ -799,6 +809,17 @@ cmdline_parse_inst_t pcmd_macaddr = {
>>                  NULL
>>          },
>>   };
>> +cmdline_parse_inst_t pcmd_mtu_get = {
>> +       .f = pcmd_mtu_callback,
>> +       .data = (void *)0x01,
>> +       .help_str = "mtu <port_id>\n"
>> +               "     Get MTU",
>> +       .tokens = {
>> +               (void *)&pcmd_mtu_token_cmd,
>> +               (void *)&pcmd_intstr_token_port,
>> +               NULL
>> +       },
>> +};
>>   cmdline_parse_inst_t pcmd_mtu = {
>>          .f = pcmd_mtu_callback,
>>          .data = NULL,
>> @@ -879,6 +900,7 @@ cmdline_parse_ctx_t list_prompt_commands[] = {
>>          (cmdline_parse_inst_t *)&pcmd_link,
>>          (cmdline_parse_inst_t *)&pcmd_macaddr_get,
>>          (cmdline_parse_inst_t *)&pcmd_macaddr,
>> +       (cmdline_parse_inst_t *)&pcmd_mtu_get,
>>          (cmdline_parse_inst_t *)&pcmd_mtu,
>>          (cmdline_parse_inst_t *)&pcmd_open,
>>          (cmdline_parse_inst_t *)&pcmd_pause_noopt,
>> diff --git a/examples/ethtool/lib/rte_ethtool.c b/examples/ethtool/lib/rte_ethtool.c
>> index 73193ed..e69b2c1 100644
>> --- a/examples/ethtool/lib/rte_ethtool.c
>> +++ b/examples/ethtool/lib/rte_ethtool.c
>> @@ -345,6 +345,13 @@ rte_ethtool_net_validate_addr(uint16_t port_id __rte_unused,
>>          return rte_is_valid_assigned_ether_addr(addr);
>>   }
>>
>> +int
>> +rte_ethtool_net_get_mtu(uint16_t port_id, uint16_t *mtu)
>> +{
>> +       RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
>> +
>> +       return rte_eth_dev_get_mtu(port_id, mtu);
>> +}
>>
>>   int
>>   rte_ethtool_net_change_mtu(uint16_t port_id, uint16_t mtu)
>> diff --git a/examples/ethtool/lib/rte_ethtool.h b/examples/ethtool/lib/rte_ethtool.h
>> index fe3250e..434ad1d 100644
>> --- a/examples/ethtool/lib/rte_ethtool.h
>> +++ b/examples/ethtool/lib/rte_ethtool.h
>> @@ -23,6 +23,7 @@
>>    * rte_ethtool_net_stop:            net_device_ops::ndo_stop
>>    * rte_ethtool_net_set_mac_addr:    net_device_ops::ndo_set_mac_address
>>    * rte_ethtool_net_validate_addr:   net_device_ops::ndo_validate_addr
>> + * rte_ethtool_net_get_mtu:         net_device_ops::ndo_get_mtu
>>    * rte_ethtool_net_change_mtu:      net_device_ops::ndo_change_mtu
>>    * rte_ethtool_net_get_stats64:     net_device_ops::ndo_get_stats64
>>    * rte_ethtool_net_vlan_rx_add_vid  net_device_ops::ndo_vlan_rx_add_vid
>> @@ -296,6 +297,19 @@ int rte_ethtool_net_validate_addr(uint16_t port_id,
>>                                  struct rte_ether_addr *addr);
>>
>>   /**
>> + * Retrieve the MTU of an Ethernet device.
>> + *
>> + * @param port_id
>> + *   The port identifier of the Ethernet device.
>> + * @param mtu
>> + *   A pointer to a uint16_t where the retrieved MTU is to be stored.
>> + * @return
>> + *   - (0) if successful.
>> + *   - (-ENODEV) if *port_id* invalid.
>> + */
>> +int rte_ethtool_net_get_mtu(uint16_t port_id, uint16_t *mtu);
>> +
>> +/**
>>    * Setting the Ethernet device maximum Tx unit.
>>    *
>>    * @param port_id
>> --
>> 2.8.1
>>
>

  reply	other threads:[~2021-11-18  2:58 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-29 10:53 [dpdk-dev] [PATCH V1 0/2] examples/ethtool: fix MTU set and add MTU query Min Hu (Connor)
2021-04-29 10:53 ` [dpdk-dev] [PATCH V1 1/2] examples/ethtool: fix data type of MTU Min Hu (Connor)
2021-11-17 17:49   ` David Marchand
2021-11-18  2:44     ` lihuisong (C)
2021-04-29 10:53 ` [dpdk-dev] [PATCH V1 2/2] examples/ethtool: support the query " Min Hu (Connor)
2021-11-17 17:51   ` David Marchand
2021-11-18  2:58     ` lihuisong (C) [this message]
2021-06-28  3:23 ` [dpdk-dev] [PATCH V1 0/2] examples/ethtool: fix MTU set and add MTU query Min Hu (Connor)
2023-07-03 21:37   ` Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6895707a-5c68-32d1-1776-9570e4c41823@huawei.com \
    --to=lihuisong@huawei.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=humin29@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.