[dpdk-dev] bonding: fix link status interrupt when down

Message ID 20170726155330.20512-1-tomaszx.kulasek@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Tomasz Kulasek July 26, 2017, 3:53 p.m. UTC
  RTE_ETH_EVENT_INTR_LSC callbacks are not called when all slaves goes down
in bond_ethdev_lsc_event_callback. It causes that link status change of
bonded device is not propagated up.

Fixes: deba8a2f8b0b ("net/bonding: fix link properties management")

Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
---
 drivers/net/bonding/rte_eth_bond_pmd.c | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Doherty, Declan July 26, 2017, 5:08 p.m. UTC | #1
On 26/07/2017 4:53 PM, Tomasz Kulasek wrote:
> RTE_ETH_EVENT_INTR_LSC callbacks are not called when all slaves goes down
> in bond_ethdev_lsc_event_callback. It causes that link status change of
> bonded device is not propagated up.
>
> Fixes: deba8a2f8b0b ("net/bonding: fix link properties management")
>
> Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
> ---
>  drivers/net/bonding/rte_eth_bond_pmd.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
> index 8f9a860..3ee70ba 100644
> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
> @@ -2535,6 +2535,9 @@ struct bwg_slave {
>  		/* Remove from active slave list */
>  		deactivate_slave(bonded_eth_dev, port_id);
>
> +		if (internals->active_slave_count < 1)
> +			lsc_flag = 1;
> +
>  		/* Update primary id, take first active slave from list or if none
>  		 * available set to -1 */
>  		if (port_id == internals->current_primary_port) {
>

Acked-by: Declan Doherty <declan.doherty@intel.com>
  
Ferruh Yigit July 31, 2017, 12:57 p.m. UTC | #2
On 7/26/2017 6:08 PM, Declan Doherty wrote:
> On 26/07/2017 4:53 PM, Tomasz Kulasek wrote:
>> RTE_ETH_EVENT_INTR_LSC callbacks are not called when all slaves goes down
>> in bond_ethdev_lsc_event_callback. It causes that link status change of
>> bonded device is not propagated up.
>>
>> Fixes: deba8a2f8b0b ("net/bonding: fix link properties management")
>>
>> Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>

> Acked-by: Declan Doherty <declan.doherty@intel.com>

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

Patch

diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 8f9a860..3ee70ba 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -2535,6 +2535,9 @@  struct bwg_slave {
 		/* Remove from active slave list */
 		deactivate_slave(bonded_eth_dev, port_id);
 
+		if (internals->active_slave_count < 1)
+			lsc_flag = 1;
+
 		/* Update primary id, take first active slave from list or if none
 		 * available set to -1 */
 		if (port_id == internals->current_primary_port) {