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 at cisco.com> Reviewed-by: Nelson Escobar <neescoba at cisco.com> --- drivers/net/enic/base/vnic_dev.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/enic/base/vnic_dev.c b/drivers/net/enic/base/vnic_dev.c index 6153864..e8a5028 100644 --- a/drivers/net/enic/base/vnic_dev.c +++ b/drivers/net/enic/base/vnic_dev.c @@ -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++); -- 2.7.0