All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] net: Silence 'has no peer' messages in testing mode
@ 2018-05-03  5:50 Thomas Huth
  2018-05-03 11:47 ` Markus Armbruster
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Huth @ 2018-05-03  5:50 UTC (permalink / raw)
  To: qemu-devel, Jason Wang; +Cc: Markus Armbruster

When running qtests with -nodefaults, we are not interested in
these 'XYZ has no peer' messages.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 net/net.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/net/net.c b/net/net.c
index 29f8398..58bf85e 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1427,12 +1427,13 @@ void net_check_clients(void)
 
     net_hub_check_clients();
 
-    QTAILQ_FOREACH(nc, &net_clients, next) {
-        if (!nc->peer) {
-            warn_report("%s %s has no peer",
-                        nc->info->type == NET_CLIENT_DRIVER_NIC
-                        ? "nic" : "netdev",
-                        nc->name);
+    if (!qtest_enabled() || nd_table[0].used) {
+        QTAILQ_FOREACH(nc, &net_clients, next) {
+            if (!nc->peer) {
+                warn_report("%s %s has no peer",
+                            nc->info->type == NET_CLIENT_DRIVER_NIC
+                            ? "nic" : "netdev", nc->name);
+            }
         }
     }
 
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH] net: Silence 'has no peer' messages in testing mode
  2018-05-03  5:50 [Qemu-devel] [PATCH] net: Silence 'has no peer' messages in testing mode Thomas Huth
@ 2018-05-03 11:47 ` Markus Armbruster
  2018-05-04 14:55   ` Thomas Huth
  0 siblings, 1 reply; 6+ messages in thread
From: Markus Armbruster @ 2018-05-03 11:47 UTC (permalink / raw)
  To: Thomas Huth; +Cc: qemu-devel, Jason Wang

Thomas Huth <thuth@redhat.com> writes:

> When running qtests with -nodefaults, we are not interested in
> these 'XYZ has no peer' messages.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  net/net.c | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/net/net.c b/net/net.c
> index 29f8398..58bf85e 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -1427,12 +1427,13 @@ void net_check_clients(void)
>  
>      net_hub_check_clients();
>  
> -    QTAILQ_FOREACH(nc, &net_clients, next) {
> -        if (!nc->peer) {
> -            warn_report("%s %s has no peer",
> -                        nc->info->type == NET_CLIENT_DRIVER_NIC
> -                        ? "nic" : "netdev",
> -                        nc->name);
> +    if (!qtest_enabled() || nd_table[0].used) {

I understand the !qtest_enabled part, but not the nd_table[0].used
part.  Can you explain?

> +        QTAILQ_FOREACH(nc, &net_clients, next) {
> +            if (!nc->peer) {
> +                warn_report("%s %s has no peer",
> +                            nc->info->type == NET_CLIENT_DRIVER_NIC
> +                            ? "nic" : "netdev", nc->name);
> +            }
>          }
>      }

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH] net: Silence 'has no peer' messages in testing mode
  2018-05-03 11:47 ` Markus Armbruster
@ 2018-05-04 14:55   ` Thomas Huth
  2018-05-07  7:14     ` Markus Armbruster
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Huth @ 2018-05-04 14:55 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: qemu-devel, Jason Wang

On 03.05.2018 13:47, Markus Armbruster wrote:
> Thomas Huth <thuth@redhat.com> writes:
> 
>> When running qtests with -nodefaults, we are not interested in
>> these 'XYZ has no peer' messages.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>  net/net.c | 13 +++++++------
>>  1 file changed, 7 insertions(+), 6 deletions(-)
>>
>> diff --git a/net/net.c b/net/net.c
>> index 29f8398..58bf85e 100644
>> --- a/net/net.c
>> +++ b/net/net.c
>> @@ -1427,12 +1427,13 @@ void net_check_clients(void)
>>  
>>      net_hub_check_clients();
>>  
>> -    QTAILQ_FOREACH(nc, &net_clients, next) {
>> -        if (!nc->peer) {
>> -            warn_report("%s %s has no peer",
>> -                        nc->info->type == NET_CLIENT_DRIVER_NIC
>> -                        ? "nic" : "netdev",
>> -                        nc->name);
>> +    if (!qtest_enabled() || nd_table[0].used) {
> 
> I understand the !qtest_enabled part, but not the nd_table[0].used
> part.  Can you explain?

Sure: I want to silence the message in qtest mode with -nodefaults.
qtest mode enabled means qtest_enabled() returns true.
-nodefaults enabled means nd_table[0].used is set to false.
So silence the message if qtest_enabled() && !nd_table[0].used.
Negates to: Print the message if !qtest_enabled || nd_table[0].used.

>> +        QTAILQ_FOREACH(nc, &net_clients, next) {
>> +            if (!nc->peer) {
>> +                warn_report("%s %s has no peer",
>> +                            nc->info->type == NET_CLIENT_DRIVER_NIC
>> +                            ? "nic" : "netdev", nc->name);
>> +            }
>>          }
>>      }

 Thomas

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH] net: Silence 'has no peer' messages in testing mode
  2018-05-04 14:55   ` Thomas Huth
@ 2018-05-07  7:14     ` Markus Armbruster
  2018-05-08 13:19       ` Thomas Huth
  0 siblings, 1 reply; 6+ messages in thread
From: Markus Armbruster @ 2018-05-07  7:14 UTC (permalink / raw)
  To: Thomas Huth; +Cc: Jason Wang, qemu-devel

Thomas Huth <thuth@redhat.com> writes:

> On 03.05.2018 13:47, Markus Armbruster wrote:
>> Thomas Huth <thuth@redhat.com> writes:
>> 
>>> When running qtests with -nodefaults, we are not interested in
>>> these 'XYZ has no peer' messages.
>>>
>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>> ---
>>>  net/net.c | 13 +++++++------
>>>  1 file changed, 7 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/net/net.c b/net/net.c
>>> index 29f8398..58bf85e 100644
>>> --- a/net/net.c
>>> +++ b/net/net.c
>>> @@ -1427,12 +1427,13 @@ void net_check_clients(void)
>>>  
>>>      net_hub_check_clients();
>>>  
>>> -    QTAILQ_FOREACH(nc, &net_clients, next) {
>>> -        if (!nc->peer) {
>>> -            warn_report("%s %s has no peer",
>>> -                        nc->info->type == NET_CLIENT_DRIVER_NIC
>>> -                        ? "nic" : "netdev",
>>> -                        nc->name);
>>> +    if (!qtest_enabled() || nd_table[0].used) {
>> 
>> I understand the !qtest_enabled part, but not the nd_table[0].used
>> part.  Can you explain?
>
> Sure: I want to silence the message in qtest mode with -nodefaults.
> qtest mode enabled means qtest_enabled() returns true.
> -nodefaults enabled means nd_table[0].used is set to false.

.used is initialized to false, and becomes true on successful
net_init_nic() / net_param_nic().

The connection to -nodefaults is this:

    if (default_net) {
        QemuOptsList *net = qemu_find_opts("net");
        qemu_opts_set(net, NULL, "type", "nic", &error_abort);
#ifdef CONFIG_SLIRP
        qemu_opts_set(net, NULL, "type", "user", &error_abort);
#endif
    }

When default_net is true, we effectively add -net nic".  It is true
unless the user specifies any of -nodefaults, -netdev, -nic, -net.  So,
with the default nic, nd_table[0].used is true.  It's also true with
non-default nics specified with convenience options.

> So silence the message if qtest_enabled() && !nd_table[0].used.

Thus, silence the message if qtesting and the user specified -nodefaults
and didn't add nics with convenience options.

Two (possibly confused) questions:

1. The user can add nics without convenience options:

    $ upstream-qemu -display none -nodefaults -device e1000
    upstream-qemu: warning: nic e1000.0 has no peer

   Shouldn't we silence the warning then, too?

2. We already have code to silence the warning:

    /* Don't warn about the default network setup that you get if
     * no command line -net or -netdev options are specified. There
     * are two cases that we would otherwise complain about:
     * (1) board doesn't support a NIC but the implicit "-net nic"
     * requested one
     * (2) CONFIG_SLIRP not set, in which case the implicit "-net nic"
     * sets up a nic that isn't connected to anything.
     */
    if (!default_net) {
        net_check_clients();
    }

   Is it a good idea to split the logic between net_check_clients() and
   its caller?

> Negates to: Print the message if !qtest_enabled || nd_table[0].used.
>
>>> +        QTAILQ_FOREACH(nc, &net_clients, next) {
>>> +            if (!nc->peer) {
>>> +                warn_report("%s %s has no peer",
>>> +                            nc->info->type == NET_CLIENT_DRIVER_NIC
>>> +                            ? "nic" : "netdev", nc->name);
>>> +            }
>>>          }
>>>      }
>
>  Thomas

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH] net: Silence 'has no peer' messages in testing mode
  2018-05-07  7:14     ` Markus Armbruster
@ 2018-05-08 13:19       ` Thomas Huth
  2018-05-09  6:18         ` Markus Armbruster
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Huth @ 2018-05-08 13:19 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: Jason Wang, qemu-devel

On 07.05.2018 09:14, Markus Armbruster wrote:
[...]
> Two (possibly confused) questions:
> 
> 1. The user can add nics without convenience options:
> 
>     $ upstream-qemu -display none -nodefaults -device e1000
>     upstream-qemu: warning: nic e1000.0 has no peer
> 
>    Shouldn't we silence the warning then, too?

No, since that is certainly a mis-configuration in that case. Why would
a user want to add a NIC without host backend?

> 2. We already have code to silence the warning:
> 
>     /* Don't warn about the default network setup that you get if
>      * no command line -net or -netdev options are specified. There
>      * are two cases that we would otherwise complain about:
>      * (1) board doesn't support a NIC but the implicit "-net nic"
>      * requested one
>      * (2) CONFIG_SLIRP not set, in which case the implicit "-net nic"
>      * sets up a nic that isn't connected to anything.
>      */
>     if (!default_net) {
>         net_check_clients();
>     }
> 
>    Is it a good idea to split the logic between net_check_clients() and
>    its caller?

Hmm, it's likely nicer to keep everything in one place. Since
"default_net" is only available in vl.c, I think the checks should go
there... so I'll rework my patch accordingly.

 Thomas

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Qemu-devel] [PATCH] net: Silence 'has no peer' messages in testing mode
  2018-05-08 13:19       ` Thomas Huth
@ 2018-05-09  6:18         ` Markus Armbruster
  0 siblings, 0 replies; 6+ messages in thread
From: Markus Armbruster @ 2018-05-09  6:18 UTC (permalink / raw)
  To: Thomas Huth; +Cc: Jason Wang, qemu-devel

Thomas Huth <thuth@redhat.com> writes:

> On 07.05.2018 09:14, Markus Armbruster wrote:
> [...]
>> Two (possibly confused) questions:
>> 
>> 1. The user can add nics without convenience options:
>> 
>>     $ upstream-qemu -display none -nodefaults -device e1000
>>     upstream-qemu: warning: nic e1000.0 has no peer
>> 
>>    Shouldn't we silence the warning then, too?
>
> No, since that is certainly a mis-configuration in that case. Why would
> a user want to add a NIC without host backend?

Related:

    $ upstream-qemu -display none -nodefaults -net nic
    upstream-qemu: warning: vlan 0 is not connected to host network

The root of my confusion: I'm having difficulties making the connection
from the guard predicate (!qtest_enabled() || nd_table[0].used) to
"stupid default setup that isn't the test's fault".

In what scenarios exactly do we get unwanted "has no peer" messages?
Mandatory onboard NIC, perhaps?

Arguably, onboard NICs should default to a null backend that behaves
like "no carrier".  That's exactly what physical hardware does.  Could
even be useful outside tests once we support hot-plugging network
backends (we might already, I have no idea), just like physical hardware
supports plugging in network cables.

[...]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-05-09  6:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-03  5:50 [Qemu-devel] [PATCH] net: Silence 'has no peer' messages in testing mode Thomas Huth
2018-05-03 11:47 ` Markus Armbruster
2018-05-04 14:55   ` Thomas Huth
2018-05-07  7:14     ` Markus Armbruster
2018-05-08 13:19       ` Thomas Huth
2018-05-09  6:18         ` Markus Armbruster

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.