> -----Original Message-----
> From: ext Zoltan Kiss [mailto:[email protected]]
> Sent: Thursday, April 16, 2015 11:05 PM
> To: Savolainen, Petri (Nokia - FI/Espoo); [email protected]
> Subject: Re: [lng-odp] [RFC API-NEXT PATCH] packet_io: add bitmap to
> specify what level of parsing needed
>
>
>
> On 16/04/15 13:33, Savolainen, Petri (Nokia - FI/Espoo) wrote:
> > Hi,
> >
> > I think this should be typed (as bit field) and part of the
> odp_pktio_param_t params that I introduced in patch "api: packet_io: added
> odp_pktio_param_t". I could rework those patches and add it there.
> Ok, that would be probably even better.
>
> >
> > Something like this,
> >
> > typedef struct odp_pktio_input_flags_t {
> > struct {
> > uint64_t eth:1;
> > uint64_t jumbo:1;
> > uint64_t vlan:1;
> > ...
> >
> > uint64_t _reserved:27;
> > };
> > } odp_pktio_input_flags_t;
> I think it would be better to have a name which contains "parse" in some
> way.
This same definition could be reused somewhere else in the API ...
>
> >
> >
> > typedef struct odp_pktio_param_t {
> > /** Packet input mode */
> > enum odp_pktio_input_mode in_mode;
> > /** Packet input parser flags */
> > odp_pktio_input_flags_t flags;
... but here it could be contained.
odp_pktio_input_flags_t parse;
-petri
> > } odp_pktio_param_t;
> >
> >
> > odp_pktio_t odp_pktio_open(const char *dev, odp_pool_t pool,
> > const odp_pktio_param_t *param);
> >
> >
> > -Petri
> >
> >
> >> -----Original Message-----
> >> From: lng-odp [mailto:[email protected]] On Behalf Of
> ext
> >> Zoltan Kiss
> >> Sent: Wednesday, April 15, 2015 7:01 PM
> >> To: [email protected]
> >> Subject: [lng-odp] [RFC API-NEXT PATCH] packet_io: add bitmap to
> specify
> >> what level of parsing needed
> >>
> >> odp_pktio_open() will have a 32 bit bitmask to specify what kind of
> header
> >> parsing is required by the application.
> >>
> >> Signed-off-by: Zoltan Kiss <[email protected]>
> >> ---
> >> include/odp/api/packet_flags.h | 49
> >> ++++++++++++++++++++++++++++++++++++++++++
> >> include/odp/api/packet_io.h | 14 ++++++++----
> >> 2 files changed, 59 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/include/odp/api/packet_flags.h
> >> b/include/odp/api/packet_flags.h
> >> index b1e179e..467d4f1 100644
> >> --- a/include/odp/api/packet_flags.h
> >> +++ b/include/odp/api/packet_flags.h
> >> @@ -327,6 +327,55 @@ void odp_packet_has_sctp_set(odp_packet_t pkt, int
> >> val);
> >> void odp_packet_has_icmp_set(odp_packet_t pkt, int val);
> >>
> >> /**
> >> + * Shift values for enum odp_packet_parse. Has to be updated together
> >> with
> >> + * odp_packet_parse_e type. The parameter passed to odp_pktio_open is
> a
> >> 32 bit
> >> + * mask.
> >> + */
> >> +typedef enum odp_packet_parse_shift {
> >> + ODP_PARSE_SHIFT_ETH,
> >> + ODP_PARSE_SHIFT_JUMBO,
> >> + ODP_PARSE_SHIFT_VLAN,
> >> + ODP_PARSE_SHIFT_VLAN_QINQ,
> >> + ODP_PARSE_SHIFT_ARP,
> >> + ODP_PARSE_SHIFT_IPV4,
> >> + ODP_PARSE_SHIFT_IPV6,
> >> + ODP_PARSE_SHIFT_IPFRAG,
> >> + ODP_PARSE_SHIFT_IPOPT,
> >> + ODP_PARSE_SHIFT_IPSEC,
> >> + ODP_PARSE_SHIFT_UDP,
> >> + ODP_PARSE_SHIFT_TCP,
> >> + ODP_PARSE_SHIFT_SCTP,
> >> + ODP_PARSE_SHIFT_ICMP,
> >> + ODP_PARSE_SHIFT_MAX = 31
> >> +} odp_packet_parse_shift_e;
> >> +
> >> +#define ODP_PARSE(FIELD) ODP_PARSE_##FIELD = (ODP_PARSE_SHIFT_##FIELD
> <<
> >> 1)
> >> +
> >> +/**
> >> + * Values to be used when calling odp_pktio_open. The parser_mask
> >> parameter has
> >> + * to be one or more of these values joined with bitwise OR. Or one of
> >> the two
> >> + * special values: ODP_PARSE_NONE or ODP_PARSE_ALL.
> >> + * Has to be updated together with odp_packet_parse_shift_e
> >> + */
> >> +typedef enum odp_packet_parse {
> >> + ODP_PARSE_NONE = 0, /* The application don't want any
> parsing */
> >> + ODP_PARSE(ETH), /* Parse Ethernet header */
> >> + ODP_PARSE(JUMBO), /* Parse Ethernet header if a jumbo
> >> frame */
> >> + ODP_PARSE(VLAN), /* Parse VLAN header */
> >> + ODP_PARSE(VLAN_QINQ), /* Parse VLAN QinQ header */
> >> + ODP_PARSE(ARP), /* Parse ARP header */
> >> + ODP_PARSE(IPV4), /* Parse IPv4 header */
> >> + ODP_PARSE(IPV6), /* Parse IPv6 header */
> >> + ODP_PARSE(IPFRAG), /* Parse IPv4 header if fragmented */
> >> + ODP_PARSE(IPOPT), /* Parse IP options */
> >> + ODP_PARSE(IPSEC), /* Parse IPsec header */
> >> + ODP_PARSE(UDP), /* Parse UDP header */
> >> + ODP_PARSE(TCP), /* Parse TCP header */
> >> + ODP_PARSE(SCTP), /* Parse SCTP header */
> >> + ODP_PARSE(ICMP), /* Parse ICMP header */
> >> + ODP_PARSE_ALL = UINT32_MAX /* The application wants full parsing
> */
> >> +} odp_packet_parse_e;
> >> +/**
> >> * @}
> >> */
> >>
> >> diff --git a/include/odp/api/packet_io.h b/include/odp/api/packet_io.h
> >> index 6d31aeb..8c989f3 100644
> >> --- a/include/odp/api/packet_io.h
> >> +++ b/include/odp/api/packet_io.h
> >> @@ -51,9 +51,14 @@ extern "C" {
> >> * open device will fail, returning ODP_PKTIO_INVALID with errno set.
> >> * odp_pktio_lookup() may be used to obtain a handle to an already
> open
> >> device.
> >> *
> >> - * @param dev Packet IO device name
> >> - * @param pool Pool from which to allocate buffers for storing
> packets
> >> - * received over this packet IO
> >> + * @param dev Packet IO device name
> >> + * @param pool Pool from which to allocate buffers for
> storing
> >> packets
> >> + * received over this packet IO
> >> + * @param parsing_mask Mask to request parsing. Must be one or more
> >> ODP_PARSE_*
> >> + * value joined with bitwise OR to request
> >> particular
> >> + * fields to be parsed. Or one of two special
> >> values:
> >> + * ODP_PARSE_NONE or ODP_PARSE_ALL. See
> >> odp_packet_parse_e
> >> + * in packet_flags.h for more details
> >> *
> >> * @return ODP packet IO handle
> >> * @retval ODP_PKTIO_INVALID on failure
> >> @@ -62,7 +67,8 @@ extern "C" {
> >> * device used for testing. Usually it's loop back
> >> * interface.
> >> */
> >> -odp_pktio_t odp_pktio_open(const char *dev, odp_pool_t pool);
> >> +odp_pktio_t odp_pktio_open(const char *dev, odp_pool_t pool,
> >> + uint32_t parsing_mask);
> >>
> >> /**
> >> * Close an ODP packet IO instance
> >> --
> >> 1.9.1
> >>
> >> _______________________________________________
> >> lng-odp mailing list
> >> [email protected]
> >> https://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp