ENIC driver update to allow bonded interface admin down/up to pass traffic 35/1935/2
authorJohn Lo <loj@cisco.com>
Mon, 11 Jul 2016 22:09:51 +0000 (18:09 -0400)
committerDamjan Marion <dmarion.lists@gmail.com>
Tue, 12 Jul 2016 00:55:20 +0000 (00:55 +0000)
When ENIC ports are used as slaves to a bonded interface, these patches
enable traffic on bonded interface to resume properly on admin down and
then up of the bonded interface.

Change-Id: I339926010da614068417c72009b7af2f892890ce
Signed-off-by: John Lo <loj@cisco.com>
dpdk/dpdk-16.04_patches/0026-net-enic-fix-setting-MAC-address-when-a-port-is-rest.patch [new file with mode: 0644]
dpdk/dpdk-16.04_patches/0027-net-enic-fix-removing-old-MAC-address-when-setting-n.patch [new file with mode: 0644]

diff --git a/dpdk/dpdk-16.04_patches/0026-net-enic-fix-setting-MAC-address-when-a-port-is-rest.patch b/dpdk/dpdk-16.04_patches/0026-net-enic-fix-setting-MAC-address-when-a-port-is-rest.patch
new file mode 100644 (file)
index 0000000..334e9be
--- /dev/null
@@ -0,0 +1,45 @@
+From e5b60cf1199c51ee51c287988bdda3522fee748c Mon Sep 17 00:00:00 2001
+From: Nelson Escobar <neescoba@cisco.com>
+Date: Thu, 7 Jul 2016 18:10:21 -0700
+Subject: [PATCH 1/2] net/enic: fix setting MAC address when a port is
+ restarted
+
+enic_disable() removed the MAC address when a port was shut down but
+enic_enable() didn't add the MAC address back when the port was
+started again. Move where we set the MAC address for the adapter from
+enic_setup_finish() to a enic_enable() so that port restarting works
+properly.
+
+Fixes: fefed3d1e62c ("enic: new driver")
+
+Signed-off-by: Nelson Escobar <neescoba@cisco.com>
+Reviewed-by: John Daley <johndale@cisco.com>
+---
+ drivers/net/enic/enic_main.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
+index d4e43b5..5d47c01 100644
+--- a/drivers/net/enic/enic_main.c
++++ b/drivers/net/enic/enic_main.c
+@@ -468,6 +468,8 @@ int enic_enable(struct enic *enic)
+       for (index = 0; index < enic->rq_count; index++)
+               enic_start_rq(enic, index);
++      vnic_dev_add_addr(enic->vdev, enic->mac_addr);
++
+       vnic_dev_enable_wait(enic->vdev);
+       /* Register and enable error interrupt */
+@@ -971,8 +973,6 @@ int enic_setup_finish(struct enic *enic)
+               return -1;
+       }
+-      vnic_dev_add_addr(enic->vdev, enic->mac_addr);
+-
+       /* Default conf */
+       vnic_dev_packet_filter(enic->vdev,
+               1 /* directed  */,
+-- 
+2.7.0
+
diff --git a/dpdk/dpdk-16.04_patches/0027-net-enic-fix-removing-old-MAC-address-when-setting-n.patch b/dpdk/dpdk-16.04_patches/0027-net-enic-fix-removing-old-MAC-address-when-setting-n.patch
new file mode 100644 (file)
index 0000000..1e58db9
--- /dev/null
@@ -0,0 +1,34 @@
+From 620b173ae0f77c1a5af2592a27b5db8a6ce88bb6 Mon Sep 17 00:00:00 2001
+From: Nelson Escobar <neescoba@cisco.com>
+Date: Thu, 7 Jul 2016 18:11:08 -0700
+Subject: [PATCH 2/2] net/enic: fix removing old MAC address when setting new
+ one
+
+enic_set_mac_address() meant to remove the old MAC address before
+setting the new one, but accidentally tried removing the new MAC
+address before setting the new MAC address.
+
+Fixes: fefed3d1e62c ("enic: new driver")
+
+Signed-off-by: Nelson Escobar <neescoba@cisco.com>
+Reviewed-by: John Daley <johndale@cisco.com>
+---
+ drivers/net/enic/enic_main.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
+index 5d47c01..d8669cc 100644
+--- a/drivers/net/enic/enic_main.c
++++ b/drivers/net/enic/enic_main.c
+@@ -215,7 +215,7 @@ void enic_set_mac_address(struct enic *enic, uint8_t *mac_addr)
+               return;
+       }
+-      err = vnic_dev_del_addr(enic->vdev, mac_addr);
++      err = vnic_dev_del_addr(enic->vdev, enic->mac_addr);
+       if (err) {
+               dev_err(enic, "del mac addr failed\n");
+               return;
+-- 
+2.7.0
+