aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2020-06-29 10:54:38 +0300
committerMatias Elo <matias.elo@nokia.com>2020-06-30 08:33:20 +0300
commitbd75b10924e6df74089d27482dd68bdef33eaf83 (patch)
tree224e06b94a2024683299995e357b71409fd5cbab
parent11314a0b7585edec8f9956dd00d1bc12f4fe3210 (diff)
linux-dpdk: pktio: fix setting promiscuous mode
Previously, calling odp_pktio_start() would always disable promiscuous mode. Fix this by moving promiscuous mode check into odp_pktio_open(). Signed-off-by: Matias Elo <matias.elo@nokia.com> Reported-by: Marian Beniac <marian.beniac@nokia.com>
-rw-r--r--platform/linux-dpdk/odp_packet_dpdk.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/platform/linux-dpdk/odp_packet_dpdk.c b/platform/linux-dpdk/odp_packet_dpdk.c
index c9b71ff60..ba3f47b8f 100644
--- a/platform/linux-dpdk/odp_packet_dpdk.c
+++ b/platform/linux-dpdk/odp_packet_dpdk.c
@@ -715,6 +715,13 @@ static int setup_pkt_dpdk(odp_pktio_t pktio ODP_UNUSED,
}
pkt_dpdk->mtu = mtu + _ODP_ETHHDR_LEN;
+ /* Setup promiscuous mode and multicast */
+ promisc_mode_check(pkt_dpdk);
+ if (pkt_dpdk->opt.multicast_enable)
+ rte_eth_allmulticast_enable(pkt_dpdk->port_id);
+ else
+ rte_eth_allmulticast_disable(pkt_dpdk->port_id);
+
for (i = 0; i < PKTIO_MAX_QUEUES; i++) {
odp_ticketlock_init(&pkt_dpdk->rx_lock[i]);
odp_ticketlock_init(&pkt_dpdk->tx_lock[i]);
@@ -887,13 +894,6 @@ static int dpdk_start(pktio_entry_t *pktio_entry)
if (dpdk_setup_eth_rx(pktio_entry, pkt_dpdk, &dev_info))
return -1;
- /* Setup promiscuous mode and multicast */
- promisc_mode_check(pkt_dpdk);
- if (pkt_dpdk->opt.multicast_enable)
- rte_eth_allmulticast_enable(port_id);
- else
- rte_eth_allmulticast_disable(port_id);
-
/* Add callback for loopback interface */
if (pkt_dpdk->loopback) {
unsigned int i;