diff options
Diffstat (limited to 'dpdk/dpdk-16.11_patches/0002-ethdev-fix-MAC-address-replay.patch')
-rw-r--r-- | dpdk/dpdk-16.11_patches/0002-ethdev-fix-MAC-address-replay.patch | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/dpdk/dpdk-16.11_patches/0002-ethdev-fix-MAC-address-replay.patch b/dpdk/dpdk-16.11_patches/0002-ethdev-fix-MAC-address-replay.patch deleted file mode 100644 index 951694ded79..00000000000 --- a/dpdk/dpdk-16.11_patches/0002-ethdev-fix-MAC-address-replay.patch +++ /dev/null @@ -1,83 +0,0 @@ -From fb7c10892b057533931553f9367acd5541a0537c Mon Sep 17 00:00:00 2001 -From: Steve Shin <jonshin@cisco.com> -Date: Mon, 30 Jan 2017 09:12:25 -0800 -Subject: [PATCH] This patch fixes a bug in replaying MAC address to the - hardware in rte_eth_dev_config_restore() routine. Added default MAC replay as - well. - -Fixes: 4bdefaade6d1 ("ethdev: VMDQ enhancements") - -Signed-off-by: Steve Shin <jonshin@cisco.com> ---- - lib/librte_ether/rte_ethdev.c | 48 ++++++++++++++++++++++++------------------- - 1 file changed, 27 insertions(+), 21 deletions(-) - -diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c -index fde8112..2c07dfe 100644 ---- a/lib/librte_ether/rte_ethdev.c -+++ b/lib/librte_ether/rte_ethdev.c -@@ -857,34 +857,40 @@ struct rte_eth_dev * - { - struct rte_eth_dev *dev; - struct rte_eth_dev_info dev_info; -- struct ether_addr addr; -+ struct ether_addr *addr; - uint16_t i; - uint32_t pool = 0; -+ uint64_t pool_mask; - - dev = &rte_eth_devices[port_id]; - - rte_eth_dev_info_get(port_id, &dev_info); - -- if (RTE_ETH_DEV_SRIOV(dev).active) -- pool = RTE_ETH_DEV_SRIOV(dev).def_vmdq_idx; -- -- /* replay MAC address configuration */ -- for (i = 0; i < dev_info.max_mac_addrs; i++) { -- addr = dev->data->mac_addrs[i]; -- -- /* skip zero address */ -- if (is_zero_ether_addr(&addr)) -- continue; -- -- /* add address to the hardware */ -- if (*dev->dev_ops->mac_addr_add && -- (dev->data->mac_pool_sel[i] & (1ULL << pool))) -- (*dev->dev_ops->mac_addr_add)(dev, &addr, i, pool); -- else { -- RTE_PMD_DEBUG_TRACE("port %d: MAC address array not supported\n", -- port_id); -- /* exit the loop but not return an error */ -- break; -+ /* replay MAC address configuration including default MAC */ -+ addr = &dev->data->mac_addrs[0]; -+ if (*dev->dev_ops->mac_addr_set != NULL) -+ (*dev->dev_ops->mac_addr_set)(dev, addr); -+ else if (*dev->dev_ops->mac_addr_add != NULL) -+ (*dev->dev_ops->mac_addr_add)(dev, addr, 0, pool); -+ -+ if (*dev->dev_ops->mac_addr_add != NULL) { -+ for (i = 1; i < dev_info.max_mac_addrs; i++) { -+ addr = &dev->data->mac_addrs[i]; -+ -+ /* skip zero address */ -+ if (is_zero_ether_addr(addr)) -+ continue; -+ -+ pool = 0; -+ pool_mask = dev->data->mac_pool_sel[i]; -+ -+ do { -+ if (pool_mask & 1ULL) -+ (*dev->dev_ops->mac_addr_add)(dev, -+ addr, i, pool); -+ pool_mask >>= 1; -+ pool++; -+ } while (pool_mask); - } - } - --- -1.9.1 - |