[PATCH V5 5/7] app/testpmd: compact RSS types output in some commands

Ferruh Yigit ferruh.yigit at xilinx.com
Tue Jun 28 15:18:07 CEST 2022


On 6/25/2022 3:13 AM, lihuisong (C) wrote:

> 
> 在 2022/6/24 22:04, Ferruh Yigit 写道:
>> On 6/24/2022 8:23 AM, Huisong Li wrote:
>>> CAUTION: This message has originated from an External Source. Please
>>> use proper judgment and caution when opening attachments, clicking
>>> links, or responding to this email.
>>>
>>>
>>> From: Ferruh Yigit <ferruh.yigit at xilinx.com>
>>>
>>> In port info command output, 'show port info all', supported RSS offload
>>> types printed one type per line, and although this information is not
>>> most important part of the command it takes big part of the command
>>> output.
>>>
>>> In port RSS hash and flow RSS command output, 'show port 0 rss-hash',
>>> and 'flow query 0 0 rss', all enabled RSS types are printed on one line.
>>> If there are many types, the print will be very long.
>>>
>>> Compacting these RSS offloads and types output by fixing the length
>>> of the
>>> character string printed on each line, instead of one per line or one
>>> line.
>>> Output becomes as following:
>>>
>>> Supported RSS offload flow types:
>>>    ipv4-frag  ipv4-tcp  ipv4-udp  ipv4-sctp  ipv4-other
>>>    ipv6-frag  ipv6-tcp  ipv6-udp  ipv6-sctp  ipv6-other
>>>    l4-dst-only  l4-src-only  l3-dst-only  l3-src-only
>>>
>>> Signed-off-by: Ferruh Yigit <ferruh.yigit at xilinx.com>
>>> Signed-off-by: Huisong Li <lihuisong at huawei.com>
>>> ---
>>>   app/test-pmd/config.c  | 68 +++++++++++++++++++++++++++++++-----------
>>>   app/test-pmd/testpmd.h |  2 ++
>>>   2 files changed, 52 insertions(+), 18 deletions(-)
>>>
>>> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
>>> index a0a5f12c71..b3cb68003c 100644
>>> --- a/app/test-pmd/config.c
>>> +++ b/app/test-pmd/config.c
>>> @@ -699,6 +699,38 @@ rsstypes_to_str(uint64_t rss_type)
>>>          return NULL;
>>>   }
>>>
>>> +static void
>>> +rss_offload_types_display(uint64_t offload_types, uint16_t
>>> char_num_per_line)
>>> +{
>>> +       uint16_t unknown_offload_str_len;
>>> +       uint16_t total_len = 0;
>>> +       uint16_t str_len = 0;
>>> +       uint64_t rss_offload;
>>> +       uint16_t i;
>>> +
>>> +       for (i = 0; i < sizeof(offload_types) * CHAR_BIT; i++) {
>>> +               rss_offload = RTE_BIT64(i);
>>> +               if ((offload_types & rss_offload) != 0) {
>>> +                       const char *p = rsstypes_to_str(rss_offload);
>>> +
>>> +                       unknown_offload_str_len =
>>> +                               strlen("unknown_offload(BIT())") + (i
>>> / 10 + 1);
>>> +                       str_len = p ? strlen(p) :
>>> unknown_offload_str_len;
>>> +                       str_len += 2; /* add two spaces */
>>> +                       if (total_len + str_len >= char_num_per_line) {
>>> +                               total_len = 0;
>>> +                               printf("\n");
>>> +                       }
>>> +
>>> +                       if (p)
>>> +                               printf("  %s", p);
>>> +                       else
>>> +                               printf(" unknown_offload(BIT(%u))", i);
>>> +                       total_len += str_len;
>>> +               }
>>> +       }
>>> +}
>>> +
>>>   void
>>>   port_infos_display(portid_t port_id)
>>>   {
>>> @@ -803,21 +835,10 @@ port_infos_display(portid_t port_id)
>>>          if (!dev_info.flow_type_rss_offloads)
>>>                  printf("No RSS offload flow type is supported.\n");
>>>          else {
>>> -               uint64_t rss_offload_types =
>>> dev_info.flow_type_rss_offloads;
>>> -               uint16_t i;
>>> -
>>>                  printf("Supported RSS offload flow types:\n");
>>> -               for (i = 0; i < sizeof(rss_offload_types) * CHAR_BIT;
>>> i++) {
>>> -                       uint64_t rss_offload = RTE_BIT64(i);
>>> -                       if ((rss_offload_types & rss_offload) != 0) {
>>> -                               const char *p =
>>> rsstypes_to_str(rss_offload);
>>> -                               if (p)
>>> -                                       printf("  %s\n", p);
>>> -                               else
>>> -                                       printf("
>>> unknown_offload(BIT(%u))\n",
>>> -                                              i);
>>> -                       }
>>> -               }
>>> + rss_offload_types_display(dev_info.flow_type_rss_offloads,
>>> + TESTPMD_RSS_TYPES_CHAR_NUM_PER_LINE);
>>> +               printf("\n");
>>
>> Why 'rss_types_display()' is not reused, but new function
>> 'rss_offload_types_display()' created?
> As mentioned in the 1/7 patch reply, there are different purposes.

OK. Lets continue as it is.



More information about the dev mailing list