DPDK patches and discussions
 help / color / mirror / Atom feed
From: Dan Gora <dg@adax.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>
Cc: dev@dpdk.org, Igor Ryzhov <iryzhov@nfware.com>,
	 Stephen Hemminger <stephen@networkplumber.org>
Subject: Re: [dpdk-dev] [PATCH v2 3/5] examples/kni: monitor and update link status continually
Date: Wed, 26 Sep 2018 16:16:44 -0300	[thread overview]
Message-ID: <CAGyogRbMFBSzBsxKrwWvTk_e2iErW=C1xsHxyefnihoWj=LgqA@mail.gmail.com> (raw)
In-Reply-To: <57ecd39f-70c8-d9b9-1c61-c665f17ec1c6@intel.com>

On Wed, Sep 26, 2018 at 11:00 AM, Ferruh Yigit <ferruh.yigit@intel.com> wrote:
> On 9/19/2018 8:55 PM, Dan Gora wrote:
>> Update KNI example to continuously monitor the Ethernet link status of
>> the physical link and update the carrier status of the corresponding
>> interfaces with rte_kni_update_link().
>>
>> Signed-off-by: Dan Gora <dg@adax.com>
>
> Also this patch sets kni interfaces "up", please add this information to commit log.
>
> <...>
>
>> +     RTE_ETH_FOREACH_DEV(portid) {
>> +             for (i = 0; i < p[portid]->nb_kni; i++) {
>> +                     name = rte_kni_get_name(p[portid]->kni[i]);
>> +                     snprintf(cmd, sizeof(cmd),
>> +                                     "/sbin/ifconfig %s up", name);
>> +                     RTE_LOG(INFO, APP,
>> +                                     "Marking interface %s 'up'\n", name);
>> +                     if (system(cmd) == -1)
>> +                             RTE_LOG(ERR, APP,
>> +                               "Error: Failed to mark interface %s 'up'\n",
>> +                                             name);
>> +             }
>> +     }
>
> This part can be separated thread, overall already done only once, and put into
> its own function. And what about making this optional with command line argument.
>

I'll just remove it.. It's unnecessary.  I don't see why the user
should have to explicitly type 'ip link set up dev <name>' external to
the application, but that's the way it was before, so that's fine with
me.

>>
>> -     printf("\nChecking link status\n");
>> -     fflush(stdout);
>> -     for (count = 0; count <= MAX_CHECK_TIME; count++) {
>> -             all_ports_up = 1;
>> +     while (kni_running) {
>> +             rte_delay_ms(CHECK_INTERVAL);
>>               RTE_ETH_FOREACH_DEV(portid) {
>> -                     if ((port_mask & (1 << portid)) == 0)
>> +                     if ((ports_mask & (1 << portid)) == 0)
>>                               continue;
>>                       memset(&link, 0, sizeof(link));
>>                       rte_eth_link_get_nowait(portid, &link);
>> -                     /* print link status if flag set */
>> -                     if (print_flag == 1) {
>> -                             if (link.link_status)
>> -                                     printf(
>> -                                     "Port%d Link Up - speed %uMbps - %s\n",
>> -                                             portid, link.link_speed,
>> -                             (link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
>> -                                     ("full-duplex") : ("half-duplex\n"));
>> -                             else
>> -                                     printf("Port %d Link Down\n", portid);
>> -                             continue;
>> -                     }
>> -                     /* clear all_ports_up flag if any link down */
>> -                     if (link.link_status == ETH_LINK_DOWN) {
>> -                             all_ports_up = 0;
>> -                             break;
>> -                     }
>> -             }
>> -             /* after finally printing all link status, get out */
>> -             if (print_flag == 1)
>> -                     break;
>> -
>> -             if (all_ports_up == 0) {
>> -                     printf(".");
>> -                     fflush(stdout);
>> -                     rte_delay_ms(CHECK_INTERVAL);
>> -             }
>
> Previous logic makes sure all physical interfaces are up before packet
> processing is started.

Uh, no it didn't.  It would wait for up to 9 seconds for the links to
come up and print a message, but if they didn't it would happily just
chug right along.

> Why removing this logic? I think it is good to keep it as it is.

Because it was kind of unnecessary in the first place.  Why 9 seconds?
 Why not 10?  Why not 60?  None of the following logic in the program
depends on the link being up.

>> @@ -947,7 +938,14 @@ main(int argc, char** argv)
>>
>>               kni_alloc(port);
>>       }
>> -     check_all_ports_link_status(ports_mask);
>> +
>> +     kni_running = 1;
>> +     ret = rte_ctrl_thread_create(&kni_link_tid,
>> +                                  "KNI link status check", NULL,
>> +                                  check_all_ports_link_status, NULL);
>
> This thread is to reflect physical port link status to KNI interface, this can
> be useful but not sure to have it as default. Why not introduce this ability,
> and creating thread, as an optional feature enabled by command line option?
>
> So overall makes two commandline option,
> - one to set kni interfaces up by application
> - one to create a thread to check and reflect physical port link status to KNI
> interface

I'm not really inclined to add new command line options here.  I'll
remove the code to set the interface 'up' so the user will continue to
have to type 'ip link set up dev <name>' externally the way they do
now.  I don't see any reason why checking the link status would
require a command line option.  It affects nothing in the datapath.

  reply	other threads:[~2018-09-26 19:17 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-11 23:29 [dpdk-dev] [PATCH 0/2] kni: add API to set link status on kernel interface Dan Gora
2018-09-11 23:29 ` [dpdk-dev] [PATCH 1/2] " Dan Gora
2018-09-18 16:54   ` Ferruh Yigit
2018-09-18 17:41     ` Dan Gora
2018-09-11 23:29 ` [dpdk-dev] [PATCH 2/2] kni: set default carrier state to 'off' Dan Gora
2018-09-18 16:15   ` Ferruh Yigit
2018-09-18 16:48     ` Ferruh Yigit
2018-09-18 18:34       ` Dan Gora
2018-09-19 19:55 ` [dpdk-dev] [PATCH v2 0/5] kni: add API to set link status on kernel interface Dan Gora
2018-09-19 19:55   ` [dpdk-dev] [PATCH v2 1/5] " Dan Gora
2018-09-26 13:59     ` Ferruh Yigit
2018-09-26 14:55       ` Dan Gora
2018-09-26 16:42         ` Ferruh Yigit
2018-09-26 18:56           ` Dan Gora
2018-09-27 11:35             ` Ferruh Yigit
2018-09-27 15:40               ` Dan Gora
2018-09-27 21:49                 ` Ferruh Yigit
2018-09-27 23:05                   ` Dan Gora
2018-09-27 23:44                     ` Ferruh Yigit
2018-09-27 23:51                       ` Dan Gora
2018-09-28  8:02                         ` Igor Ryzhov
2018-09-28  8:03                         ` Ferruh Yigit
2018-10-03 19:07                           ` Dan Gora
2018-10-10 14:09                             ` Ferruh Yigit
2018-10-10 14:57                               ` Dan Gora
2018-09-19 19:55   ` [dpdk-dev] [PATCH v2 2/5] kni: set default carrier state to 'off' Dan Gora
2018-09-26 13:59     ` Ferruh Yigit
2018-09-19 19:55   ` [dpdk-dev] [PATCH v2 3/5] examples/kni: monitor and update link status continually Dan Gora
2018-09-26 14:00     ` Ferruh Yigit
2018-09-26 19:16       ` Dan Gora [this message]
2018-09-27 11:54         ` Ferruh Yigit
2018-09-19 19:55   ` [dpdk-dev] [PATCH v2 4/5] examples/kni: add log msgs to show and clear stats Dan Gora
2018-09-26 14:00     ` Ferruh Yigit
2018-09-19 19:55   ` [dpdk-dev] [PATCH v2 5/5] examples/kni: improve zeroing statistics Dan Gora
2018-09-26 14:01     ` Ferruh Yigit
2018-09-26 14:48       ` Dan Gora
2018-09-27 11:40         ` Ferruh Yigit
2018-09-27 15:53           ` Dan Gora
2018-09-27 22:04             ` Ferruh Yigit
2018-09-27 22:40               ` Dan Gora
2018-09-27  0:32 ` [dpdk-dev] [PATCH v3 0/6] kni: add API to set link status on kernel interface Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 1/6] " Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 2/6] kni: add link status test Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 3/6] kni: set default carrier state to 'off' Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 4/6] examples/kni: monitor and update link status continually Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 5/6] examples/kni: add log msgs to show and clear stats Dan Gora
2018-09-27  0:32   ` [dpdk-dev] [PATCH v3 6/6] examples/kni: improve zeroing statistics Dan Gora
2018-10-10 14:16   ` [dpdk-dev] [PATCH v3 0/6] kni: add API to set link status on kernel interface Ferruh Yigit
2018-10-10 15:01     ` Dan Gora
2018-10-10 23:00       ` Ferruh Yigit
2018-10-10 23:36         ` Dan Gora
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 " Dan Gora
2018-10-17 15:29   ` Ferruh Yigit
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 1/6] " Dan Gora
2018-10-18 13:44   ` Ferruh Yigit
2018-10-18 19:00     ` Dan Gora
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 2/6] kni: add link status test Dan Gora
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 3/6] kni: set default carrier state of interface Dan Gora
2018-10-17 15:20   ` Ferruh Yigit
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 4/6] examples/kni: monitor and update link status continually Dan Gora
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 5/6] examples/kni: add log msgs to show and clear stats Dan Gora
2018-10-17  1:04 ` [dpdk-dev] [PATCH v4 6/6] examples/kni: improve zeroing statistics Dan Gora
2018-10-19  0:23 ` [dpdk-dev] [PATCH v5 0/5] kni: add API to set link status on kernel interface Dan Gora
2018-10-19  0:23   ` [dpdk-dev] [PATCH v5 1/5] " Dan Gora
2018-10-19  0:23   ` [dpdk-dev] [PATCH v5 2/5] kni: set default carrier state of interface Dan Gora
2018-10-19  0:23   ` [dpdk-dev] [PATCH v5 3/5] examples/kni: monitor and update link status continually Dan Gora
2018-10-22 12:51     ` Ferruh Yigit
2018-10-22 20:04       ` Dan Gora
2018-10-19  0:23   ` [dpdk-dev] [PATCH v5 4/5] examples/kni: add log msgs to show and clear stats Dan Gora
2018-10-19  0:23   ` [dpdk-dev] [PATCH v5 5/5] examples/kni: improve zeroing statistics Dan Gora
2018-10-22 13:03   ` [dpdk-dev] [PATCH v5 0/5] kni: add API to set link status on kernel interface Ferruh Yigit
2018-10-22 13:08     ` Thomas Monjalon
2018-10-22 13:14       ` Ferruh Yigit
2018-10-22 13:18         ` Thomas Monjalon
2018-10-24 20:27 ` [dpdk-dev] [PATCH v6 " Dan Gora
2018-10-24 20:27   ` [dpdk-dev] [PATCH v6 1/5] " Dan Gora
2018-10-24 20:27   ` [dpdk-dev] [PATCH v6 2/5] kni: set default carrier state of interface Dan Gora
2018-10-24 20:27   ` [dpdk-dev] [PATCH v6 3/5] examples/kni: monitor and update link status continually Dan Gora
2018-10-24 20:27   ` [dpdk-dev] [PATCH v6 4/5] examples/kni: add log msgs to show and clear stats Dan Gora
2018-10-24 20:46     ` Stephen Hemminger
2018-10-24 20:56       ` Dan Gora
2018-10-24 21:17         ` Stephen Hemminger
2018-10-24 21:45           ` Dan Gora
2018-10-24 20:27   ` [dpdk-dev] [PATCH v6 5/5] examples/kni: improve zeroing statistics Dan Gora
2018-10-24 22:26 ` [dpdk-dev] [PATCH v7 0/5] kni: add API to set link status on kernel interface Dan Gora
2018-10-24 22:26   ` [dpdk-dev] [PATCH v7 1/5] " Dan Gora
2018-10-24 22:26   ` [dpdk-dev] [PATCH v7 2/5] kni: set default carrier state of interface Dan Gora
2018-10-24 22:26   ` [dpdk-dev] [PATCH v7 3/5] examples/kni: monitor and update link status continually Dan Gora
2018-10-24 22:26   ` [dpdk-dev] [PATCH v7 4/5] examples/kni: add log msgs to show and clear stats Dan Gora
2018-10-24 22:26   ` [dpdk-dev] [PATCH v7 5/5] examples/kni: improve zeroing statistics Dan Gora
2018-10-25 12:30   ` [dpdk-dev] [PATCH v7 0/5] kni: add API to set link status on kernel interface Ferruh Yigit
2018-10-26 17:43     ` Thomas Monjalon

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='CAGyogRbMFBSzBsxKrwWvTk_e2iErW=C1xsHxyefnihoWj=LgqA@mail.gmail.com' \
    --to=dg@adax.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=iryzhov@nfware.com \
    --cc=stephen@networkplumber.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).