On 2015-11-20 13:40, Savolainen, Petri (Nokia - FI/Espoo) wrote: > Did you try --with-netmap-path=xxx ?
No, didn't see that I had to do that... what will that give me? =) Cheers, Anders > > -Petri > > > -----Original Message----- > > From: EXT Anders Roxell [mailto:[email protected]] > > Sent: Friday, November 20, 2015 3:29 PM > > To: Savolainen, Petri (Nokia - FI/Espoo) > > Cc: EXT Mike Holmes; lng-odp > > Subject: Re: [lng-odp] [API-NEXT PATCH v3 6/7] linux-generic: pktio: dummy > > multi-queue pktio > > > > On 2015-11-20 08:38, Savolainen, Petri (Nokia - FI/Espoo) wrote: > > > It build cleanly with ‘make’ and ‘make check’, but ‘make distcheck’ adds > > cast-qual warning level which catches the cast. The build system should be > > fixed to have same warning levels for all build targets! > > > > if you do: > > ./bootstrap && ./configure > > look at the output from configure at the end, you can see am_cflags... > > > > this is the output from ./bootstrap && ./configure: > > am_cflags: -pthread -DHAVE_PCAP -DODP_DEBUG_PRINT=1 - > > DODP_DEBUG=1 -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes - > > Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align > > -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef > > -Wwrite-strings -std=c99 > > > > This is the output from make distcheck when it runs another ./configure: > > am_cflags: -pthread -DHAVE_PCAP -DODP_DEBUG_PRINT=1 - > > DODP_DEBUG=1 -W -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes - > > Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align > > -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef > > -Wwrite-strings -std=c99 > > > > > > Cheers, > > Anders > > > > > > > > Cast is needed due to odp_queue_create() API definition. Additional cast > > to uintptr_t fixes this casting issue (in v4). It’s a topic for another > > patch set if all ODP APIs (including queue_create) should use const > > pointers. > > > > > > /* Ugly cast to uintptr_t is needed since queue_param is > > > * not defined as const in odp_queue_create() */ > > > queue = odp_queue_create("pktio_in", type, > > > > > (odp_queue_param_t *)(uintptr_t) > > > ¶m- > > >queue_param); > > > > > > -Petri > > > > > > > > > > > > From: EXT Mike Holmes [mailto:[email protected]] > > > Sent: Thursday, November 19, 2015 9:38 PM > > > To: Savolainen, Petri (Nokia - FI/Espoo) > > > Cc: lng-odp > > > Subject: Re: [lng-odp] [API-NEXT PATCH v3 6/7] linux-generic: pktio: > > dummy multi-queue pktio > > > > > > ls -l ~/incoming/petri > > > total 112 > > > -rw------- 1 mike mike 6191 Nov 19 13:55 lng-odp_API-NEXT_PATCH_v3_1- > > 7_api_pktio_added_pktio_capability_struct.mbox > > > -rw------- 1 mike mike 13307 Nov 19 13:55 lng-odp_API-NEXT_PATCH_v3_2- > > 7_api_pktio_added_multiple_pktio_input_queues.mbox > > > -rw------- 1 mike mike 6947 Nov 19 13:55 lng-odp_API-NEXT_PATCH_v3_3- > > 7_api_pktio_added_direct_queue_receive.mbox > > > -rw------- 1 mike mike 10190 Nov 19 13:55 lng-odp_API-NEXT_PATCH_v3_4- > > 7_api_pktio_added_multiple_pktio_output_queues.mbox > > > -rw------- 1 mike mike 7627 Nov 19 13:55 lng-odp_API-NEXT_PATCH_v3_5- > > 7_api_pktio_added_direct_send_to_pktio_output_queue.mbox > > > -rw------- 1 mike mike 24885 Nov 19 13:55 lng-odp_API-NEXT_PATCH_v3_6- > > 7_linux-generic_pktio_dummy_multi-queue_pktio.mbox > > > -rw------- 1 mike mike 29981 Nov 19 13:55 lng-odp_API-NEXT_PATCH_v3_7- > > 7_test_l2fwd_use_multi-queue_pktio_in_direct_mode.mbox > > > > > > GIT_BRANCH=api-next PATCH_DIR=~/incoming/petri ./apply-and-build.sh > > > > > > Using patch: lng-odp_API-NEXT_PATCH_v3_6-7_linux- > > generic_pktio_dummy_multi-queue_pktio.mbox > > > Trying to apply patch > > > Patch applied > > > Building with patch > > > make[1]: *** [odp_packet_io.lo] Error 1 > > > make: *** [all-recursive] Error 1 > > > BUILD ERROR! > > > /home/mike/git/check-odp/log/odp-apply/lng-odp_API-NEXT_PATCH_v3_6- > > 7_linux-generic_pktio_dummy_multi-queue_pktio.mbox-make.log > > > > > > Can be replicated with make distcheck > > > > > > 87f0454 :2015-11-19 - (HEAD -> api-next) linux-generic: pktio: dummy > > multi-queue pktio <Petri Savolainen> > > > * 1668e96 :2015-11-19 - api: pktio: added direct send to pktio output > > queue <Petri Savolainen> > > > * 85d1e61 :2015-11-19 - api: pktio: added multiple pktio output queues > > <Petri Savolainen> > > > > > > > > > odp_packet_io.c: In function 'single_input_queues_config': > > > odp_packet_io.c:1121:7: error: cast discards 'const' qualifier from > > pointer target type [-Werror=cast-qual] > > > (odp_queue_param_t *) > > > ^ > > > > > > > > > > > > On 19 November 2015 at 09:41, Petri Savolainen > > <[email protected]<mailto:[email protected]>> wrote: > > > Implemented multi-queue API with dummy single queue support. > > > Enables testing the API and provides stubbs for actual > > > multi-queue implementations. Not optimized. > > > > > > Signed-off-by: Petri Savolainen > > <[email protected]<mailto:[email protected]>> > > > --- > > > .../include/odp/plat/packet_io_types.h | 14 +- > > > .../linux-generic/include/odp_packet_io_internal.h | 46 ++++ > > > platform/linux-generic/odp_packet_io.c | 280 > > +++++++++++++++++++++ > > > platform/linux-generic/pktio/loop.c | 10 +- > > > platform/linux-generic/pktio/netmap.c | 10 +- > > > platform/linux-generic/pktio/pcap.c | 10 +- > > > platform/linux-generic/pktio/socket.c | 10 +- > > > platform/linux-generic/pktio/socket_mmap.c | 10 +- > > > 8 files changed, 382 insertions(+), 8 deletions(-) > > > > > > diff --git a/platform/linux-generic/include/odp/plat/packet_io_types.h > > b/platform/linux-generic/include/odp/plat/packet_io_types.h > > > index 1086463..25f7151 100644 > > > --- a/platform/linux-generic/include/odp/plat/packet_io_types.h > > > +++ b/platform/linux-generic/include/odp/plat/packet_io_types.h > > > @@ -21,16 +21,24 @@ extern "C" { > > > #include <odp/std_types.h> > > > #include <odp/plat/strong_types.h> > > > > > > -/** @addtogroup odp_packet_io ODP PACKET IO > > > +/** @addtogroup odp_packet_io > > > * Operations on a packet. > > > * @{ > > > */ > > > > > > typedef ODP_HANDLE_T(odp_pktio_t); > > > > > > -typedef ODP_HANDLE_T(odp_pktin_queue_t); > > > +/** @internal */ > > > +typedef struct odp_pktin_queue_t { > > > + odp_pktio_t pktio; /**< @internal pktio handle */ > > > + int index; /**< @internal pktio queue index */ > > > +} odp_pktin_queue_t; > > > > > > -typedef ODP_HANDLE_T(odp_pktout_queue_t); > > > +/** @internal */ > > > +typedef struct odp_pktout_queue_t { > > > + odp_pktio_t pktio; /**< @internal pktio handle */ > > > + int index; /**< @internal pktio queue index */ > > > +} odp_pktout_queue_t; > > > > > > #define ODP_PKTIO_INVALID _odp_cast_scalar(odp_pktio_t, 0) > > > > > > diff --git a/platform/linux-generic/include/odp_packet_io_internal.h > > b/platform/linux-generic/include/odp_packet_io_internal.h > > > index a46c6fe..2b6d116 100644 > > > --- a/platform/linux-generic/include/odp_packet_io_internal.h > > > +++ b/platform/linux-generic/include/odp_packet_io_internal.h > > > @@ -32,6 +32,8 @@ extern "C" { > > > > > > #define PKTIO_NAME_LEN 256 > > > > > > +#define PKTIO_MAX_QUEUES 64 > > > + > > > /** Determine if a socket read/write error should be reported. > > Transient errors > > > * that simply require the caller to retry are ignored, the > > _send/_recv APIs > > > * are non-blocking and it is the caller's responsibility to retry if > > the > > > @@ -87,6 +89,17 @@ struct pktio_entry { > > > char name[PKTIO_NAME_LEN]; /**< name of pktio provided to > > > pktio_open() */ > > > odp_pktio_param_t param; > > > + > > > + /* Storage for queue handles > > > + * Multi-queue support is pktio driver specific */ > > > + struct { > > > + odp_queue_t queue; > > > + odp_pktin_queue_t pktin; > > > + } in_queue[PKTIO_MAX_QUEUES]; > > > + > > > + struct { > > > + odp_pktout_queue_t pktout; > > > + } out_queue[PKTIO_MAX_QUEUES]; > > > }; > > > > > > typedef union { > > > @@ -116,6 +129,21 @@ typedef struct pktio_if_ops { > > > int (*promisc_mode_set)(pktio_entry_t *pktio_entry, int > > enable); > > > int (*promisc_mode_get)(pktio_entry_t *pktio_entry); > > > int (*mac_get)(pktio_entry_t *pktio_entry, void *mac_addr); > > > + int (*capability)(pktio_entry_t *pktio_entry, > > > + odp_pktio_capability_t *capa); > > > + int (*input_queues_config)(pktio_entry_t *pktio_entry, > > > + const odp_pktio_input_queue_param_t > > *param); > > > + int (*output_queues_config)(pktio_entry_t *pktio_entry, > > > + const odp_pktio_output_queue_param_t > > *p); > > > + int (*in_queues)(pktio_entry_t *entry, odp_queue_t queues[], int > > num); > > > + int (*pktin_queues)(pktio_entry_t *entry, odp_pktin_queue_t > > queues[], > > > + int num); > > > + int (*pktout_queues)(pktio_entry_t *entry, odp_pktout_queue_t > > queues[], > > > + int num); > > > + int (*recv_queue)(pktio_entry_t *entry, int index, > > > + odp_packet_t packets[], int num); > > > + int (*send_queue)(pktio_entry_t *entry, int index, > > > + odp_packet_t packets[], int num); > > > } pktio_if_ops_t; > > > > > > extern void *pktio_entry_ptr[]; > > > @@ -151,6 +179,24 @@ static inline void > > pktio_cls_enabled_set(pktio_entry_t *entry, int ena) > > > > > > int pktin_poll(pktio_entry_t *entry); > > > > > > +/* > > > + * Dummy single queue implementations of multi-queue API > > > + */ > > > +int single_capability(odp_pktio_capability_t *capa); > > > +int single_input_queues_config(pktio_entry_t *entry, > > > + const odp_pktio_input_queue_param_t > > *param); > > > +int single_output_queues_config(pktio_entry_t *entry, > > > + const odp_pktio_output_queue_param_t > > *param); > > > +int single_in_queues(pktio_entry_t *entry, odp_queue_t queues[], int > > num); > > > +int single_pktin_queues(pktio_entry_t *entry, odp_pktin_queue_t > > queues[], > > > + int num); > > > +int single_pktout_queues(pktio_entry_t *entry, odp_pktout_queue_t > > queues[], > > > + int num); > > > +int single_recv_queue(pktio_entry_t *entry, int index, odp_packet_t > > packets[], > > > + int num); > > > +int single_send_queue(pktio_entry_t *entry, int index, odp_packet_t > > packets[], > > > + int num); > > > + > > > extern const pktio_if_ops_t netmap_pktio_ops; > > > extern const pktio_if_ops_t sock_mmsg_pktio_ops; > > > extern const pktio_if_ops_t sock_mmap_pktio_ops; > > > diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux- > > generic/odp_packet_io.c > > > index 14fb0c5..b6b009d 100644 > > > --- a/platform/linux-generic/odp_packet_io.c > > > +++ b/platform/linux-generic/odp_packet_io.c > > > @@ -817,6 +817,16 @@ void odp_pktio_param_init(odp_pktio_param_t > > *params) > > > memset(params, 0, sizeof(odp_pktio_param_t)); > > > } > > > > > > +void odp_pktio_input_queue_param_init(odp_pktio_input_queue_param_t > > *param) > > > +{ > > > + memset(param, 0, sizeof(odp_pktio_input_queue_param_t)); > > > +} > > > + > > > +void odp_pktio_output_queue_param_init(odp_pktio_output_queue_param_t > > *param) > > > +{ > > > + memset(param, 0, sizeof(odp_pktio_output_queue_param_t)); > > > +} > > > + > > > void odp_pktio_print(odp_pktio_t id) > > > { > > > pktio_entry_t *entry; > > > @@ -905,3 +915,273 @@ int odp_pktio_term_global(void) > > > > > > return ret; > > > } > > > + > > > +int odp_pktio_capability(odp_pktio_t pktio, odp_pktio_capability_t > > *capa) > > > +{ > > > + pktio_entry_t *entry; > > > + > > > + entry = get_pktio_entry(pktio); > > > + if (entry == NULL) { > > > + ODP_DBG("pktio entry %d does not exist\n", pktio); > > > + return -1; > > > + } > > > + > > > + if (entry->s.ops->capability) > > > + return entry->s.ops->capability(entry, capa); > > > + > > > + return single_capability(capa); > > > +} > > > + > > > +int odp_pktio_input_queues_config(odp_pktio_t pktio, > > > + const odp_pktio_input_queue_param_t > > *param) > > > +{ > > > + pktio_entry_t *entry; > > > + > > > + if (param == NULL) > > > + return -1; > > > + > > > + entry = get_pktio_entry(pktio); > > > + if (entry == NULL) { > > > + ODP_DBG("pktio entry %d does not exist\n", pktio); > > > + return -1; > > > + } > > > + > > > + if (entry->s.ops->input_queues_config) > > > + return entry->s.ops->input_queues_config(entry, param); > > > + > > > + return single_input_queues_config(entry, param); > > > +} > > > + > > > +int odp_pktio_output_queues_config(odp_pktio_t pktio, > > > + const odp_pktio_output_queue_param_t > > *param) > > > +{ > > > + pktio_entry_t *entry; > > > + odp_pktio_output_mode_t mode; > > > + > > > + if (param == NULL) > > > + return -1; > > > + > > > + entry = get_pktio_entry(pktio); > > > + if (entry == NULL) { > > > + ODP_DBG("pktio entry %d does not exist\n", pktio); > > > + return -1; > > > + } > > > + > > > + mode = entry->s.param.out_mode; > > > + > > > + if (mode != ODP_PKTOUT_MODE_SEND) > > > + return -1; > > > + > > > + if (entry->s.ops->output_queues_config) > > > + return entry->s.ops->output_queues_config(entry, param); > > > + > > > + return single_output_queues_config(entry, param); > > > +} > > > + > > > +int odp_pktio_in_queues(odp_pktio_t pktio, odp_queue_t queues[], int > > num) > > > +{ > > > + pktio_entry_t *entry; > > > + odp_pktio_input_mode_t mode; > > > + > > > + entry = get_pktio_entry(pktio); > > > + if (entry == NULL) { > > > + ODP_DBG("pktio entry %d does not exist\n", pktio); > > > + return -1; > > > + } > > > + > > > + mode = entry->s.param.in_mode; > > > + > > > + if (mode != ODP_PKTIN_MODE_POLL && > > > + mode != ODP_PKTIN_MODE_SCHED) > > > + return -1; > > > + > > > + if (entry->s.ops->in_queues) > > > + return entry->s.ops->in_queues(entry, queues, num); > > > + > > > + return single_in_queues(entry, queues, num); > > > +} > > > + > > > +int odp_pktio_pktin_queues(odp_pktio_t pktio, odp_pktin_queue_t > > queues[], > > > + int num) > > > +{ > > > + pktio_entry_t *entry; > > > + odp_pktio_input_mode_t mode; > > > + > > > + entry = get_pktio_entry(pktio); > > > + if (entry == NULL) { > > > + ODP_DBG("pktio entry %d does not exist\n", pktio); > > > + return -1; > > > + } > > > + > > > + mode = entry->s.param.in_mode; > > > + > > > + if (mode != ODP_PKTIN_MODE_RECV) > > > + return -1; > > > + > > > + if (entry->s.ops->pktin_queues) > > > + return entry->s.ops->pktin_queues(entry, queues, num); > > > + > > > + return single_pktin_queues(entry, queues, num); > > > +} > > > + > > > +int odp_pktio_pktout_queues(odp_pktio_t pktio, odp_pktout_queue_t > > queues[], > > > + int num) > > > +{ > > > + pktio_entry_t *entry; > > > + odp_pktio_output_mode_t mode; > > > + > > > + entry = get_pktio_entry(pktio); > > > + if (entry == NULL) { > > > + ODP_DBG("pktio entry %d does not exist\n", pktio); > > > + return -1; > > > + } > > > + > > > + mode = entry->s.param.out_mode; > > > + > > > + if (mode != ODP_PKTOUT_MODE_SEND) > > > + return -1; > > > + > > > + if (entry->s.ops->pktout_queues) > > > + return entry->s.ops->pktout_queues(entry, queues, num); > > > + > > > + return single_pktout_queues(entry, queues, num); > > > +} > > > + > > > +int odp_pktio_recv_queue(odp_pktin_queue_t queue, odp_packet_t > > packets[], > > > + int num) > > > +{ > > > + pktio_entry_t *entry; > > > + odp_pktio_t pktio = queue.pktio; > > > + > > > + entry = get_pktio_entry(pktio); > > > + if (entry == NULL) { > > > + ODP_DBG("pktio entry %d does not exist\n", pktio); > > > + return -1; > > > + } > > > + > > > + if (entry->s.ops->recv_queue) > > > + return entry->s.ops->recv_queue(entry, queue.index, > > > + packets, num); > > > + > > > + return single_recv_queue(entry, queue.index, packets, num); > > > +} > > > + > > > +int odp_pktio_send_queue(odp_pktout_queue_t queue, odp_packet_t > > packets[], > > > + int num) > > > +{ > > > + pktio_entry_t *entry; > > > + odp_pktio_t pktio = queue.pktio; > > > + > > > + entry = get_pktio_entry(pktio); > > > + if (entry == NULL) { > > > + ODP_DBG("pktio entry %d does not exist\n", pktio); > > > + return -1; > > > + } > > > + > > > + if (entry->s.ops->send_queue) > > > + return entry->s.ops->send_queue(entry, queue.index, > > > + packets, num); > > > + > > > + return single_send_queue(entry, queue.index, packets, num); > > > +} > > > + > > > +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; > > > + > > > + return 0; > > > +} > > > + > > > +int single_input_queues_config(pktio_entry_t *entry, > > > + const odp_pktio_input_queue_param_t > > *param) > > > +{ > > > + odp_queue_t queue; > > > + odp_pktio_input_mode_t mode; > > > + > > > + mode = entry->s.param.in_mode; > > > + > > > + if (param->num_queues != 1) > > > + return -1; > > > + > > > + if (mode == ODP_PKTIN_MODE_DISABLED) > > > + return -1; > > > + > > > + if (mode == ODP_PKTIN_MODE_POLL || > > > + mode == ODP_PKTIN_MODE_SCHED) { > > > + odp_queue_type_t type = ODP_QUEUE_TYPE_POLL; > > > + > > > + if (mode == ODP_PKTIN_MODE_SCHED) > > > + type = ODP_QUEUE_TYPE_SCHED; > > > + > > > + /* cast needed since queue_param is not defined as const > > in > > > + * in odp_queue_create() */ > > > + queue = odp_queue_create("pktio_in", type, > > > + (odp_queue_param_t *) > > > + ¶m->queue_param); > > > + > > > + if (queue == ODP_QUEUE_INVALID) > > > + return -1; > > > + > > > + entry->s.in_queue[0].queue = queue; > > > + } else { > > > + entry->s.in_queue[0].queue = ODP_QUEUE_INVALID; > > > + entry->s.in_queue[0].pktin.pktio = entry->s.handle; > > > + entry->s.in_queue[0].pktin.index = 0; > > > + } > > > + > > > + return 0; > > > +} > > > + > > > +int single_output_queues_config(pktio_entry_t *entry, > > > + const odp_pktio_output_queue_param_t > > *param) > > > +{ > > > + if (param->num_queues != 1) > > > + return -1; > > > + > > > + entry->s.out_queue[0].pktout.pktio = entry->s.handle; > > > + entry->s.out_queue[0].pktout.index = 0; > > > + > > > + return 0; > > > +} > > > + > > > +int single_in_queues(pktio_entry_t *entry, odp_queue_t queues[], int > > num) > > > +{ > > > + if (queues && num > 0) > > > + queues[0] = entry->s.in_queue[0].queue; > > > + > > > + return 1; > > > +} > > > + > > > +int single_pktin_queues(pktio_entry_t *entry, odp_pktin_queue_t > > queues[], > > > + int num) > > > +{ > > > + if (queues && num > 0) > > > + queues[0] = entry->s.in_queue[0].pktin; > > > + > > > + return 1; > > > +} > > > + > > > +int single_pktout_queues(pktio_entry_t *entry, odp_pktout_queue_t > > queues[], > > > + int num) > > > +{ > > > + if (queues && num > 0) > > > + queues[0] = entry->s.out_queue[0].pktout; > > > + > > > + return 1; > > > +} > > > + > > > +int single_recv_queue(pktio_entry_t *entry, int index, odp_packet_t > > packets[], > > > + int num) > > > +{ > > > + (void)index; > > > + return odp_pktio_recv(entry->s.handle, packets, num); > > > +} > > > + > > > +int single_send_queue(pktio_entry_t *entry, int index, odp_packet_t > > packets[], > > > + int num) > > > +{ > > > + (void)index; > > > + return odp_pktio_send(entry->s.handle, packets, num); > > > +} > > > diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux- > > generic/pktio/loop.c > > > index 44da917..47a42ff 100644 > > > --- a/platform/linux-generic/pktio/loop.c > > > +++ b/platform/linux-generic/pktio/loop.c > > > @@ -120,5 +120,13 @@ const pktio_if_ops_t loopback_pktio_ops = { > > > .mtu_get = loopback_mtu_get, > > > .promisc_mode_set = loopback_promisc_mode_set, > > > .promisc_mode_get = loopback_promisc_mode_get, > > > - .mac_get = loopback_mac_addr_get > > > + .mac_get = loopback_mac_addr_get, > > > + .capability = NULL, > > > + .input_queues_config = NULL, > > > + .output_queues_config = NULL, > > > + .in_queues = NULL, > > > + .pktin_queues = NULL, > > > + .pktout_queues = NULL, > > > + .recv_queue = NULL, > > > + .send_queue = NULL > > > }; > > > diff --git a/platform/linux-generic/pktio/netmap.c b/platform/linux- > > generic/pktio/netmap.c > > > index 20a144d..c4db4b5 100644 > > > --- a/platform/linux-generic/pktio/netmap.c > > > +++ b/platform/linux-generic/pktio/netmap.c > > > @@ -347,7 +347,15 @@ const pktio_if_ops_t netmap_pktio_ops = { > > > .mtu_get = netmap_mtu_get, > > > .promisc_mode_set = netmap_promisc_mode_set, > > > .promisc_mode_get = netmap_promisc_mode_get, > > > - .mac_get = netmap_mac_addr_get > > > + .mac_get = netmap_mac_addr_get, > > > + .capability = NULL, > > > + .input_queues_config = NULL, > > > + .output_queues_config = NULL, > > > + .in_queues = NULL, > > > + .pktin_queues = NULL, > > > + .pktout_queues = NULL, > > > + .recv_queue = NULL, > > > + .send_queue = NULL > > > }; > > > > > > #endif /* ODP_NETMAP */ > > > diff --git a/platform/linux-generic/pktio/pcap.c b/platform/linux- > > generic/pktio/pcap.c > > > index 94b506d..d1ac1b0 100644 > > > --- a/platform/linux-generic/pktio/pcap.c > > > +++ b/platform/linux-generic/pktio/pcap.c > > > @@ -378,5 +378,13 @@ const pktio_if_ops_t pcap_pktio_ops = { > > > .mtu_get = pcapif_mtu_get, > > > .promisc_mode_set = pcapif_promisc_mode_set, > > > .promisc_mode_get = pcapif_promisc_mode_get, > > > - .mac_get = pcapif_mac_addr_get > > > + .mac_get = pcapif_mac_addr_get, > > > + .capability = NULL, > > > + .input_queues_config = NULL, > > > + .output_queues_config = NULL, > > > + .in_queues = NULL, > > > + .pktin_queues = NULL, > > > + .pktout_queues = NULL, > > > + .recv_queue = NULL, > > > + .send_queue = NULL > > > }; > > > diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux- > > generic/pktio/socket.c > > > index 56b0a8b..d9baca3 100644 > > > --- a/platform/linux-generic/pktio/socket.c > > > +++ b/platform/linux-generic/pktio/socket.c > > > @@ -480,5 +480,13 @@ const pktio_if_ops_t sock_mmsg_pktio_ops = { > > > .mtu_get = sock_mtu_get, > > > .promisc_mode_set = sock_promisc_mode_set, > > > .promisc_mode_get = sock_promisc_mode_get, > > > - .mac_get = sock_mac_addr_get > > > + .mac_get = sock_mac_addr_get, > > > + .capability = NULL, > > > + .input_queues_config = NULL, > > > + .output_queues_config = NULL, > > > + .in_queues = NULL, > > > + .pktin_queues = NULL, > > > + .pktout_queues = NULL, > > > + .recv_queue = NULL, > > > + .send_queue = NULL > > > }; > > > diff --git a/platform/linux-generic/pktio/socket_mmap.c > > b/platform/linux-generic/pktio/socket_mmap.c > > > index 6bbe525..b2adfa6 100644 > > > --- a/platform/linux-generic/pktio/socket_mmap.c > > > +++ b/platform/linux-generic/pktio/socket_mmap.c > > > @@ -554,5 +554,13 @@ const pktio_if_ops_t sock_mmap_pktio_ops = { > > > .mtu_get = sock_mmap_mtu_get, > > > .promisc_mode_set = sock_mmap_promisc_mode_set, > > > .promisc_mode_get = sock_mmap_promisc_mode_get, > > > - .mac_get = sock_mmap_mac_addr_get > > > + .mac_get = sock_mmap_mac_addr_get, > > > + .capability = NULL, > > > + .input_queues_config = NULL, > > > + .output_queues_config = NULL, > > > + .in_queues = NULL, > > > + .pktin_queues = NULL, > > > + .pktout_queues = NULL, > > > + .recv_queue = NULL, > > > + .send_queue = NULL > > > }; > > > -- > > > 2.6.2 > > > > > > _______________________________________________ > > > lng-odp mailing list > > > [email protected]<mailto:[email protected]> > > > https://lists.linaro.org/mailman/listinfo/lng-odp > > > > > > > > > > > > -- > > > Mike Holmes > > > Technical Manager - Linaro Networking Group > > > Linaro.org<http://www.linaro.org/> │ Open source software for ARM SoCs > > > > > > > > _______________________________________________ > > > lng-odp mailing list > > > [email protected] > > > https://lists.linaro.org/mailman/listinfo/lng-odp > > > > > > -- > > Anders Roxell > > [email protected] > > M: +46 709 71 42 85 | IRC: roxell -- Anders Roxell [email protected] M: +46 709 71 42 85 | IRC: roxell _______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
