netdev: Don't assume all netdevs are available at runtime.
authorJesse Gross <jesse@nicira.com>
Tue, 17 Aug 2010 22:09:53 +0000 (18:09 -0400)
committerJesse Gross <jesse@nicira.com>
Tue, 24 Aug 2010 20:58:00 +0000 (16:58 -0400)
Currently we print a warning if a user tries to configure a
netdev that is not in the list that userspace knows about.
However, it is possible that a given netdev maybe be enabled but
when it tries to create a device it finds out that it can't
(not supported by kernel module, hardware not present, etc.).
This makes the behavior the same in both cases.

Signed-off-by: Jesse Gross <jesse@nicira.com>
lib/netdev.c

index 7d834ad0909282b76b6a21d49edb3e4c1b5f9edc..3e355581446ea0618b7c32bcb18d7c1cd3f46bf2 100644 (file)
@@ -272,8 +272,6 @@ create_device(struct netdev_options *options, struct netdev_dev **netdev_devp)
 
     netdev_class = shash_find_data(&netdev_classes, options->type);
     if (!netdev_class) {
-        VLOG_WARN("could not create netdev %s of unknown type %s",
-                  options->name, options->type);
         return EAFNOSUPPORT;
     }
 
@@ -312,6 +310,10 @@ netdev_open(struct netdev_options *options, struct netdev **netdevp)
     if (!netdev_dev) {
         error = create_device(options, &netdev_dev);
         if (error) {
+            if (error == EAFNOSUPPORT) {
+                VLOG_WARN("could not create netdev %s of unknown type %s",
+                          options->name, options->type);
+            }
             return error;
         }
         update_device_args(netdev_dev, options->args);