Skip to contentSkip to conversation

net/bonding: export mode 4 slave info routine

PATCH Applied Chas Williams 2 participants 4 messages May 17, 2018 – Jun 14, 2018

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/2 net/bonding: export mode 4 slave info routine

From: Chas Williams <[email protected]>

rte_eth_bond_8023ad_slave_info() wasn't exported in the original work. Useful to extract information about the current 802.3ad state.

Fixes 46fb43683679 ("bond: add mode 4")
---
 drivers/net/bonding/rte_pmd_bond_version.map | 7 +++++++
 1 file changed, 7 insertions(+)
drivers/net/bonding/rte_pmd_bond_version.map +7 -0
index ec3374b0f..cdd77df84 100644
@@ -52,3 +52,10 @@ DPDK_17.08 {
 
 
 } DPDK_16.07;
+
+DPDK_18.08 {
+	global:
+
+	rte_eth_bond_8023ad_slave_info;
+
+}:
Signature · 1 line
2.14.3
#1 lore raw

PATCH 2/2 net/bonding: always update bonding link status

From: Chas Williams <[email protected]>

When the first ETH_LINK_UP slave is added to a bonding device, it is immediately activated. If these are polling slaves, there will be a later link state event, when last_link_status doesn't match link_status. But because this slave is already activated, the bonding device's link status isn't updated.

To fix this, we always attempt to update the bonding device's link status in the link state change callback.

Fixes 46fb43683679 ("bond: add mode 4")
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)
drivers/net/bonding/rte_eth_bond_pmd.c +6 -9
index 02d94b1b1..f155ff779 100644
@@ -2664,10 +2664,8 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type,
 
 	rte_eth_link_get_nowait(port_id, &link);
 	if (link.link_status) {
-		if (active_pos < internals->active_slave_count) {
-			rte_spinlock_unlock(&internals->lsc_lock);
-			return rc;
-		}
+		if (active_pos < internals->active_slave_count)
+			goto link_update;
 
 		/* if no active slave ports then set this port to be primary port */
 		if (internals->active_slave_count < 1) {
@@ -2686,10 +2684,8 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type,
 				internals->primary_port == port_id)
 			bond_ethdev_primary_set(internals, port_id);
 	} else {
-		if (active_pos == internals->active_slave_count) {
-			rte_spinlock_unlock(&internals->lsc_lock);
-			return rc;
-		}
+		if (active_pos == internals->active_slave_count)
+			goto link_update;
 
 		/* Remove from active slave list */
 		deactivate_slave(bonded_eth_dev, port_id);
@@ -2708,6 +2704,7 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type,
 		}
 	}
 
+link_update:
 	/**
 	 * Update bonded device link properties after any change to active
 	 * slaves
@@ -2745,7 +2742,7 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type,
 
 	rte_spinlock_unlock(&internals->lsc_lock);
 
-	return 0;
+	return rc;
 }
 
 static int
Signature · 1 line
2.14.3
Applied
#2 lore raw

Re: [PATCH 2/2] net/bonding: always update bonding link status

Quoted 8 lines · Chas Williams

From: Chas Williams <[email protected]>

When the first ETH_LINK_UP slave is added to a bonding device, it is immediately activated. If these are polling slaves, there will be a later link state event, when last_link_status doesn't match link_status. But because this slave is already activated, the bonding device's link status isn't updated.

Quoted 7 lines

To fix this, we always attempt to update the bonding device's link status in the link state change callback.

Fixes 46fb43683679 ("bond: add mode 4")

Applied to dpdk-next-net/master, thanks.

Reviewed-by on v1 1/2 Applied
#3 lore raw
In reply to Chas Williams
Quoted 9 lines · Chas Williams

From: Chas Williams <[email protected]>

rte_eth_bond_8023ad_slave_info() wasn't exported in the original work. Useful to extract information about the current 802.3ad state.

Fixes 46fb43683679 ("bond: add mode 4")

Applied to dpdk-next-net/master, thanks.

(Note, not get whole patch, only this one!)

The API seems added in 2014, not used in any internal tool and nobody complained up until now, it seems not a popular one...

Quoted 9 lines
---
 drivers/net/bonding/rte_pmd_bond_version.map | 7 +++++++
 1 file changed, 7 insertions(+)
drivers/net/bonding/rte_pmd_bond_version.map +0 -0
index ec3374b0f..cdd77df84 100644

drivers/net/bonding/rte_pmd_bond_version.map DPDK_17.08 { · line 61

Quoted 10 lines
drivers/net/bonding/rte_pmd_bond_version.map +7 -0
@@ -52,3 +52,10 @@ DPDK_17.08 {
 
 
 } DPDK_16.07;
+
+DPDK_18.08 {
+	global:
+
+	rte_eth_bond_8023ad_slave_info;
+
+}:

s/}:/ DPDK_17.08;/

Fixed while applying.