From: Matias Elo <matias....@nokia.com> Implemented odp_pktio_capability() function in netmap.
Signed-off-by: Matias Elo <matias....@nokia.com> --- platform/linux-generic/include/odp_packet_netmap.h | 2 ++ platform/linux-generic/pktio/netmap.c | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/platform/linux-generic/include/odp_packet_netmap.h b/platform/linux-generic/include/odp_packet_netmap.h index 84bea65..a088d23 100644 --- a/platform/linux-generic/include/odp_packet_netmap.h +++ b/platform/linux-generic/include/odp_packet_netmap.h @@ -7,6 +7,7 @@ #ifndef ODP_PACKET_NETMAP_H #define ODP_PACKET_NETMAP_H +#include <odp/packet_io.h> #include <odp/pool.h> #include <linux/if_ether.h> @@ -22,6 +23,7 @@ typedef struct { int sockfd; /**< control socket */ unsigned char if_mac[ETH_ALEN]; /**< eth mac address */ char nm_name[IF_NAMESIZE + 7]; /**< netmap:<ifname> */ + odp_pktio_capability_t capa; /**< interface capabilities */ } pkt_netmap_t; #endif diff --git a/platform/linux-generic/pktio/netmap.c b/platform/linux-generic/pktio/netmap.c index e7f4af5..38cdd1f 100644 --- a/platform/linux-generic/pktio/netmap.c +++ b/platform/linux-generic/pktio/netmap.c @@ -130,6 +130,14 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, pktio_entry_t *pktio_entry, ODP_ERR("nm_open(%s) failed\n", pkt_nm->nm_name); goto error; } + pkt_nm->capa.max_input_queues = PKTIO_MAX_QUEUES; + if (desc->nifp->ni_rx_rings < PKTIO_MAX_QUEUES) + pkt_nm->capa.max_input_queues = desc->nifp->ni_rx_rings; + + pkt_nm->capa.max_output_queues = PKTIO_MAX_QUEUES; + if (desc->nifp->ni_tx_rings < PKTIO_MAX_QUEUES) + pkt_nm->capa.max_output_queues = desc->nifp->ni_tx_rings; + nm_close(desc); sockfd = socket(AF_INET, SOCK_DGRAM, 0); @@ -355,6 +363,13 @@ static int netmap_promisc_mode_get(pktio_entry_t *pktio_entry) pktio_entry->s.name); } +static int netmap_capability(pktio_entry_t *pktio_entry, + odp_pktio_capability_t *capa) +{ + *capa = pktio_entry->s.pkt_nm.capa; + return 0; +} + const pktio_if_ops_t netmap_pktio_ops = { .name = "netmap", .init = NULL, @@ -369,7 +384,7 @@ const pktio_if_ops_t netmap_pktio_ops = { .promisc_mode_set = netmap_promisc_mode_set, .promisc_mode_get = netmap_promisc_mode_get, .mac_get = netmap_mac_addr_get, - .capability = NULL, + .capability = netmap_capability, .input_queues_config = NULL, .output_queues_config = NULL, .in_queues = NULL, -- 2.6.3 _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp