Set new pktio capability supported set operations flags
(promisc_mode) for pktio devices.

Configuring promiscuous mode is not supported for virtual
netmap VALE/pipe devices.

Reviewed-by: Petri Savolainen <petri.savolai...@nokia.com>
Signed-off-by: Matias Elo <matias....@nokia.com>
---
 platform/linux-generic/odp_packet_io.c | 1 +
 platform/linux-generic/pktio/dpdk.c    | 1 +
 platform/linux-generic/pktio/netmap.c  | 3 +++
 3 files changed, 5 insertions(+)

diff --git a/platform/linux-generic/odp_packet_io.c 
b/platform/linux-generic/odp_packet_io.c
index e3827ae..14191df 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -1282,6 +1282,7 @@ int single_capability(odp_pktio_capability_t *capa)
        memset(capa, 0, sizeof(odp_pktio_capability_t));
        capa->max_input_queues  = 1;
        capa->max_output_queues = 1;
+       capa->set_op.op.promisc_mode = 1;
 
        return 0;
 }
diff --git a/platform/linux-generic/pktio/dpdk.c 
b/platform/linux-generic/pktio/dpdk.c
index c81bb43..83a8666 100644
--- a/platform/linux-generic/pktio/dpdk.c
+++ b/platform/linux-generic/pktio/dpdk.c
@@ -445,6 +445,7 @@ static int dpdk_open(odp_pktio_t id ODP_UNUSED,
                                                  PKTIO_MAX_QUEUES);
        pkt_dpdk->capa.max_output_queues = RTE_MIN(dev_info.max_tx_queues,
                                                   PKTIO_MAX_QUEUES);
+       pkt_dpdk->capa.set_op.op.promisc_mode = 1;
 
        if (rte_eth_dev_get_mtu(pktio_entry->s.pkt_dpdk.port_id, &mtu) != 0) {
                ODP_ERR("Failed to read interface MTU\n");
diff --git a/platform/linux-generic/pktio/netmap.c 
b/platform/linux-generic/pktio/netmap.c
index 5828669..19a4d9e 100644
--- a/platform/linux-generic/pktio/netmap.c
+++ b/platform/linux-generic/pktio/netmap.c
@@ -345,6 +345,8 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, 
pktio_entry_t *pktio_entry,
        if (desc->nifp->ni_tx_rings < PKTIO_MAX_QUEUES)
                pkt_nm->capa.max_output_queues = desc->nifp->ni_tx_rings;
 
+       pkt_nm->capa.set_op.op.promisc_mode = 1;
+
        ring = NETMAP_RXRING(desc->nifp, desc->cur_rx_ring);
        buf_size = ring->nr_buf_size;
        nm_close(desc);
@@ -358,6 +360,7 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, 
pktio_entry_t *pktio_entry,
                static unsigned mac;
 
                pkt_nm->capa.max_input_queues = 1;
+               pkt_nm->capa.set_op.op.promisc_mode = 0;
                pkt_nm->mtu = buf_size;
                pktio_entry->s.stats_type = STATS_UNSUPPORTED;
                /* Set MAC address for virtual interface */
-- 
1.9.1

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to