diff options
author | Zoltan Kiss <zoltan.kiss@linaro.org> | 2015-11-03 14:41:14 +0000 |
---|---|---|
committer | Zoltan Kiss <zoltan.kiss@linaro.org> | 2015-11-03 14:49:03 +0000 |
commit | d8bceaec15a1ca37cd23d420b1f285c94e5736fc (patch) | |
tree | bb2720faa2913b01d957bd322648300d41455c8e | |
parent | f855321e3f7c242cb017bdcdd2d38e58aedc82a5 (diff) |
linux-dpdk: packet_io: implement start and stop for pktiov1.3.0.0_DPDK_2.1.0
The original implementation in 51226cbd 'Port 5176d3 "linux-generic: add
pktio_start and pktio_stop"' was only an empty one, this patch use the
relevant DPDK functions.
Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>
-rw-r--r-- | platform/linux-dpdk/odp_packet_dpdk.c | 8 | ||||
-rw-r--r-- | platform/linux-dpdk/odp_packet_io.c | 24 |
2 files changed, 22 insertions, 10 deletions
diff --git a/platform/linux-dpdk/odp_packet_dpdk.c b/platform/linux-dpdk/odp_packet_dpdk.c index 27f08fed6..aba98f86c 100644 --- a/platform/linux-dpdk/odp_packet_dpdk.c +++ b/platform/linux-dpdk/odp_packet_dpdk.c @@ -150,14 +150,6 @@ int setup_pkt_dpdk(pkt_dpdk_t * const pkt_dpdk, const char *netdev, } } - /* Start device */ - ret = rte_eth_dev_start(portid); - if (ret < 0) { - ODP_ERR("rte_eth_dev_start:err=%d, port=%u\n", - ret, (unsigned)portid); - return -1; - } - rte_eth_promiscuous_enable(portid); /* Some DPDK PMD vdev like pcap do not support promisc mode change. Use * system call for them. */ diff --git a/platform/linux-dpdk/odp_packet_io.c b/platform/linux-dpdk/odp_packet_io.c index 7cb1577a9..47caae856 100644 --- a/platform/linux-dpdk/odp_packet_io.c +++ b/platform/linux-dpdk/odp_packet_io.c @@ -938,12 +938,32 @@ int odp_pktio_mtu(odp_pktio_t id) return mtu; } -int odp_pktio_start(odp_pktio_t id ODP_UNUSED) +int odp_pktio_start(odp_pktio_t id) { + int ret; + pktio_entry_t *pktio_entry = get_pktio_entry(id); + if (!pktio_entry) { + ODP_ERR("No pktio found!\n"); + return -1; + } + + ret = rte_eth_dev_start(pktio_entry->s.pkt_dpdk.portid); + if (ret < 0) { + ODP_ERR("rte_eth_dev_start:err=%d, port=%u\n", + ret, pktio_entry->s.pkt_dpdk.portid); + return ret; + } + return 0; } -int odp_pktio_stop(odp_pktio_t id ODP_UNUSED) +int odp_pktio_stop(odp_pktio_t id) { + pktio_entry_t *pktio_entry = get_pktio_entry(id); + if (!pktio_entry) { + ODP_ERR("No pktio found!\n"); + return -1; + } + rte_eth_dev_stop(pktio_entry->s.pkt_dpdk.portid); return 0; } |