enic: fix link state change
authorJohn Daley <johndale@cisco.com>
Sat, 26 Mar 2016 00:45:17 +0000 (17:45 -0700)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 30 Mar 2016 17:39:07 +0000 (19:39 +0200)
When the enic was disabled, link notification was correctly disabled
in the NIC but the software indicator that it was disabled was not
updated (vdev->notify_pa not set to 0). When the link came back up,
enic did not re-enable notification in the NIC.

This affected bonding when a enic slave device link bounced.

The fix is to unconditionally enable notification when the enic is
enabled.

Fixes: 9913fbb91df0 ("enic/base: common code")

Signed-off-by: John Daley <johndale@cisco.com>
Reviewed-by: Nelson Escobar <neescoba@cisco.com>
drivers/net/enic/base/vnic_dev.c

index 6153864..e8a5028 100644 (file)
@@ -768,11 +768,9 @@ int vnic_dev_notify_set(struct vnic_dev *vdev, u16 intr)
        static u32 instance;
 
        if (vdev->notify || vdev->notify_pa) {
-               pr_warn("notify block %p still allocated.\n" \
-                       "Ignore if restarting port\n", vdev->notify);
-               return -EINVAL;
+               return vnic_dev_notify_setcmd(vdev, vdev->notify,
+                                             vdev->notify_pa, intr);
        }
-
        if (!vnic_dev_in_reset(vdev)) {
                snprintf((char *)name, sizeof(name),
                        "vnic_notify-%d", instance++);