virtio: do not set mac table unless negotiated
authorStephen Hemminger <shemming@brocade.com>
Thu, 11 Jun 2015 15:53:25 +0000 (08:53 -0700)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Fri, 12 Jun 2015 12:40:15 +0000 (14:40 +0200)
Don't attempt to set the MAC address table unless the host allows
it in feature negotiation. Also, don't return a value from mac_table_set
since all callers ignore the return value.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Changchun Ouyang <changchun.ouyang@intel.com>
drivers/net/virtio/virtio_ethdev.c

index 395df12..ebf91d8 100644 (file)
@@ -668,7 +668,7 @@ virtio_get_hwaddr(struct virtio_hw *hw)
        }
 }
 
-static int
+static void
 virtio_mac_table_set(struct virtio_hw *hw,
                     const struct virtio_net_ctrl_mac *uc,
                     const struct virtio_net_ctrl_mac *mc)
@@ -676,6 +676,11 @@ virtio_mac_table_set(struct virtio_hw *hw,
        struct virtio_pmd_ctrl ctrl;
        int err, len[2];
 
+       if (!vtpci_with_feature(hw, VIRTIO_NET_F_CTRL_MAC_ADDR)) {
+               PMD_DRV_LOG(INFO, "host does not support mac table\n");
+               return;
+       }
+
        ctrl.hdr.class = VIRTIO_NET_CTRL_MAC;
        ctrl.hdr.cmd = VIRTIO_NET_CTRL_MAC_TABLE_SET;
 
@@ -688,8 +693,6 @@ virtio_mac_table_set(struct virtio_hw *hw,
        err = virtio_send_command(hw->cvq, &ctrl, len, 2);
        if (err != 0)
                PMD_DRV_LOG(NOTICE, "mac table set failed: %d", err);
-
-       return err;
 }
 
 static void