dpdk/0010-bonding-fix-active-slaves-with-no-primary.patch
Nirmoy Das d761fec5f6 Accepting request 399089 from home:ndas:branches:network
- Applied all the fixes recommended by upstream for 
  v2.2 stable release(bsc#981996).
	[+0008-app-testpmd-handle-SIGINT-and-SIGTERM.patch,
	+0009-bonding-copy-entire-config-structure-in-mode-4.patch,
	+0010-bonding-fix-active-slaves-with-no-primary.patch,
	+0011-bonding-do-not-ignore-multicast-in-mode-4.patch,
	+0012-bonding-do-not-activate-slave-twice.patch,
	+0013-bonding-fix-crash-when-no-slave-device.patch,
	+0014-bonding-fix-detach-of-bonded-device.patch,
	+0015-bonding-fix-detach-of-slave-devices.patch,
	+0016-eal-linux-support-built-in-kernel-modules.patch,
	+0017-examples-l3fwd-handle-SIGINT-and-SIGTERM.patch,
	+0018-fm10k-fix-VLAN-flag-in-scattered-Rx.patch,
	+0019-i40e-base-fix-driver-load-failure.patch,
	+0020-i40e-base-fix-missing-check-for-stopped-admin-queue.patch,
	+0021-i40e-fix-inverted-check-for-no-refcount.patch,
	+0022-i40e-fix-overflow.patch,
	+0023-i40e-fix-VLAN-filtering.patch,
	+0024-mempool-fix-leak-when-creation-fails.patch,
	+0025-pcap-fix-captured-frame-length.patch,
	+0026-port-fix-crash-for-ethdev-writer-nodrop.patch,
	+0027-port-fix-crash-for-ring-writer-nodrop.patch,
	+0028-tools-fix-unbinding-failure-handling.patch,
	+0029-tools-support-Python-3-in-bind-script.patch,
	+0030-tools-support-binding-to-built-in-kernel-modules.patch,
	+0031-vhost-fix-leak-of-fds-and-mmaps.patch,
	+0032-virtio-fix-crash-in-statistics-functions.patch,
	+0033-virtio-fix-descriptors-pointing-to-the-same-buffer.patch,
	+0034-virtio-fix-restart.patch]

OBS-URL: https://build.opensuse.org/request/show/399089
OBS-URL: https://build.opensuse.org/package/show/network/dpdk?expand=0&rev=3
2016-05-31 11:30:42 +00:00

44 lines
1.6 KiB
Diff

From 8997a10bfcad789d000debaac4cd85cd3db57997 Mon Sep 17 00:00:00 2001
From: Eric Kinzie <ekinzie@brocade.com>
Date: Tue, 1 Mar 2016 09:32:01 -0800
Subject: [PATCH] bonding: fix active slaves with no primary
If the link state of a slave is "up" when added, it is added to the list
of active slaves but, even if it is the only slave, is not selected as
the primary interface. Generally, handling of link state interrupts
selects an interface to be primary, but only if the active count is zero.
This change avoids the situation where there are active slaves but
no primary.
Fixes: 2efb58cbab6e ("bond: new link bonding library")
Signed-off-by: Eric Kinzie <ekinzie@brocade.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Declan Doherty <declan.doherty@intel.com>
---
drivers/net/bonding/rte_eth_bond_api.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c
index a0995ec..5292ae1 100644
--- a/drivers/net/bonding/rte_eth_bond_api.c
+++ b/drivers/net/bonding/rte_eth_bond_api.c
@@ -419,8 +419,13 @@ __eth_bond_slave_add_lock_free(uint8_t bonded_port_id, uint8_t slave_port_id)
if (bonded_eth_dev->data->dev_started) {
rte_eth_link_get_nowait(slave_port_id, &link_props);
- if (link_props.link_status == 1)
+ if (link_props.link_status == 1) {
+ if (internals->active_slave_count == 0 &&
+ !internals->user_defined_primary_port)
+ bond_ethdev_primary_set(internals,
+ slave_port_id);
activate_slave(bonded_eth_dev, slave_port_id);
+ }
}
return 0;
--
2.6.2