Message ID | 1466398345-28665-1-git-send-email-yi.he@linaro.org |
---|---|
State | Superseded |
Headers | show |
Hello Yi, naming is wrong here. odp_ prefix has to be used only for api symbols, not for internal things. So it has to be _odp or without prefix. Maxim. On 06/20/16 07:52, Yi He wrote: > Remove all dependencies to helper by copying > protocol header definitions into linux-generic, > checked and decoupled all odph_* ODPH_* references. > > Signed-off-by: Yi He <yi.he@linaro.org> > --- > platform/linux-generic/Makefile.am | 7 +- > .../include/odp_classification_inlines.h | 50 +++--- > .../include/odp_name_table_internal.h | 2 +- > .../linux-generic/include/protocols}/eth.h | 111 ++++++------- > .../linux-generic/include/protocols}/ip.h | 180 ++++++--------------- > .../linux-generic/include/protocols}/ipsec.h | 32 ++-- > .../linux-generic/include/protocols}/tcp.h | 12 +- > .../linux-generic/include/protocols}/udp.h | 34 +--- > platform/linux-generic/odp_classification.c | 23 +-- > platform/linux-generic/odp_packet.c | 106 ++++++------ > platform/linux-generic/odp_traffic_mngr.c | 76 ++++----- > platform/linux-generic/pktio/dpdk.c | 4 +- > platform/linux-generic/pktio/loop.c | 4 +- > platform/linux-generic/pktio/netmap.c | 6 +- > platform/linux-generic/pktio/pcap.c | 6 +- > platform/linux-generic/pktio/ring.c | 9 +- > platform/linux-generic/pktio/socket.c | 8 +- > platform/linux-generic/pktio/socket_mmap.c | 26 +-- > 18 files changed, 295 insertions(+), 401 deletions(-) > copy {helper/include/odp/helper => platform/linux-generic/include/protocols}/eth.h (25%) > copy {helper/include/odp/helper => platform/linux-generic/include/protocols}/ip.h (37%) > copy {helper/include/odp/helper => platform/linux-generic/include/protocols}/ipsec.h (64%) > copy {helper/include/odp/helper => platform/linux-generic/include/protocols}/tcp.h (88%) > copy {helper/include/odp/helper => platform/linux-generic/include/protocols}/udp.h (47%) > > diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am > index 469869e..c8fd8cb 100644 > --- a/platform/linux-generic/Makefile.am > +++ b/platform/linux-generic/Makefile.am > @@ -6,8 +6,6 @@ include $(top_srcdir)/platform/@with_platform@/Makefile.inc > > AM_CFLAGS += -I$(srcdir)/include > AM_CFLAGS += -I$(top_srcdir)/include > -AM_CFLAGS += -I$(top_srcdir)/helper/include > -AM_CFLAGS += -I$(top_srcdir)/helper > > include_HEADERS = \ > $(top_srcdir)/include/odp.h \ > @@ -125,6 +123,11 @@ noinst_HEADERS = \ > ${srcdir}/include/odp_timer_internal.h \ > ${srcdir}/include/odp_timer_wheel_internal.h \ > ${srcdir}/include/odp_traffic_mngr_internal.h \ > + ${srcdir}/include/protocols/eth.h \ > + ${srcdir}/include/protocols/ip.h \ > + ${srcdir}/include/protocols/ipsec.h \ > + ${srcdir}/include/protocols/tcp.h \ > + ${srcdir}/include/protocols/udp.h \ > ${srcdir}/Makefile.inc > > __LIB__libodp_linux_la_SOURCES = \ > diff --git a/platform/linux-generic/include/odp_classification_inlines.h b/platform/linux-generic/include/odp_classification_inlines.h > index 611d706..e4671eb 100644 > --- a/platform/linux-generic/include/odp_classification_inlines.h > +++ b/platform/linux-generic/include/odp_classification_inlines.h > @@ -19,11 +19,11 @@ extern "C" { > #endif > > #include <odp/api/debug.h> > -#include <odp/helper/eth.h> > -#include <odp/helper/ip.h> > -#include <odp/helper/ipsec.h> > -#include <odp/helper/udp.h> > -#include <odp/helper/tcp.h> > +#include <protocols/eth.h> > +#include <protocols/ip.h> > +#include <protocols/ipsec.h> > +#include <protocols/udp.h> > +#include <protocols/tcp.h> > #include <odp_packet_internal.h> > > /* PMR term value verification function > @@ -45,11 +45,11 @@ static inline int verify_pmr_ip_proto(const uint8_t *pkt_addr, > odp_packet_hdr_t *pkt_hdr, > pmr_term_value_t *term_value) > { > - const odph_ipv4hdr_t *ip; > + const odp_ipv4hdr_t *ip; > uint8_t proto; > if (!pkt_hdr->p.input_flags.ipv4) > return 0; > - ip = (const odph_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); > + ip = (const odp_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); > proto = ip->proto; > if (term_value->match.value == (proto & term_value->match.mask)) > return 1; > @@ -61,11 +61,11 @@ static inline int verify_pmr_ipv4_saddr(const uint8_t *pkt_addr, > odp_packet_hdr_t *pkt_hdr, > pmr_term_value_t *term_value) > { > - const odph_ipv4hdr_t *ip; > + const odp_ipv4hdr_t *ip; > uint32_t ipaddr; > if (!pkt_hdr->p.input_flags.ipv4) > return 0; > - ip = (const odph_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); > + ip = (const odp_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); > ipaddr = odp_be_to_cpu_32(ip->src_addr); > if (term_value->match.value == (ipaddr & term_value->match.mask)) > return 1; > @@ -77,11 +77,11 @@ static inline int verify_pmr_ipv4_daddr(const uint8_t *pkt_addr, > odp_packet_hdr_t *pkt_hdr, > pmr_term_value_t *term_value) > { > - const odph_ipv4hdr_t *ip; > + const odp_ipv4hdr_t *ip; > uint32_t ipaddr; > if (!pkt_hdr->p.input_flags.ipv4) > return 0; > - ip = (const odph_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); > + ip = (const odp_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); > ipaddr = odp_be_to_cpu_32(ip->dst_addr); > if (term_value->match.value == (ipaddr & term_value->match.mask)) > return 1; > @@ -94,10 +94,10 @@ static inline int verify_pmr_tcp_sport(const uint8_t *pkt_addr, > pmr_term_value_t *term_value) > { > uint16_t sport; > - const odph_tcphdr_t *tcp; > + const odp_tcphdr_t *tcp; > if (!pkt_hdr->p.input_flags.tcp) > return 0; > - tcp = (const odph_tcphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); > + tcp = (const odp_tcphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); > sport = odp_be_to_cpu_16(tcp->src_port); > if (term_value->match.value == (sport & term_value->match.mask)) > return 1; > @@ -110,10 +110,10 @@ static inline int verify_pmr_tcp_dport(const uint8_t *pkt_addr, > pmr_term_value_t *term_value) > { > uint16_t dport; > - const odph_tcphdr_t *tcp; > + const odp_tcphdr_t *tcp; > if (!pkt_hdr->p.input_flags.tcp) > return 0; > - tcp = (const odph_tcphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); > + tcp = (const odp_tcphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); > dport = odp_be_to_cpu_16(tcp->dst_port); > if (term_value->match.value == (dport & term_value->match.mask)) > return 1; > @@ -126,10 +126,10 @@ static inline int verify_pmr_udp_dport(const uint8_t *pkt_addr, > pmr_term_value_t *term_value) > { > uint16_t dport; > - const odph_udphdr_t *udp; > + const odp_udphdr_t *udp; > if (!pkt_hdr->p.input_flags.udp) > return 0; > - udp = (const odph_udphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); > + udp = (const odp_udphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); > dport = odp_be_to_cpu_16(udp->dst_port); > if (term_value->match.value == (dport & term_value->match.mask)) > return 1; > @@ -142,11 +142,11 @@ static inline int verify_pmr_udp_sport(const uint8_t *pkt_addr, > pmr_term_value_t *term_value) > { > uint16_t sport; > - const odph_udphdr_t *udp; > + const odp_udphdr_t *udp; > > if (!pkt_hdr->p.input_flags.udp) > return 0; > - udp = (const odph_udphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); > + udp = (const odp_udphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); > sport = odp_be_to_cpu_16(udp->src_port); > if (term_value->match.value == (sport & term_value->match.mask)) > return 1; > @@ -160,19 +160,19 @@ static inline int verify_pmr_dmac(const uint8_t *pkt_addr, > { > uint64_t dmac = 0; > uint64_t dmac_be = 0; > - const odph_ethhdr_t *eth; > + const odp_ethhdr_t *eth; > > if (!packet_hdr_has_eth(pkt_hdr)) > return 0; > > - eth = (const odph_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset); > - memcpy(&dmac_be, eth->dst.addr, ODPH_ETHADDR_LEN); > + eth = (const odp_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset); > + memcpy(&dmac_be, eth->dst.addr, ODP_ETHADDR_LEN); > dmac = odp_be_to_cpu_64(dmac_be); > /* since we are converting a 48 bit ethernet address from BE to cpu > format using odp_be_to_cpu_64() the last 16 bits needs to be right > shifted */ > if (dmac_be != dmac) > - dmac = dmac >> (64 - (ODPH_ETHADDR_LEN * 8)); > + dmac = dmac >> (64 - (ODP_ETHADDR_LEN * 8)); > > if (term_value->match.value == (dmac & term_value->match.mask)) > return 1; > @@ -220,11 +220,11 @@ static inline int verify_pmr_ipsec_spi(const uint8_t *pkt_addr, > pkt_addr += pkt_hdr->p.l4_offset; > > if (pkt_hdr->p.input_flags.ipsec_ah) { > - const odph_ahhdr_t *ahhdr = (const odph_ahhdr_t *)pkt_addr; > + const odp_ahhdr_t *ahhdr = (const odp_ahhdr_t *)pkt_addr; > > spi = odp_be_to_cpu_32(ahhdr->spi); > } else if (pkt_hdr->p.input_flags.ipsec_esp) { > - const odph_esphdr_t *esphdr = (const odph_esphdr_t *)pkt_addr; > + const odp_esphdr_t *esphdr = (const odp_esphdr_t *)pkt_addr; > > spi = odp_be_to_cpu_32(esphdr->spi); > } else { > diff --git a/platform/linux-generic/include/odp_name_table_internal.h b/platform/linux-generic/include/odp_name_table_internal.h > index 21ae42d..52b202c 100644 > --- a/platform/linux-generic/include/odp_name_table_internal.h > +++ b/platform/linux-generic/include/odp_name_table_internal.h > @@ -21,7 +21,7 @@ typedef enum { > ODP_PKTIO_HANDLE, > ODP_POOL_HANDLE, > ODP_QUEUE_HANDLE, > - ODPH_RING_HANDLE, > + ODP_RING_HANDLE, > ODP_SHM_HANDLE, > ODP_TIMER_POOL_HANDLE, > ODP_TM_HANDLE, > diff --git a/helper/include/odp/helper/eth.h b/platform/linux-generic/include/protocols/eth.h > similarity index 25% > copy from helper/include/odp/helper/eth.h > copy to platform/linux-generic/include/protocols/eth.h > index 9f47ddf..1594b8c 100644 > --- a/helper/include/odp/helper/eth.h > +++ b/platform/linux-generic/include/protocols/eth.h > @@ -1,4 +1,4 @@ > -/* Copyright (c) 2014, Linaro Limited > +/* Copyright (c) 2016, Linaro Limited > * All rights reserved. > * > * SPDX-License-Identifier: BSD-3-Clause > @@ -10,8 +10,8 @@ > * ODP ethernet header > */ > > -#ifndef ODPH_ETH_H_ > -#define ODPH_ETH_H_ > +#ifndef ODP_ETH_H_ > +#define ODP_ETH_H_ > > #ifdef __cplusplus > extern "C" { > @@ -19,105 +19,88 @@ extern "C" { > > #include <odp_api.h> > > -/** @addtogroup odph_header ODPH HEADER > +/** @addtogroup odp_header ODP HEADER > * @{ > */ > > -#define ODPH_ETHADDR_LEN 6 /**< Ethernet address length */ > -#define ODPH_ETHHDR_LEN 14 /**< Ethernet header length */ > -#define ODPH_VLANHDR_LEN 4 /**< VLAN header length */ > -#define ODPH_ETH_LEN_MIN 60 /**< Min frame length (excl CRC 4 bytes) */ > -#define ODPH_ETH_LEN_MIN_CRC 64 /**< Min frame length (incl CRC 4 bytes) */ > -#define ODPH_ETH_LEN_MAX 1514 /**< Max frame length (excl CRC 4 bytes) */ > -#define ODPH_ETH_LEN_MAX_CRC 1518 /**< Max frame length (incl CRC 4 bytes) */ > +#define ODP_ETHADDR_LEN 6 /**< Ethernet address length */ > +#define ODP_ETHHDR_LEN 14 /**< Ethernet header length */ > +#define ODP_VLANHDR_LEN 4 /**< VLAN header length */ > +#define ODP_ETH_LEN_MIN 60 /**< Min frame length (excl CRC 4 bytes) */ > +#define ODP_ETH_LEN_MIN_CRC 64 /**< Min frame length (incl CRC 4 bytes) */ > +#define ODP_ETH_LEN_MAX 1514 /**< Max frame length (excl CRC 4 bytes) */ > +#define ODP_ETH_LEN_MAX_CRC 1518 /**< Max frame length (incl CRC 4 bytes) */ > > -/* The two byte odph_vlanhdr_t tci field is composed of the following three > +/* The two byte odp_vlanhdr_t tci field is composed of the following three > * subfields - a three bit Priority Code Point (PCP), a one bit Drop > * Eligibility Indicator (DEI) and a twelve bit VLAN Identifier (VID). The > * following constants can be used to extract or modify these subfields, once > * the tci field has been read in and converted to host byte order. Note > * that the DEI subfield used to be the CFI bit. > */ > -#define ODPH_VLANHDR_MAX_PRIO 7 /**< Max value of the 3 bit priority */ > -#define ODPH_VLANHDR_PCP_MASK 0xE000 /**< PCP field bit mask */ > -#define ODPH_VLANHDR_PCP_SHIFT 13 /**< PCP field shift */ > -#define ODPH_VLANHDR_DEI_MASK 0x1000 /**< DEI field bit mask */ > -#define ODPH_VLANHDR_DEI_SHIFT 12 /**< DEI field shift */ > -#define ODPH_VLANHDR_MAX_VID 0x0FFF /**< Max value of the 12 bit VID field */ > -#define ODPH_VLANHDR_VID_MASK 0x0FFF /**< VID field bit mask */ > -#define ODPH_VLANHDR_VID_SHIFT 0 /**< VID field shift */ > +#define ODP_VLANHDR_MAX_PRIO 7 /**< Max value of the 3 bit priority */ > +#define ODP_VLANHDR_PCP_MASK 0xE000 /**< PCP field bit mask */ > +#define ODP_VLANHDR_PCP_SHIFT 13 /**< PCP field shift */ > +#define ODP_VLANHDR_DEI_MASK 0x1000 /**< DEI field bit mask */ > +#define ODP_VLANHDR_DEI_SHIFT 12 /**< DEI field shift */ > +#define ODP_VLANHDR_MAX_VID 0x0FFF /**< Max value of the 12 bit VID field */ > +#define ODP_VLANHDR_VID_MASK 0x0FFF /**< VID field bit mask */ > +#define ODP_VLANHDR_VID_SHIFT 0 /**< VID field shift */ > > /** > * Ethernet MAC address > */ > typedef struct ODP_PACKED { > - uint8_t addr[ODPH_ETHADDR_LEN]; /**< @private Address */ > -} odph_ethaddr_t; > + uint8_t addr[ODP_ETHADDR_LEN]; /**< @private Address */ > +} odp_ethaddr_t; > > /** @internal Compile time assert */ > -ODP_STATIC_ASSERT(sizeof(odph_ethaddr_t) == ODPH_ETHADDR_LEN, > - "ODPH_ETHADDR_T__SIZE_ERROR"); > +ODP_STATIC_ASSERT(sizeof(odp_ethaddr_t) == ODP_ETHADDR_LEN, > + "ODP_ETHADDR_T__SIZE_ERROR"); > > /** > * Ethernet header > */ > typedef struct ODP_PACKED { > - odph_ethaddr_t dst; /**< Destination address */ > - odph_ethaddr_t src; /**< Source address */ > + odp_ethaddr_t dst; /**< Destination address */ > + odp_ethaddr_t src; /**< Source address */ > odp_u16be_t type; /**< EtherType */ > -} odph_ethhdr_t; > +} odp_ethhdr_t; > > /** @internal Compile time assert */ > -ODP_STATIC_ASSERT(sizeof(odph_ethhdr_t) == ODPH_ETHHDR_LEN, > - "ODPH_ETHHDR_T__SIZE_ERROR"); > +ODP_STATIC_ASSERT(sizeof(odp_ethhdr_t) == ODP_ETHHDR_LEN, > + "ODP_ETHHDR_T__SIZE_ERROR"); > > /** > * IEEE 802.1Q VLAN header > * > - * This field is present when the EtherType (the odph_ethhdr_t type field) of > - * the preceding ethernet header is ODPH_ETHTYPE_VLAN. The inner EtherType > - * (the odph_vlanhdr_t type field) then indicates what comes next. Note that > + * This field is present when the EtherType (the odp_ethhdr_t type field) of > + * the preceding ethernet header is ODP_ETHTYPE_VLAN. The inner EtherType > + * (the odp_vlanhdr_t type field) then indicates what comes next. Note that > * the so called TPID field isn't here because it overlaps with the > - * odph_ethhdr_t type field. > + * odp_ethhdr_t type field. > */ > typedef struct ODP_PACKED { > odp_u16be_t tci; /**< Priority / CFI / VLAN ID */ > odp_u16be_t type; /**< Inner EtherType */ > -} odph_vlanhdr_t; > +} odp_vlanhdr_t; > > /** @internal Compile time assert */ > -ODP_STATIC_ASSERT(sizeof(odph_vlanhdr_t) == ODPH_VLANHDR_LEN, > - "ODPH_VLANHDR_T__SIZE_ERROR"); > +ODP_STATIC_ASSERT(sizeof(odp_vlanhdr_t) == ODP_VLANHDR_LEN, > + "ODP_VLANHDR_T__SIZE_ERROR"); > > /* Ethernet header Ether Type ('type') values, a selected few */ > -#define ODPH_ETHTYPE_IPV4 0x0800 /**< Internet Protocol version 4 */ > -#define ODPH_ETHTYPE_ARP 0x0806 /**< Address Resolution Protocol */ > -#define ODPH_ETHTYPE_RARP 0x8035 /**< Reverse Address Resolution Protocol*/ > -#define ODPH_ETHTYPE_VLAN 0x8100 /**< VLAN-tagged frame IEEE 802.1Q */ > -#define ODPH_ETHTYPE_VLAN_OUTER 0x88A8 /**< Stacked VLANs/QinQ, outer-tag/S-TAG*/ > -#define ODPH_ETHTYPE_IPV6 0x86dd /**< Internet Protocol version 6 */ > -#define ODPH_ETHTYPE_FLOW_CTRL 0x8808 /**< Ethernet flow control */ > -#define ODPH_ETHTYPE_MPLS 0x8847 /**< MPLS unicast */ > -#define ODPH_ETHTYPE_MPLS_MCAST 0x8848 /**< MPLS multicast */ > -#define ODPH_ETHTYPE_MACSEC 0x88E5 /**< MAC security IEEE 802.1AE */ > -#define ODPH_ETHTYPE_1588 0x88F7 /**< Precision Time Protocol IEEE 1588 */ > - > -/** > - * Parse Ethernet from a string > - * > - * Parses Ethernet MAC address from the string which must be passed in format of > - * six hexadecimal digits delimited by colons (xx:xx:xx:xx:xx:xx). Both upper > - * and lower case characters are supported. All six digits have to be present > - * and may have leading zeros. String does not have to be NULL terminated. > - * The address is written only when successful. > - * > - * @param[out] mac Pointer to Ethernet address for output > - * @param str MAC address string to be parsed > - * > - * @retval 0 on success > - * @retval <0 on failure > - */ > -int odph_eth_addr_parse(odph_ethaddr_t *mac, const char *str); > +#define ODP_ETHTYPE_IPV4 0x0800 /**< Internet Protocol version 4 */ > +#define ODP_ETHTYPE_ARP 0x0806 /**< Address Resolution Protocol */ > +#define ODP_ETHTYPE_RARP 0x8035 /**< Reverse Address Resolution Protocol*/ > +#define ODP_ETHTYPE_VLAN 0x8100 /**< VLAN-tagged frame IEEE 802.1Q */ > +#define ODP_ETHTYPE_VLAN_OUTER 0x88A8 /**< Stacked VLANs/QinQ, outer-tag/S-TAG*/ > +#define ODP_ETHTYPE_IPV6 0x86dd /**< Internet Protocol version 6 */ > +#define ODP_ETHTYPE_FLOW_CTRL 0x8808 /**< Ethernet flow control */ > +#define ODP_ETHTYPE_MPLS 0x8847 /**< MPLS unicast */ > +#define ODP_ETHTYPE_MPLS_MCAST 0x8848 /**< MPLS multicast */ > +#define ODP_ETHTYPE_MACSEC 0x88E5 /**< MAC security IEEE 802.1AE */ > +#define ODP_ETHTYPE_1588 0x88F7 /**< Precision Time Protocol IEEE 1588 */ > > /** > * @} > diff --git a/helper/include/odp/helper/ip.h b/platform/linux-generic/include/protocols/ip.h > similarity index 37% > copy from helper/include/odp/helper/ip.h > copy to platform/linux-generic/include/protocols/ip.h > index 4cfc00f..d330ae4 100644 > --- a/helper/include/odp/helper/ip.h > +++ b/platform/linux-generic/include/protocols/ip.h > @@ -1,4 +1,4 @@ > -/* Copyright (c) 2014, Linaro Limited > +/* Copyright (c) 2016, Linaro Limited > * All rights reserved. > * > * SPDX-License-Identifier: BSD-3-Clause > @@ -10,69 +10,66 @@ > * ODP IP header > */ > > -#ifndef ODPH_IP_H_ > -#define ODPH_IP_H_ > +#ifndef ODP_IP_H_ > +#define ODP_IP_H_ > > #ifdef __cplusplus > extern "C" { > #endif > > #include <odp_api.h> > -#include <odp/helper/chksum.h> > > -#include <string.h> > - > -/** @addtogroup odph_header ODPH HEADER > +/** @addtogroup odp_header ODP HEADER > * @{ > */ > > -#define ODPH_IPV4 4 /**< IP version 4 */ > -#define ODPH_IPV4HDR_LEN 20 /**< Min length of IP header (no options) */ > -#define ODPH_IPV4HDR_IHL_MIN 5 /**< Minimum IHL value*/ > -#define ODPH_IPV4ADDR_LEN 4 /**< IPv4 address length in bytes */ > +#define ODP_IPV4 4 /**< IP version 4 */ > +#define ODP_IPV4HDR_LEN 20 /**< Min length of IP header (no options) */ > +#define ODP_IPV4HDR_IHL_MIN 5 /**< Minimum IHL value*/ > +#define ODP_IPV4ADDR_LEN 4 /**< IPv4 address length in bytes */ > > /** The one byte IPv4 tos or IPv6 tc field is composed of the following two > * subfields - a six bit Differentiated Service Code Point (DSCP) and a two > * bit Explicit Congestion Notification (ECN) subfield. The following > * constants can be used to extract or modify these fields. Despite the > - * name prefix being ODPH_IP_TOS_* these constants apply equally well for > + * name prefix being ODP_IP_TOS_* these constants apply equally well for > * the IPv6 Traffic Class (tc) field. > */ > -#define ODPH_IP_TOS_MAX_DSCP 63 /**< 6-bit DSCP field has max value 63 */ > -#define ODPH_IP_TOS_DSCP_MASK 0xFC /**< DSCP field is in bits <7:2> */ > -#define ODPH_IP_TOS_DSCP_SHIFT 2 /**< DSCP field is shifted letf by 2 */ > -#define ODPH_IP_TOS_MAX_ECN 3 /**< 2-bit ECN field has max value 3 */ > -#define ODPH_IP_TOS_ECN_MASK 0x03 /**< ECN field is in bits <1:0> */ > -#define ODPH_IP_TOS_ECN_SHIFT 0 /**< ECN field is not shifted. */ > +#define ODP_IP_TOS_MAX_DSCP 63 /**< 6-bit DSCP field has max value 63 */ > +#define ODP_IP_TOS_DSCP_MASK 0xFC /**< DSCP field is in bits <7:2> */ > +#define ODP_IP_TOS_DSCP_SHIFT 2 /**< DSCP field is shifted letf by 2 */ > +#define ODP_IP_TOS_MAX_ECN 3 /**< 2-bit ECN field has max value 3 */ > +#define ODP_IP_TOS_ECN_MASK 0x03 /**< ECN field is in bits <1:0> */ > +#define ODP_IP_TOS_ECN_SHIFT 0 /**< ECN field is not shifted. */ > > /** The following constants give names to the four possible ECN values, > * as described in RFC 3168. > */ > -#define ODPH_IP_ECN_NOT_ECT 0 /**< 0 indicates not participating in ECN */ > -#define ODPH_IP_ECN_ECT1 1 /**< Indicates no congestion seen yet */ > -#define ODPH_IP_ECN_ECT0 2 /**< Indicates no congestion seen yet */ > -#define ODPH_IP_ECN_CE 3 /**< Used to signal Congestion Experienced */ > +#define ODP_IP_ECN_NOT_ECT 0 /**< 0 indicates not participating in ECN */ > +#define ODP_IP_ECN_ECT1 1 /**< Indicates no congestion seen yet */ > +#define ODP_IP_ECN_ECT0 2 /**< Indicates no congestion seen yet */ > +#define ODP_IP_ECN_CE 3 /**< Used to signal Congestion Experienced */ > > /** @internal Returns IPv4 version */ > -#define ODPH_IPV4HDR_VER(ver_ihl) (((ver_ihl) & 0xf0) >> 4) > +#define ODP_IPV4HDR_VER(ver_ihl) (((ver_ihl) & 0xf0) >> 4) > > /** @internal Returns IPv4 header length */ > -#define ODPH_IPV4HDR_IHL(ver_ihl) ((ver_ihl) & 0x0f) > +#define ODP_IPV4HDR_IHL(ver_ihl) ((ver_ihl) & 0x0f) > > /** @internal Returns IPv4 DSCP */ > -#define ODPH_IPV4HDR_DSCP(tos) (((tos) & 0xfc) >> 2) > +#define ODP_IPV4HDR_DSCP(tos) (((tos) & 0xfc) >> 2) > > /** @internal Returns IPv4 Don't fragment */ > -#define ODPH_IPV4HDR_FLAGS_DONT_FRAG(frag_offset) ((frag_offset) & 0x4000) > +#define ODP_IPV4HDR_FLAGS_DONT_FRAG(frag_offset) ((frag_offset) & 0x4000) > > /** @internal Returns IPv4 more fragments */ > -#define ODPH_IPV4HDR_FLAGS_MORE_FRAGS(frag_offset) ((frag_offset) & 0x2000) > +#define ODP_IPV4HDR_FLAGS_MORE_FRAGS(frag_offset) ((frag_offset) & 0x2000) > > /** @internal Returns IPv4 fragment offset */ > -#define ODPH_IPV4HDR_FRAG_OFFSET(frag_offset) ((frag_offset) & 0x1fff) > +#define ODP_IPV4HDR_FRAG_OFFSET(frag_offset) ((frag_offset) & 0x1fff) > > /** @internal Returns true if IPv4 packet is a fragment */ > -#define ODPH_IPV4HDR_IS_FRAGMENT(frag_offset) ((frag_offset) & 0x3fff) > +#define ODP_IPV4HDR_IS_FRAGMENT(frag_offset) ((frag_offset) & 0x3fff) > > /** IPv4 header */ > typedef struct ODP_PACKED { > @@ -86,91 +83,37 @@ typedef struct ODP_PACKED { > odp_u16sum_t chksum; /**< Checksum */ > odp_u32be_t src_addr; /**< Source address */ > odp_u32be_t dst_addr; /**< Destination address */ > -} odph_ipv4hdr_t; > +} odp_ipv4hdr_t; > > /** @internal Compile time assert */ > -ODP_STATIC_ASSERT(sizeof(odph_ipv4hdr_t) == ODPH_IPV4HDR_LEN, > - "ODPH_IPV4HDR_T__SIZE_ERROR"); > - > -/** > - * Check if IPv4 checksum is valid > - * > - * @param pkt ODP packet > - * > - * @return 1 if checksum is valid, otherwise 0 > - */ > -static inline int odph_ipv4_csum_valid(odp_packet_t pkt) > -{ > - odp_u16be_t res = 0; > - uint16_t *w; > - int nleft = sizeof(odph_ipv4hdr_t); > - odph_ipv4hdr_t ip; > - odp_u16be_t chksum; > - > - if (!odp_packet_l3_offset(pkt)) > - return 0; > - > - odp_packet_copy_to_mem(pkt, odp_packet_l3_offset(pkt), > - sizeof(odph_ipv4hdr_t), &ip); > - > - w = (uint16_t *)(void *)&ip; > - chksum = ip.chksum; > - ip.chksum = 0x0; > - > - res = odph_chksum(w, nleft); > - return (res == chksum) ? 1 : 0; > -} > - > -/** > - * Calculate and fill in IPv4 checksum > - * > - * @note when using this api to populate data destined for the wire > - * odp_cpu_to_be_16() can be used to remove sparse warnings > - * > - * @param pkt ODP packet > - * > - * @return IPv4 checksum in host cpu order, or 0 on failure > - */ > -static inline odp_u16sum_t odph_ipv4_csum_update(odp_packet_t pkt) > -{ > - uint16_t *w; > - odph_ipv4hdr_t *ip; > - int nleft = sizeof(odph_ipv4hdr_t); > - > - if (!odp_packet_l3_offset(pkt)) > - return 0; > - > - ip = (odph_ipv4hdr_t *)odp_packet_l3_ptr(pkt, NULL); > - w = (uint16_t *)(void *)ip; > - ip->chksum = odph_chksum(w, nleft); > - return ip->chksum; > -} > +ODP_STATIC_ASSERT(sizeof(odp_ipv4hdr_t) == ODP_IPV4HDR_LEN, > + "ODP_IPV4HDR_T__SIZE_ERROR"); > > /** IPv6 version */ > -#define ODPH_IPV6 6 > +#define ODP_IPV6 6 > > /** IPv6 header length */ > -#define ODPH_IPV6HDR_LEN 40 > +#define ODP_IPV6HDR_LEN 40 > > /** IPv6 address length in bytes */ > -#define ODPH_IPV6ADDR_LEN 16 > +#define ODP_IPV6ADDR_LEN 16 > > /** The following constants can be used to access the three subfields > * of the 4 byte ver_tc_flow field - namely the four bit Version subfield, > * the eight bit Traffic Class subfield (TC) and the twenty bit Flow Label > * subfield. Note that the IPv6 TC field is analogous to the IPv4 TOS > - * field and is composed of the DSCP and ECN subfields. Use the ODPH_IP_TOS_* > + * field and is composed of the DSCP and ECN subfields. Use the ODP_IP_TOS_* > * constants above to access these subfields. > */ > -#define ODPH_IPV6HDR_VERSION_MASK 0xF0000000 /**< Version field bit mask */ > -#define ODPH_IPV6HDR_VERSION_SHIFT 28 /**< Version field shift */ > -#define ODPH_IPV6HDR_TC_MASK 0x0FF00000 /**< TC field bit mask */ > -#define ODPH_IPV6HDR_TC_SHIFT 20 /**< TC field shift */ > -#define ODPH_IPV6HDR_FLOW_LABEL_MASK 0x000FFFFF /**< Flow Label bit mask */ > -#define ODPH_IPV6HDR_FLOW_LABEL_SHIFT 0 /**< Flow Label shift */ > +#define ODP_IPV6HDR_VERSION_MASK 0xF0000000 /**< Version field bit mask */ > +#define ODP_IPV6HDR_VERSION_SHIFT 28 /**< Version field shift */ > +#define ODP_IPV6HDR_TC_MASK 0x0FF00000 /**< TC field bit mask */ > +#define ODP_IPV6HDR_TC_SHIFT 20 /**< TC field shift */ > +#define ODP_IPV6HDR_FLOW_LABEL_MASK 0x000FFFFF /**< Flow Label bit mask */ > +#define ODP_IPV6HDR_FLOW_LABEL_SHIFT 0 /**< Flow Label shift */ > > /** @internal Returns IPv6 DSCP */ > -#define ODPH_IPV6HDR_DSCP(ver_tc_flow) \ > +#define ODP_IPV6HDR_DSCP(ver_tc_flow) \ > (uint8_t)((((ver_tc_flow) & 0x0fc00000) >> 22) & 0xff) > > /** > @@ -183,11 +126,11 @@ typedef struct ODP_PACKED { > uint8_t hop_limit; /**< Hop limit */ > uint8_t src_addr[16]; /**< Source address */ > uint8_t dst_addr[16]; /**< Destination address */ > -} odph_ipv6hdr_t; > +} odp_ipv6hdr_t; > > /** @internal Compile time assert */ > -ODP_STATIC_ASSERT(sizeof(odph_ipv6hdr_t) == ODPH_IPV6HDR_LEN, > - "ODPH_IPV6HDR_T__SIZE_ERROR"); > +ODP_STATIC_ASSERT(sizeof(odp_ipv6hdr_t) == ODP_IPV6HDR_LEN, > + "ODP_IPV6HDR_T__SIZE_ERROR"); > > /** > * IPv6 Header extensions > @@ -198,41 +141,24 @@ typedef struct ODP_PACKED { > not counting first 8 bytes, so 0 = 8 bytes > 1 = 16 bytes, etc. */ > uint8_t filler[6]; /**< Fill out first 8 byte segment */ > -} odph_ipv6hdr_ext_t; > +} odp_ipv6hdr_ext_t; > > /** @name > * IP protocol values (IPv4:'proto' or IPv6:'next_hdr') > * @{*/ > -#define ODPH_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */ > -#define ODPH_IPPROTO_ICMP 0x01 /**< Internet Control Message Protocol (1) */ > -#define ODPH_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */ > -#define ODPH_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */ > -#define ODPH_IPPROTO_ROUTE 0x2B /**< IPv6 Routing header (43) */ > -#define ODPH_IPPROTO_FRAG 0x2C /**< IPv6 Fragment (44) */ > -#define ODPH_IPPROTO_AH 0x33 /**< Authentication Header (51) */ > -#define ODPH_IPPROTO_ESP 0x32 /**< Encapsulating Security Payload (50) */ > -#define ODPH_IPPROTO_INVALID 0xFF /**< Reserved invalid by IANA */ > +#define ODP_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */ > +#define ODP_IPPROTO_ICMP 0x01 /**< Internet Control Message Protocol (1) */ > +#define ODP_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */ > +#define ODP_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */ > +#define ODP_IPPROTO_ROUTE 0x2B /**< IPv6 Routing header (43) */ > +#define ODP_IPPROTO_FRAG 0x2C /**< IPv6 Fragment (44) */ > +#define ODP_IPPROTO_AH 0x33 /**< Authentication Header (51) */ > +#define ODP_IPPROTO_ESP 0x32 /**< Encapsulating Security Payload (50) */ > +#define ODP_IPPROTO_INVALID 0xFF /**< Reserved invalid by IANA */ > > /**@}*/ > > /** > - * Parse IPv4 address from a string > - * > - * Parses IPv4 address from the string which must be passed in the format of > - * four decimal digits delimited by dots (xxx.xxx.xxx.xxx). All four digits > - * have to be present and may have leading zeros. String does not have to be > - * NULL terminated. The address is written only when successful. The address > - * byte order is CPU native. > - * > - * @param[out] ip_addr Pointer to IPv4 address for output (in native endian) > - * @param str IPv4 address string to be parsed > - * > - * @retval 0 on success > - * @retval <0 on failure > - */ > -int odph_ipv4_addr_parse(uint32_t *ip_addr, const char *str); > - > -/** > * @} > */ > #ifdef __cplusplus > diff --git a/helper/include/odp/helper/ipsec.h b/platform/linux-generic/include/protocols/ipsec.h > similarity index 64% > copy from helper/include/odp/helper/ipsec.h > copy to platform/linux-generic/include/protocols/ipsec.h > index 034a341..57babbb 100644 > --- a/helper/include/odp/helper/ipsec.h > +++ b/platform/linux-generic/include/protocols/ipsec.h > @@ -1,4 +1,4 @@ > -/* Copyright (c) 2014, Linaro Limited > +/* Copyright (c) 2016, Linaro Limited > * All rights reserved. > * > * SPDX-License-Identifier: BSD-3-Clause > @@ -11,8 +11,8 @@ > * ODP IPSec headers > */ > > -#ifndef ODPH_IPSEC_H_ > -#define ODPH_IPSEC_H_ > +#ifndef ODP_IPSEC_H_ > +#define ODP_IPSEC_H_ > > #ifdef __cplusplus > extern "C" { > @@ -20,13 +20,13 @@ extern "C" { > > #include <odp_api.h> > > -/** @addtogroup odph_header ODPH HEADER > +/** @addtogroup odp_header ODP HEADER > * @{ > */ > > -#define ODPH_ESPHDR_LEN 8 /**< IPSec ESP header length */ > -#define ODPH_ESPTRL_LEN 2 /**< IPSec ESP trailer length */ > -#define ODPH_AHHDR_LEN 12 /**< IPSec AH header length */ > +#define ODP_ESPHDR_LEN 8 /**< IPSec ESP header length */ > +#define ODP_ESPTRL_LEN 2 /**< IPSec ESP trailer length */ > +#define ODP_AHHDR_LEN 12 /**< IPSec AH header length */ > > /** > * IPSec ESP header > @@ -35,11 +35,11 @@ typedef struct ODP_PACKED { > odp_u32be_t spi; /**< Security Parameter Index */ > odp_u32be_t seq_no; /**< Sequence Number */ > uint8_t iv[0]; /**< Initialization vector */ > -} odph_esphdr_t; > +} odp_esphdr_t; > > /** @internal Compile time assert */ > -ODP_STATIC_ASSERT(sizeof(odph_esphdr_t) == ODPH_ESPHDR_LEN, > - "ODPH_ESPHDR_T__SIZE_ERROR"); > +ODP_STATIC_ASSERT(sizeof(odp_esphdr_t) == ODP_ESPHDR_LEN, > + "ODP_ESPHDR_T__SIZE_ERROR"); > > /** > * IPSec ESP trailer > @@ -48,11 +48,11 @@ typedef struct ODP_PACKED { > uint8_t pad_len; /**< Padding length (0-255) */ > uint8_t next_header; /**< Next header protocol */ > uint8_t icv[0]; /**< Integrity Check Value (optional) */ > -} odph_esptrl_t; > +} odp_esptrl_t; > > /** @internal Compile time assert */ > -ODP_STATIC_ASSERT(sizeof(odph_esptrl_t) == ODPH_ESPTRL_LEN, > - "ODPH_ESPTRL_T__SIZE_ERROR"); > +ODP_STATIC_ASSERT(sizeof(odp_esptrl_t) == ODP_ESPTRL_LEN, > + "ODP_ESPTRL_T__SIZE_ERROR"); > > /** > * IPSec AH header > @@ -64,11 +64,11 @@ typedef struct ODP_PACKED { > odp_u32be_t spi; /**< Security Parameter Index */ > odp_u32be_t seq_no; /**< Sequence Number */ > uint8_t icv[0]; /**< Integrity Check Value */ > -} odph_ahhdr_t; > +} odp_ahhdr_t; > > /** @internal Compile time assert */ > -ODP_STATIC_ASSERT(sizeof(odph_ahhdr_t) == ODPH_AHHDR_LEN, > - "ODPH_AHHDR_T__SIZE_ERROR"); > +ODP_STATIC_ASSERT(sizeof(odp_ahhdr_t) == ODP_AHHDR_LEN, > + "ODP_AHHDR_T__SIZE_ERROR"); > > /** > * @} > diff --git a/helper/include/odp/helper/tcp.h b/platform/linux-generic/include/protocols/tcp.h > similarity index 88% > copy from helper/include/odp/helper/tcp.h > copy to platform/linux-generic/include/protocols/tcp.h > index cabef90..45e3fa4 100644 > --- a/helper/include/odp/helper/tcp.h > +++ b/platform/linux-generic/include/protocols/tcp.h > @@ -1,4 +1,4 @@ > -/* Copyright (c) 2014, Linaro Limited > +/* Copyright (c) 2016, Linaro Limited > * All rights reserved. > * > * SPDX-License-Identifier: BSD-3-Clause > @@ -11,8 +11,8 @@ > * ODP TCP header > */ > > -#ifndef ODPH_TCP_H_ > -#define ODPH_TCP_H_ > +#ifndef ODP_TCP_H_ > +#define ODP_TCP_H_ > > #ifdef __cplusplus > extern "C" { > @@ -20,11 +20,11 @@ extern "C" { > > #include <odp_api.h> > > -/** @addtogroup odph_header ODPH HEADER > +/** @addtogroup odp_header ODP HEADER > * @{ > */ > > -#define ODPH_TCPHDR_LEN 20 /**< Min length of TCP header (no options) */ > +#define ODP_TCPHDR_LEN 20 /**< Min length of TCP header (no options) */ > > /** TCP header */ > typedef struct ODP_PACKED { > @@ -76,7 +76,7 @@ typedef struct ODP_PACKED { > odp_u16be_t window; /**< Window size */ > odp_u16be_t cksm; /**< Checksum */ > odp_u16be_t urgptr; /**< Urgent pointer */ > -} odph_tcphdr_t; > +} odp_tcphdr_t; > > /** > * @} > diff --git a/helper/include/odp/helper/udp.h b/platform/linux-generic/include/protocols/udp.h > similarity index 47% > copy from helper/include/odp/helper/udp.h > copy to platform/linux-generic/include/protocols/udp.h > index 1ba2dff..0179394 100644 > --- a/helper/include/odp/helper/udp.h > +++ b/platform/linux-generic/include/protocols/udp.h > @@ -1,4 +1,4 @@ > -/* Copyright (c) 2014, Linaro Limited > +/* Copyright (c) 2016, Linaro Limited > * All rights reserved. > * > * SPDX-License-Identifier: BSD-3-Clause > @@ -10,22 +10,21 @@ > * ODP UDP header > */ > > -#ifndef ODPH_UDP_H_ > -#define ODPH_UDP_H_ > +#ifndef ODP_UDP_H_ > +#define ODP_UDP_H_ > > #ifdef __cplusplus > extern "C" { > #endif > > #include <odp_api.h> > -#include <odp/helper/chksum.h> > > -/** @addtogroup odph_header ODPH HEADER > +/** @addtogroup odp_header ODP HEADER > * @{ > */ > > /** UDP header length */ > -#define ODPH_UDPHDR_LEN 8 > +#define ODP_UDPHDR_LEN 8 > > /** UDP header */ > typedef struct ODP_PACKED { > @@ -33,28 +32,11 @@ typedef struct ODP_PACKED { > odp_u16be_t dst_port; /**< Destination port */ > odp_u16be_t length; /**< UDP datagram length in bytes (header+data) */ > odp_u16be_t chksum; /**< UDP header and data checksum (0 if not used)*/ > -} odph_udphdr_t; > - > -/** > - * UDP checksum > - * > - * This function calculates the UDP checksum given an odp packet. > - * > - * @param pkt calculate chksum for pkt > - * @return checksum value in BE endianness > - */ > -static inline uint16_t odph_ipv4_udp_chksum(odp_packet_t pkt) > -{ > - uint16_t chksum; > - int rc; > - > - rc = odph_udp_tcp_chksum(pkt, ODPH_CHKSUM_RETURN, &chksum); > - return (rc == 0) ? chksum : 0; > -} > +} odp_udphdr_t; > > /** @internal Compile time assert */ > -ODP_STATIC_ASSERT(sizeof(odph_udphdr_t) == ODPH_UDPHDR_LEN, > - "ODPH_UDPHDR_T__SIZE_ERROR"); > +ODP_STATIC_ASSERT(sizeof(odp_udphdr_t) == ODP_UDPHDR_LEN, > + "ODP_UDPHDR_T__SIZE_ERROR"); > > /** > * @} > diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c > index 0602a62..25fe12b 100644 > --- a/platform/linux-generic/odp_classification.c > +++ b/platform/linux-generic/odp_classification.c > @@ -18,7 +18,8 @@ > #include <odp_classification_internal.h> > #include <odp_pool_internal.h> > #include <odp/api/shared_memory.h> > -#include <odp/helper/eth.h> > +#include <protocols/eth.h> > +#include <protocols/ip.h> > #include <string.h> > #include <errno.h> > #include <odp/api/spinlock.h> > @@ -840,16 +841,16 @@ cos_t *match_qos_l3_cos(pmr_l3_cos_t *l3_cos, const uint8_t *pkt_addr, > { > uint8_t dscp; > cos_t *cos = NULL; > - const odph_ipv4hdr_t *ipv4; > - const odph_ipv6hdr_t *ipv6; > + const odp_ipv4hdr_t *ipv4; > + const odp_ipv6hdr_t *ipv6; > > if (hdr->p.input_flags.l3 && hdr->p.input_flags.ipv4) { > - ipv4 = (const odph_ipv4hdr_t *)(pkt_addr + hdr->p.l3_offset); > - dscp = ODPH_IPV4HDR_DSCP(ipv4->tos); > + ipv4 = (const odp_ipv4hdr_t *)(pkt_addr + hdr->p.l3_offset); > + dscp = ODP_IPV4HDR_DSCP(ipv4->tos); > cos = l3_cos->cos[dscp]; > } else if (hdr->p.input_flags.l3 && hdr->p.input_flags.ipv6) { > - ipv6 = (const odph_ipv6hdr_t *)(pkt_addr + hdr->p.l3_offset); > - dscp = ODPH_IPV6HDR_DSCP(ipv6->ver_tc_flow); > + ipv6 = (const odp_ipv6hdr_t *)(pkt_addr + hdr->p.l3_offset); > + dscp = ODP_IPV6HDR_DSCP(ipv6->ver_tc_flow); > cos = l3_cos->cos[dscp]; > } > > @@ -860,14 +861,14 @@ cos_t *match_qos_l2_cos(pmr_l2_cos_t *l2_cos, const uint8_t *pkt_addr, > odp_packet_hdr_t *hdr) > { > cos_t *cos = NULL; > - const odph_ethhdr_t *eth; > - const odph_vlanhdr_t *vlan; > + const odp_ethhdr_t *eth; > + const odp_vlanhdr_t *vlan; > uint16_t qos; > > if (packet_hdr_has_l2(hdr) && hdr->p.input_flags.vlan && > packet_hdr_has_eth(hdr)) { > - eth = (const odph_ethhdr_t *)(pkt_addr + hdr->p.l2_offset); > - vlan = (const odph_vlanhdr_t *)(eth + 1); > + eth = (const odp_ethhdr_t *)(pkt_addr + hdr->p.l2_offset); > + vlan = (const odp_vlanhdr_t *)(eth + 1); > qos = odp_be_to_cpu_16(vlan->tci); > qos = ((qos >> 13) & 0x07); > cos = l2_cos->cos[qos]; > diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c > index c319833..5cbca1e 100644 > --- a/platform/linux-generic/odp_packet.c > +++ b/platform/linux-generic/odp_packet.c > @@ -10,10 +10,10 @@ > #include <odp/api/hints.h> > #include <odp/api/byteorder.h> > > -#include <odp/helper/eth.h> > -#include <odp/helper/ip.h> > -#include <odp/helper/tcp.h> > -#include <odp/helper/udp.h> > +#include <protocols/eth.h> > +#include <protocols/ip.h> > +#include <protocols/tcp.h> > +#include <protocols/udp.h> > > #include <errno.h> > #include <string.h> > @@ -995,15 +995,15 @@ void _odp_packet_copy_md_to_packet(odp_packet_t srcpkt, odp_packet_t dstpkt) > static inline uint8_t parse_ipv4(packet_parser_t *prs, const uint8_t **parseptr, > uint32_t *offset, uint32_t frame_len) > { > - const odph_ipv4hdr_t *ipv4 = (const odph_ipv4hdr_t *)*parseptr; > - uint8_t ver = ODPH_IPV4HDR_VER(ipv4->ver_ihl); > - uint8_t ihl = ODPH_IPV4HDR_IHL(ipv4->ver_ihl); > + const odp_ipv4hdr_t *ipv4 = (const odp_ipv4hdr_t *)*parseptr; > + uint8_t ver = ODP_IPV4HDR_VER(ipv4->ver_ihl); > + uint8_t ihl = ODP_IPV4HDR_IHL(ipv4->ver_ihl); > uint16_t frag_offset; > uint32_t dstaddr = odp_be_to_cpu_32(ipv4->dst_addr); > > prs->l3_len = odp_be_to_cpu_16(ipv4->tot_len); > > - if (odp_unlikely(ihl < ODPH_IPV4HDR_IHL_MIN) || > + if (odp_unlikely(ihl < ODP_IPV4HDR_IHL_MIN) || > odp_unlikely(ver != 4) || > (prs->l3_len > frame_len - *offset)) { > prs->error_flags.ip_err = 1; > @@ -1013,7 +1013,7 @@ static inline uint8_t parse_ipv4(packet_parser_t *prs, const uint8_t **parseptr, > *offset += ihl * 4; > *parseptr += ihl * 4; > > - if (odp_unlikely(ihl > ODPH_IPV4HDR_IHL_MIN)) > + if (odp_unlikely(ihl > ODP_IPV4HDR_IHL_MIN)) > prs->input_flags.ipopt = 1; > > /* A packet is a fragment if: > @@ -1022,7 +1022,7 @@ static inline uint8_t parse_ipv4(packet_parser_t *prs, const uint8_t **parseptr, > * "fragment offset" field is nonzero (all fragments except the first) > */ > frag_offset = odp_be_to_cpu_16(ipv4->frag_offset); > - if (odp_unlikely(ODPH_IPV4HDR_IS_FRAGMENT(frag_offset))) > + if (odp_unlikely(ODP_IPV4HDR_IS_FRAGMENT(frag_offset))) > prs->input_flags.ipfrag = 1; > > /* Handle IPv4 broadcast / multicast */ > @@ -1039,12 +1039,12 @@ static inline uint8_t parse_ipv6(packet_parser_t *prs, const uint8_t **parseptr, > uint32_t *offset, uint32_t frame_len, > uint32_t seg_len) > { > - const odph_ipv6hdr_t *ipv6 = (const odph_ipv6hdr_t *)*parseptr; > - const odph_ipv6hdr_ext_t *ipv6ext; > + const odp_ipv6hdr_t *ipv6 = (const odp_ipv6hdr_t *)*parseptr; > + const odp_ipv6hdr_ext_t *ipv6ext; > uint32_t dstaddr0 = odp_be_to_cpu_32(ipv6->dst_addr[0]); > > prs->l3_len = odp_be_to_cpu_16(ipv6->payload_len) + > - ODPH_IPV6HDR_LEN; > + ODP_IPV6HDR_LEN; > > /* Basic sanity checks on IPv6 header */ > if ((odp_be_to_cpu_32(ipv6->ver_tc_flow) >> 28) != 6 || > @@ -1058,22 +1058,22 @@ static inline uint8_t parse_ipv6(packet_parser_t *prs, const uint8_t **parseptr, > prs->input_flags.ip_bcast = 0; > > /* Skip past IPv6 header */ > - *offset += sizeof(odph_ipv6hdr_t); > - *parseptr += sizeof(odph_ipv6hdr_t); > + *offset += sizeof(odp_ipv6hdr_t); > + *parseptr += sizeof(odp_ipv6hdr_t); > > /* Skip past any IPv6 extension headers */ > - if (ipv6->next_hdr == ODPH_IPPROTO_HOPOPTS || > - ipv6->next_hdr == ODPH_IPPROTO_ROUTE) { > + if (ipv6->next_hdr == ODP_IPPROTO_HOPOPTS || > + ipv6->next_hdr == ODP_IPPROTO_ROUTE) { > prs->input_flags.ipopt = 1; > > do { > - ipv6ext = (const odph_ipv6hdr_ext_t *)*parseptr; > + ipv6ext = (const odp_ipv6hdr_ext_t *)*parseptr; > uint16_t extlen = 8 + ipv6ext->ext_len * 8; > > *offset += extlen; > *parseptr += extlen; > - } while ((ipv6ext->next_hdr == ODPH_IPPROTO_HOPOPTS || > - ipv6ext->next_hdr == ODPH_IPPROTO_ROUTE) && > + } while ((ipv6ext->next_hdr == ODP_IPPROTO_HOPOPTS || > + ipv6ext->next_hdr == ODP_IPPROTO_ROUTE) && > *offset < seg_len); > > if (*offset >= prs->l3_offset + > @@ -1082,13 +1082,13 @@ static inline uint8_t parse_ipv6(packet_parser_t *prs, const uint8_t **parseptr, > return 0; > } > > - if (ipv6ext->next_hdr == ODPH_IPPROTO_FRAG) > + if (ipv6ext->next_hdr == ODP_IPPROTO_FRAG) > prs->input_flags.ipfrag = 1; > > return ipv6ext->next_hdr; > } > > - if (odp_unlikely(ipv6->next_hdr == ODPH_IPPROTO_FRAG)) { > + if (odp_unlikely(ipv6->next_hdr == ODP_IPPROTO_FRAG)) { > prs->input_flags.ipopt = 1; > prs->input_flags.ipfrag = 1; > } > @@ -1102,11 +1102,11 @@ static inline uint8_t parse_ipv6(packet_parser_t *prs, const uint8_t **parseptr, > static inline void parse_tcp(packet_parser_t *prs, > const uint8_t **parseptr, uint32_t *offset) > { > - const odph_tcphdr_t *tcp = (const odph_tcphdr_t *)*parseptr; > + const odp_tcphdr_t *tcp = (const odp_tcphdr_t *)*parseptr; > > - if (tcp->hl < sizeof(odph_tcphdr_t) / sizeof(uint32_t)) > + if (tcp->hl < sizeof(odp_tcphdr_t) / sizeof(uint32_t)) > prs->error_flags.tcp_err = 1; > - else if ((uint32_t)tcp->hl * 4 > sizeof(odph_tcphdr_t)) > + else if ((uint32_t)tcp->hl * 4 > sizeof(odp_tcphdr_t)) > prs->input_flags.tcpopt = 1; > > prs->l4_len = prs->l3_len + > @@ -1123,10 +1123,10 @@ static inline void parse_tcp(packet_parser_t *prs, > static inline void parse_udp(packet_parser_t *prs, > const uint8_t **parseptr, uint32_t *offset) > { > - const odph_udphdr_t *udp = (const odph_udphdr_t *)*parseptr; > + const odp_udphdr_t *udp = (const odp_udphdr_t *)*parseptr; > uint32_t udplen = odp_be_to_cpu_16(udp->length); > > - if (udplen < sizeof(odph_udphdr_t) || > + if (udplen < sizeof(odp_udphdr_t) || > udplen > (prs->l3_len + > prs->l4_offset - prs->l3_offset)) { > prs->error_flags.udp_err = 1; > @@ -1135,8 +1135,8 @@ static inline void parse_udp(packet_parser_t *prs, > prs->l4_len = udplen; > > if (offset) > - *offset += sizeof(odph_udphdr_t); > - *parseptr += sizeof(odph_udphdr_t); > + *offset += sizeof(odp_udphdr_t); > + *parseptr += sizeof(odp_udphdr_t); > } > > /** > @@ -1150,7 +1150,7 @@ void packet_parse_l2(packet_parser_t *prs, uint32_t frame_len) > prs->input_flags.eth = 1; > > /* Detect jumbo frames */ > - if (frame_len > ODPH_ETH_LEN_MAX) > + if (frame_len > ODP_ETH_LEN_MAX) > prs->input_flags.jumbo = 1; > > /* Assume valid L2 header, no CRC/FCS check in SW */ > @@ -1168,19 +1168,19 @@ void packet_parse_l2(packet_parser_t *prs, uint32_t frame_len) > int packet_parse_common(packet_parser_t *prs, const uint8_t *ptr, > uint32_t frame_len, uint32_t seg_len) > { > - const odph_ethhdr_t *eth; > - const odph_vlanhdr_t *vlan; > + const odp_ethhdr_t *eth; > + const odp_vlanhdr_t *vlan; > uint16_t ethtype; > uint32_t offset; > uint8_t ip_proto = 0; > const uint8_t *parseptr; > uint16_t macaddr0, macaddr2, macaddr4; > > - offset = sizeof(odph_ethhdr_t); > + offset = sizeof(odp_ethhdr_t); > if (packet_parse_l2_not_done(prs)) > packet_parse_l2(prs, frame_len); > > - eth = (const odph_ethhdr_t *)ptr; > + eth = (const odp_ethhdr_t *)ptr; > > /* Handle Ethernet broadcast/multicast addresses */ > macaddr0 = odp_be_to_cpu_16(*((const uint16_t *)(const void *)eth)); > @@ -1204,7 +1204,7 @@ int packet_parse_common(packet_parser_t *prs, const uint8_t *ptr, > parseptr = (const uint8_t *)(eth + 1); > > /* Check for SNAP vs. DIX */ > - if (ethtype < ODPH_ETH_LEN_MAX) { > + if (ethtype < ODP_ETH_LEN_MAX) { > prs->input_flags.snap = 1; > if (ethtype > frame_len - offset) { > prs->error_flags.snap_len = 1; > @@ -1217,22 +1217,22 @@ int packet_parse_common(packet_parser_t *prs, const uint8_t *ptr, > } > > /* Parse the VLAN header(s), if present */ > - if (ethtype == ODPH_ETHTYPE_VLAN_OUTER) { > + if (ethtype == ODP_ETHTYPE_VLAN_OUTER) { > prs->input_flags.vlan_qinq = 1; > prs->input_flags.vlan = 1; > > - vlan = (const odph_vlanhdr_t *)parseptr; > + vlan = (const odp_vlanhdr_t *)parseptr; > ethtype = odp_be_to_cpu_16(vlan->type); > - offset += sizeof(odph_vlanhdr_t); > - parseptr += sizeof(odph_vlanhdr_t); > + offset += sizeof(odp_vlanhdr_t); > + parseptr += sizeof(odp_vlanhdr_t); > } > > - if (ethtype == ODPH_ETHTYPE_VLAN) { > + if (ethtype == ODP_ETHTYPE_VLAN) { > prs->input_flags.vlan = 1; > - vlan = (const odph_vlanhdr_t *)parseptr; > + vlan = (const odp_vlanhdr_t *)parseptr; > ethtype = odp_be_to_cpu_16(vlan->type); > - offset += sizeof(odph_vlanhdr_t); > - parseptr += sizeof(odph_vlanhdr_t); > + offset += sizeof(odp_vlanhdr_t); > + parseptr += sizeof(odp_vlanhdr_t); > } > > /* Set l3_offset+flag only for known ethtypes */ > @@ -1241,18 +1241,18 @@ int packet_parse_common(packet_parser_t *prs, const uint8_t *ptr, > > /* Parse Layer 3 headers */ > switch (ethtype) { > - case ODPH_ETHTYPE_IPV4: > + case ODP_ETHTYPE_IPV4: > prs->input_flags.ipv4 = 1; > ip_proto = parse_ipv4(prs, &parseptr, &offset, frame_len); > break; > > - case ODPH_ETHTYPE_IPV6: > + case ODP_ETHTYPE_IPV6: > prs->input_flags.ipv6 = 1; > ip_proto = parse_ipv6(prs, &parseptr, &offset, frame_len, > seg_len); > break; > > - case ODPH_ETHTYPE_ARP: > + case ODP_ETHTYPE_ARP: > prs->input_flags.arp = 1; > ip_proto = 255; /* Reserved invalid by IANA */ > break; > @@ -1269,30 +1269,30 @@ int packet_parse_common(packet_parser_t *prs, const uint8_t *ptr, > > /* Parse Layer 4 headers */ > switch (ip_proto) { > - case ODPH_IPPROTO_ICMP: > + case ODP_IPPROTO_ICMP: > prs->input_flags.icmp = 1; > break; > > - case ODPH_IPPROTO_TCP: > - if (odp_unlikely(offset + ODPH_TCPHDR_LEN > seg_len)) > + case ODP_IPPROTO_TCP: > + if (odp_unlikely(offset + ODP_TCPHDR_LEN > seg_len)) > return -1; > prs->input_flags.tcp = 1; > parse_tcp(prs, &parseptr, NULL); > break; > > - case ODPH_IPPROTO_UDP: > - if (odp_unlikely(offset + ODPH_UDPHDR_LEN > seg_len)) > + case ODP_IPPROTO_UDP: > + if (odp_unlikely(offset + ODP_UDPHDR_LEN > seg_len)) > return -1; > prs->input_flags.udp = 1; > parse_udp(prs, &parseptr, NULL); > break; > > - case ODPH_IPPROTO_AH: > + case ODP_IPPROTO_AH: > prs->input_flags.ipsec = 1; > prs->input_flags.ipsec_ah = 1; > break; > > - case ODPH_IPPROTO_ESP: > + case ODP_IPPROTO_ESP: > prs->input_flags.ipsec = 1; > prs->input_flags.ipsec_esp = 1; > break; > diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c > index 1fa2d27..6918bd0 100644 > --- a/platform/linux-generic/odp_traffic_mngr.c > +++ b/platform/linux-generic/odp_traffic_mngr.c > @@ -17,8 +17,8 @@ > #include <unistd.h> > #include <pthread.h> > #include <odp/api/std_types.h> > -#include <odp/helper/eth.h> > -#include <odp/helper/ip.h> > +#include <protocols/eth.h> > +#include <protocols/ip.h> > #include <odp_traffic_mngr_internal.h> > > /* Local vars */ > @@ -1897,14 +1897,14 @@ static int tm_enqueue(tm_system_t *tm_system, > static void egress_vlan_marking(tm_vlan_marking_t *vlan_marking, > odp_packet_t odp_pkt) > { > - odph_vlanhdr_t vlan_hdr, *vlan_hdr_ptr; > - odph_ethhdr_t *ether_hdr_ptr; > + odp_vlanhdr_t vlan_hdr, *vlan_hdr_ptr; > + odp_ethhdr_t *ether_hdr_ptr; > odp_bool_t split_hdr; > uint32_t hdr_len; > uint16_t old_tci, new_tci; > > ether_hdr_ptr = odp_packet_l2_ptr(odp_pkt, &hdr_len); > - vlan_hdr_ptr = (odph_vlanhdr_t *)(ether_hdr_ptr + 1); > + vlan_hdr_ptr = (odp_vlanhdr_t *)(ether_hdr_ptr + 1); > > /* If the split_hdr variable below is TRUE, then this indicates that > * for this odp (output) packet the VLAN header is not all in the same > @@ -1913,34 +1913,34 @@ static void egress_vlan_marking(tm_vlan_marking_t *vlan_marking, > * handle this case for correctness, but because of the rarity the > * code handling this is more optimized for ease of understanding and > * correctness rather then performance. */ > - split_hdr = hdr_len < (ODPH_ETHHDR_LEN + ODPH_VLANHDR_LEN); > + split_hdr = hdr_len < (ODP_ETHHDR_LEN + ODP_VLANHDR_LEN); > if (split_hdr) { > - odp_packet_copy_to_mem(odp_pkt, ODPH_ETHHDR_LEN, > - ODPH_VLANHDR_LEN, &vlan_hdr); > + odp_packet_copy_to_mem(odp_pkt, ODP_ETHHDR_LEN, > + ODP_VLANHDR_LEN, &vlan_hdr); > vlan_hdr_ptr = &vlan_hdr; > } > > old_tci = odp_be_to_cpu_16(vlan_hdr_ptr->tci); > new_tci = old_tci; > if (vlan_marking->drop_eligible_enabled) > - new_tci |= ODPH_VLANHDR_DEI_MASK; > + new_tci |= ODP_VLANHDR_DEI_MASK; > > if (new_tci == old_tci) > return; > > vlan_hdr_ptr->tci = odp_cpu_to_be_16(new_tci); > if (split_hdr) > - odp_packet_copy_from_mem(odp_pkt, ODPH_ETHHDR_LEN, > - ODPH_VLANHDR_LEN, &vlan_hdr); > + odp_packet_copy_from_mem(odp_pkt, ODP_ETHHDR_LEN, > + ODP_VLANHDR_LEN, &vlan_hdr); > } > > static void egress_ipv4_tos_marking(tm_tos_marking_t *tos_marking, > odp_packet_t odp_pkt) > { > - odph_ipv4hdr_t ipv4_hdr, *ipv4_hdr_ptr; > - odp_bool_t split_hdr; > - uint32_t hdr_len, l3_offset, old_chksum, ones_compl_sum, tos_diff; > - uint8_t old_tos, new_tos, ecn; > + odp_ipv4hdr_t ipv4_hdr, *ipv4_hdr_ptr; > + odp_bool_t split_hdr; > + uint32_t hdr_len, l3_offset, old_chksum, ones_compl_sum, tos_diff; > + uint8_t old_tos, new_tos, ecn; > > l3_offset = odp_packet_l3_offset(odp_pkt); > ipv4_hdr_ptr = odp_packet_l3_ptr(odp_pkt, &hdr_len); > @@ -1955,7 +1955,7 @@ static void egress_ipv4_tos_marking(tm_tos_marking_t *tos_marking, > split_hdr = hdr_len < 12; > if (split_hdr) { > odp_packet_copy_to_mem(odp_pkt, l3_offset, > - ODPH_IPV4HDR_LEN, &ipv4_hdr); > + ODP_IPV4HDR_LEN, &ipv4_hdr); > ipv4_hdr_ptr = &ipv4_hdr; > } > > @@ -1966,10 +1966,10 @@ static void egress_ipv4_tos_marking(tm_tos_marking_t *tos_marking, > tos_marking->shifted_dscp; > > if (tos_marking->ecn_ce_enabled && odp_packet_has_tcp(odp_pkt)) { > - ecn = old_tos & ODPH_IP_TOS_ECN_MASK; > - if ((ecn == ODPH_IP_ECN_ECT0) || (ecn == ODPH_IP_ECN_ECT1)) > - new_tos = (new_tos & ~ODPH_IP_TOS_ECN_MASK) | > - (ODPH_IP_ECN_CE << ODPH_IP_TOS_ECN_SHIFT); > + ecn = old_tos & ODP_IP_TOS_ECN_MASK; > + if ((ecn == ODP_IP_ECN_ECT0) || (ecn == ODP_IP_ECN_ECT1)) > + new_tos = (new_tos & ~ODP_IP_TOS_ECN_MASK) | > + (ODP_IP_ECN_CE << ODP_IP_TOS_ECN_SHIFT); > } > > if (new_tos == old_tos) > @@ -1997,16 +1997,16 @@ static void egress_ipv4_tos_marking(tm_tos_marking_t *tos_marking, > ipv4_hdr_ptr->chksum = odp_cpu_to_be_16((~ones_compl_sum) & 0xFFFF); > if (split_hdr) > odp_packet_copy_from_mem(odp_pkt, l3_offset, > - ODPH_IPV4HDR_LEN, &ipv4_hdr); > + ODP_IPV4HDR_LEN, &ipv4_hdr); > } > > static void egress_ipv6_tc_marking(tm_tos_marking_t *tos_marking, > odp_packet_t odp_pkt) > { > - odph_ipv6hdr_t ipv6_hdr, *ipv6_hdr_ptr; > - odp_bool_t split_hdr; > - uint32_t hdr_len, old_ver_tc_flow, new_ver_tc_flow, l3_offset; > - uint8_t old_tc, new_tc, ecn; > + odp_ipv6hdr_t ipv6_hdr, *ipv6_hdr_ptr; > + odp_bool_t split_hdr; > + uint32_t hdr_len, old_ver_tc_flow, new_ver_tc_flow, l3_offset; > + uint8_t old_tc, new_tc, ecn; > > l3_offset = odp_packet_l3_offset(odp_pkt); > ipv6_hdr_ptr = odp_packet_l3_ptr(odp_pkt, &hdr_len); > @@ -2021,13 +2021,13 @@ static void egress_ipv6_tc_marking(tm_tos_marking_t *tos_marking, > split_hdr = hdr_len < 4; > if (split_hdr) { > odp_packet_copy_to_mem(odp_pkt, l3_offset, > - ODPH_IPV6HDR_LEN, &ipv6_hdr); > + ODP_IPV6HDR_LEN, &ipv6_hdr); > ipv6_hdr_ptr = &ipv6_hdr; > } > > old_ver_tc_flow = odp_be_to_cpu_32(ipv6_hdr_ptr->ver_tc_flow); > - old_tc = (old_ver_tc_flow & ODPH_IPV6HDR_TC_MASK) > - >> ODPH_IPV6HDR_TC_SHIFT; > + old_tc = (old_ver_tc_flow & ODP_IPV6HDR_TC_MASK) > + >> ODP_IPV6HDR_TC_SHIFT; > new_tc = old_tc; > > if (tos_marking->drop_prec_enabled) > @@ -2035,22 +2035,22 @@ static void egress_ipv6_tc_marking(tm_tos_marking_t *tos_marking, > tos_marking->shifted_dscp; > > if (tos_marking->ecn_ce_enabled && odp_packet_has_tcp(odp_pkt)) { > - ecn = old_tc & ODPH_IP_TOS_ECN_MASK; > - if ((ecn == ODPH_IP_ECN_ECT0) || (ecn == ODPH_IP_ECN_ECT1)) > - new_tc = (new_tc & ~ODPH_IP_TOS_ECN_MASK) | > - (ODPH_IP_ECN_CE << ODPH_IP_TOS_ECN_SHIFT); > + ecn = old_tc & ODP_IP_TOS_ECN_MASK; > + if ((ecn == ODP_IP_ECN_ECT0) || (ecn == ODP_IP_ECN_ECT1)) > + new_tc = (new_tc & ~ODP_IP_TOS_ECN_MASK) | > + (ODP_IP_ECN_CE << ODP_IP_TOS_ECN_SHIFT); > } > > if (new_tc == old_tc) > return; > > - new_ver_tc_flow = (old_ver_tc_flow & ~ODPH_IPV6HDR_TC_MASK) | > - (new_tc << ODPH_IPV6HDR_TC_SHIFT); > + new_ver_tc_flow = (old_ver_tc_flow & ~ODP_IPV6HDR_TC_MASK) | > + (new_tc << ODP_IPV6HDR_TC_SHIFT); > ipv6_hdr_ptr->ver_tc_flow = odp_cpu_to_be_32(new_ver_tc_flow); > > if (split_hdr) > odp_packet_copy_from_mem(odp_pkt, l3_offset, > - ODPH_IPV6HDR_LEN, &ipv6_hdr); > + ODP_IPV6HDR_LEN, &ipv6_hdr); > } > > static void tm_egress_marking(tm_system_t *tm_system, odp_packet_t odp_pkt) > @@ -2866,9 +2866,9 @@ int odp_tm_drop_prec_marking(odp_tm_t odp_tm, > if (drop_prec_enabled) { > new_dscp = new_dscp & dscp_mask; > inverted_mask = (uint8_t)~dscp_mask; > - tos_mask = (inverted_mask << ODPH_IP_TOS_DSCP_SHIFT) | > - ODPH_IP_TOS_ECN_MASK; > - shifted_dscp = new_dscp << ODPH_IP_TOS_DSCP_SHIFT; > + tos_mask = (inverted_mask << ODP_IP_TOS_DSCP_SHIFT) | > + ODP_IP_TOS_ECN_MASK; > + shifted_dscp = new_dscp << ODP_IP_TOS_DSCP_SHIFT; > } else { > tos_mask = 0xFF; /* Note that this is an inverted mask */ > shifted_dscp = 0; > diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c > index 245ff7b..39faef3 100644 > --- a/platform/linux-generic/pktio/dpdk.c > +++ b/platform/linux-generic/pktio/dpdk.c > @@ -19,7 +19,7 @@ > #include <odp_packet_dpdk.h> > #include <odp_debug_internal.h> > > -#include <odp/helper/eth.h> > +#include <protocols/eth.h> > > #include <rte_config.h> > #include <rte_mbuf.h> > @@ -590,7 +590,7 @@ static int dpdk_open(odp_pktio_t id ODP_UNUSED, > ODP_ERR("Failed to read interface MTU\n"); > return -1; > } > - pkt_dpdk->mtu = mtu + ODPH_ETHHDR_LEN; > + pkt_dpdk->mtu = mtu + ODP_ETHHDR_LEN; > > /* Some DPDK PMD virtual devices, like PCAP, do not support promisc > * mode change. Use system call for them. */ > diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c > index dce33e5..26523f1 100644 > --- a/platform/linux-generic/pktio/loop.c > +++ b/platform/linux-generic/pktio/loop.c > @@ -12,8 +12,8 @@ > #include <odp_debug_internal.h> > #include <odp/api/hints.h> > > -#include <odp/helper/eth.h> > -#include <odp/helper/ip.h> > +#include <protocols/eth.h> > +#include <protocols/ip.h> > > #include <errno.h> > > diff --git a/platform/linux-generic/pktio/netmap.c b/platform/linux-generic/pktio/netmap.c > index 847250b..0184df5 100644 > --- a/platform/linux-generic/pktio/netmap.c > +++ b/platform/linux-generic/pktio/netmap.c > @@ -12,7 +12,7 @@ > #include <odp_packet_netmap.h> > #include <odp_packet_socket.h> > #include <odp_debug_internal.h> > -#include <odp/helper/eth.h> > +#include <protocols/eth.h> > > #include <sys/ioctl.h> > #include <poll.h> > @@ -408,7 +408,7 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, pktio_entry_t *pktio_entry, > ODP_ERR("Unable to read interface MTU\n"); > goto error; > } > - mtu += ODPH_ETHHDR_LEN; > + mtu += ODP_ETHHDR_LEN; > pkt_nm->mtu = (mtu < buf_size) ? mtu : buf_size; > > /* Check if RSS is supported. If not, set 'max_input_queues' to 1. */ > @@ -603,7 +603,7 @@ static inline int netmap_pkt_to_odp(pktio_entry_t *pktio_entry, > return -1; > } > > - if (odp_unlikely(len < ODPH_ETH_LEN_MIN)) { > + if (odp_unlikely(len < ODP_ETH_LEN_MIN)) { > ODP_ERR("RX: Frame truncated: %" PRIu16 "\n", len); > return -1; > } > diff --git a/platform/linux-generic/pktio/pcap.c b/platform/linux-generic/pktio/pcap.c > index 2fb2a5b..3ed1ff7 100644 > --- a/platform/linux-generic/pktio/pcap.c > +++ b/platform/linux-generic/pktio/pcap.c > @@ -40,7 +40,7 @@ > #include <odp_packet_internal.h> > #include <odp_packet_io_internal.h> > > -#include <odp/helper/eth.h> > +#include <protocols/eth.h> > > #include <errno.h> > #include <pcap/pcap.h> > @@ -349,9 +349,9 @@ static uint32_t pcapif_mtu_get(pktio_entry_t *pktio_entry ODP_UNUSED) > static int pcapif_mac_addr_get(pktio_entry_t *pktio_entry ODP_UNUSED, > void *mac_addr) > { > - memcpy(mac_addr, pcap_mac, ODPH_ETHADDR_LEN); > + memcpy(mac_addr, pcap_mac, ODP_ETHADDR_LEN); > > - return ODPH_ETHADDR_LEN; > + return ODP_ETHADDR_LEN; > } > > static int pcapif_capability(pktio_entry_t *pktio_entry ODP_UNUSED, > diff --git a/platform/linux-generic/pktio/ring.c b/platform/linux-generic/pktio/ring.c > index ec27f2c..517e876 100644 > --- a/platform/linux-generic/pktio/ring.c > +++ b/platform/linux-generic/pktio/ring.c > @@ -73,7 +73,6 @@ > #include <fcntl.h> > #include <stdio.h> > #include <string.h> > -#include "odph_debug.h" > #include <odp_packet_io_ring_internal.h> > #include <odp_internal.h> > > @@ -165,9 +164,9 @@ _ring_create(const char *name, unsigned count, unsigned flags) > > /* count must be a power of 2 */ > if (!RING_VAL_IS_POWER_2(count) || (count > _RING_SZ_MASK)) { > - ODPH_ERR("Requested size is invalid, must be power of 2," > - "and do not exceed the size limit %u\n", > - _RING_SZ_MASK); > + ODP_ERR("Requested size is invalid, must be power of 2," > + "and do not exceed the size limit %u\n", > + _RING_SZ_MASK); > __odp_errno = EINVAL; > return NULL; > } > @@ -202,7 +201,7 @@ _ring_create(const char *name, unsigned count, unsigned flags) > TAILQ_INSERT_TAIL(&odp_ring_list, r, next); > } else { > __odp_errno = ENOMEM; > - ODPH_ERR("Cannot reserve memory\n"); > + ODP_ERR("Cannot reserve memory\n"); > } > > odp_rwlock_write_unlock(&qlock); > diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c > index 8f86dda..d3b2971 100644 > --- a/platform/linux-generic/pktio/socket.c > +++ b/platform/linux-generic/pktio/socket.c > @@ -43,8 +43,8 @@ > #include <odp_classification_internal.h> > #include <odp/api/hints.h> > > -#include <odp/helper/eth.h> > -#include <odp/helper/ip.h> > +#include <protocols/eth.h> > +#include <protocols/ip.h> > > static int sock_stats_reset(pktio_entry_t *pktio_entry); > > @@ -84,8 +84,8 @@ int sendmmsg(int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags) > /** Eth buffer start offset from u32-aligned address to make sure the following > * header (e.g. IP) starts at a 32-bit aligned address. > */ > -#define ETHBUF_OFFSET (ODP_ALIGN_ROUNDUP(ODPH_ETHHDR_LEN, sizeof(uint32_t)) \ > - - ODPH_ETHHDR_LEN) > +#define ETHBUF_OFFSET (ODP_ALIGN_ROUNDUP(ODP_ETHHDR_LEN, sizeof(uint32_t)) \ > + - ODP_ETHHDR_LEN) > > /** Round up buffer address to get a properly aliged eth buffer, i.e. aligned > * so that the next header always starts at a 32bit aligned address. > diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c > index 420cd26..d4cb6f8 100644 > --- a/platform/linux-generic/pktio/socket_mmap.c > +++ b/platform/linux-generic/pktio/socket_mmap.c > @@ -32,8 +32,8 @@ > #include <odp_classification_internal.h> > #include <odp/api/hints.h> > > -#include <odp/helper/eth.h> > -#include <odp/helper/ip.h> > +#include <protocols/eth.h> > +#include <protocols/ip.h> > > static int set_pkt_sock_fanout_mmap(pkt_sock_mmap_t *const pkt_sock, > int sock_group_idx) > @@ -115,26 +115,26 @@ static uint8_t *pkt_mmap_vlan_insert(uint8_t *l2_hdr_ptr, > uint16_t vlan_tci, > int *pkt_len_ptr) > { > - odph_ethhdr_t *eth_hdr; > - odph_vlanhdr_t *vlan_hdr; > - uint8_t *new_l2_ptr; > - int orig_pkt_len; > + odp_ethhdr_t *eth_hdr; > + odp_vlanhdr_t *vlan_hdr; > + uint8_t *new_l2_ptr; > + int orig_pkt_len; > > /* First try to see if the mac_offset is large enough to accommodate > * shifting the Ethernet header down to open up space for the IEEE > * 802.1Q vlan header. > */ > - if (ODPH_VLANHDR_LEN < mac_offset) { > + if (ODP_VLANHDR_LEN < mac_offset) { > orig_pkt_len = *pkt_len_ptr; > - new_l2_ptr = l2_hdr_ptr - ODPH_VLANHDR_LEN; > - memmove(new_l2_ptr, l2_hdr_ptr, ODPH_ETHHDR_LEN); > + new_l2_ptr = l2_hdr_ptr - ODP_VLANHDR_LEN; > + memmove(new_l2_ptr, l2_hdr_ptr, ODP_ETHHDR_LEN); > > - eth_hdr = (odph_ethhdr_t *)new_l2_ptr; > - vlan_hdr = (odph_vlanhdr_t *)(new_l2_ptr + ODPH_ETHHDR_LEN); > + eth_hdr = (odp_ethhdr_t *)new_l2_ptr; > + vlan_hdr = (odp_vlanhdr_t *)(new_l2_ptr + ODP_ETHHDR_LEN); > vlan_hdr->tci = odp_cpu_to_be_16(vlan_tci); > vlan_hdr->type = eth_hdr->type; > - eth_hdr->type = odp_cpu_to_be_16(ODPH_ETHTYPE_VLAN); > - *pkt_len_ptr = orig_pkt_len + ODPH_VLANHDR_LEN; > + eth_hdr->type = odp_cpu_to_be_16(ODP_ETHTYPE_VLAN); > + *pkt_len_ptr = orig_pkt_len + ODP_VLANHDR_LEN; > return new_l2_ptr; > } >
diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index 469869e..c8fd8cb 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -6,8 +6,6 @@ include $(top_srcdir)/platform/@with_platform@/Makefile.inc AM_CFLAGS += -I$(srcdir)/include AM_CFLAGS += -I$(top_srcdir)/include -AM_CFLAGS += -I$(top_srcdir)/helper/include -AM_CFLAGS += -I$(top_srcdir)/helper include_HEADERS = \ $(top_srcdir)/include/odp.h \ @@ -125,6 +123,11 @@ noinst_HEADERS = \ ${srcdir}/include/odp_timer_internal.h \ ${srcdir}/include/odp_timer_wheel_internal.h \ ${srcdir}/include/odp_traffic_mngr_internal.h \ + ${srcdir}/include/protocols/eth.h \ + ${srcdir}/include/protocols/ip.h \ + ${srcdir}/include/protocols/ipsec.h \ + ${srcdir}/include/protocols/tcp.h \ + ${srcdir}/include/protocols/udp.h \ ${srcdir}/Makefile.inc __LIB__libodp_linux_la_SOURCES = \ diff --git a/platform/linux-generic/include/odp_classification_inlines.h b/platform/linux-generic/include/odp_classification_inlines.h index 611d706..e4671eb 100644 --- a/platform/linux-generic/include/odp_classification_inlines.h +++ b/platform/linux-generic/include/odp_classification_inlines.h @@ -19,11 +19,11 @@ extern "C" { #endif #include <odp/api/debug.h> -#include <odp/helper/eth.h> -#include <odp/helper/ip.h> -#include <odp/helper/ipsec.h> -#include <odp/helper/udp.h> -#include <odp/helper/tcp.h> +#include <protocols/eth.h> +#include <protocols/ip.h> +#include <protocols/ipsec.h> +#include <protocols/udp.h> +#include <protocols/tcp.h> #include <odp_packet_internal.h> /* PMR term value verification function @@ -45,11 +45,11 @@ static inline int verify_pmr_ip_proto(const uint8_t *pkt_addr, odp_packet_hdr_t *pkt_hdr, pmr_term_value_t *term_value) { - const odph_ipv4hdr_t *ip; + const odp_ipv4hdr_t *ip; uint8_t proto; if (!pkt_hdr->p.input_flags.ipv4) return 0; - ip = (const odph_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); + ip = (const odp_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); proto = ip->proto; if (term_value->match.value == (proto & term_value->match.mask)) return 1; @@ -61,11 +61,11 @@ static inline int verify_pmr_ipv4_saddr(const uint8_t *pkt_addr, odp_packet_hdr_t *pkt_hdr, pmr_term_value_t *term_value) { - const odph_ipv4hdr_t *ip; + const odp_ipv4hdr_t *ip; uint32_t ipaddr; if (!pkt_hdr->p.input_flags.ipv4) return 0; - ip = (const odph_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); + ip = (const odp_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); ipaddr = odp_be_to_cpu_32(ip->src_addr); if (term_value->match.value == (ipaddr & term_value->match.mask)) return 1; @@ -77,11 +77,11 @@ static inline int verify_pmr_ipv4_daddr(const uint8_t *pkt_addr, odp_packet_hdr_t *pkt_hdr, pmr_term_value_t *term_value) { - const odph_ipv4hdr_t *ip; + const odp_ipv4hdr_t *ip; uint32_t ipaddr; if (!pkt_hdr->p.input_flags.ipv4) return 0; - ip = (const odph_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); + ip = (const odp_ipv4hdr_t *)(pkt_addr + pkt_hdr->p.l3_offset); ipaddr = odp_be_to_cpu_32(ip->dst_addr); if (term_value->match.value == (ipaddr & term_value->match.mask)) return 1; @@ -94,10 +94,10 @@ static inline int verify_pmr_tcp_sport(const uint8_t *pkt_addr, pmr_term_value_t *term_value) { uint16_t sport; - const odph_tcphdr_t *tcp; + const odp_tcphdr_t *tcp; if (!pkt_hdr->p.input_flags.tcp) return 0; - tcp = (const odph_tcphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); + tcp = (const odp_tcphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); sport = odp_be_to_cpu_16(tcp->src_port); if (term_value->match.value == (sport & term_value->match.mask)) return 1; @@ -110,10 +110,10 @@ static inline int verify_pmr_tcp_dport(const uint8_t *pkt_addr, pmr_term_value_t *term_value) { uint16_t dport; - const odph_tcphdr_t *tcp; + const odp_tcphdr_t *tcp; if (!pkt_hdr->p.input_flags.tcp) return 0; - tcp = (const odph_tcphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); + tcp = (const odp_tcphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); dport = odp_be_to_cpu_16(tcp->dst_port); if (term_value->match.value == (dport & term_value->match.mask)) return 1; @@ -126,10 +126,10 @@ static inline int verify_pmr_udp_dport(const uint8_t *pkt_addr, pmr_term_value_t *term_value) { uint16_t dport; - const odph_udphdr_t *udp; + const odp_udphdr_t *udp; if (!pkt_hdr->p.input_flags.udp) return 0; - udp = (const odph_udphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); + udp = (const odp_udphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); dport = odp_be_to_cpu_16(udp->dst_port); if (term_value->match.value == (dport & term_value->match.mask)) return 1; @@ -142,11 +142,11 @@ static inline int verify_pmr_udp_sport(const uint8_t *pkt_addr, pmr_term_value_t *term_value) { uint16_t sport; - const odph_udphdr_t *udp; + const odp_udphdr_t *udp; if (!pkt_hdr->p.input_flags.udp) return 0; - udp = (const odph_udphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); + udp = (const odp_udphdr_t *)(pkt_addr + pkt_hdr->p.l4_offset); sport = odp_be_to_cpu_16(udp->src_port); if (term_value->match.value == (sport & term_value->match.mask)) return 1; @@ -160,19 +160,19 @@ static inline int verify_pmr_dmac(const uint8_t *pkt_addr, { uint64_t dmac = 0; uint64_t dmac_be = 0; - const odph_ethhdr_t *eth; + const odp_ethhdr_t *eth; if (!packet_hdr_has_eth(pkt_hdr)) return 0; - eth = (const odph_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset); - memcpy(&dmac_be, eth->dst.addr, ODPH_ETHADDR_LEN); + eth = (const odp_ethhdr_t *)(pkt_addr + pkt_hdr->p.l2_offset); + memcpy(&dmac_be, eth->dst.addr, ODP_ETHADDR_LEN); dmac = odp_be_to_cpu_64(dmac_be); /* since we are converting a 48 bit ethernet address from BE to cpu format using odp_be_to_cpu_64() the last 16 bits needs to be right shifted */ if (dmac_be != dmac) - dmac = dmac >> (64 - (ODPH_ETHADDR_LEN * 8)); + dmac = dmac >> (64 - (ODP_ETHADDR_LEN * 8)); if (term_value->match.value == (dmac & term_value->match.mask)) return 1; @@ -220,11 +220,11 @@ static inline int verify_pmr_ipsec_spi(const uint8_t *pkt_addr, pkt_addr += pkt_hdr->p.l4_offset; if (pkt_hdr->p.input_flags.ipsec_ah) { - const odph_ahhdr_t *ahhdr = (const odph_ahhdr_t *)pkt_addr; + const odp_ahhdr_t *ahhdr = (const odp_ahhdr_t *)pkt_addr; spi = odp_be_to_cpu_32(ahhdr->spi); } else if (pkt_hdr->p.input_flags.ipsec_esp) { - const odph_esphdr_t *esphdr = (const odph_esphdr_t *)pkt_addr; + const odp_esphdr_t *esphdr = (const odp_esphdr_t *)pkt_addr; spi = odp_be_to_cpu_32(esphdr->spi); } else { diff --git a/platform/linux-generic/include/odp_name_table_internal.h b/platform/linux-generic/include/odp_name_table_internal.h index 21ae42d..52b202c 100644 --- a/platform/linux-generic/include/odp_name_table_internal.h +++ b/platform/linux-generic/include/odp_name_table_internal.h @@ -21,7 +21,7 @@ typedef enum { ODP_PKTIO_HANDLE, ODP_POOL_HANDLE, ODP_QUEUE_HANDLE, - ODPH_RING_HANDLE, + ODP_RING_HANDLE, ODP_SHM_HANDLE, ODP_TIMER_POOL_HANDLE, ODP_TM_HANDLE, diff --git a/helper/include/odp/helper/eth.h b/platform/linux-generic/include/protocols/eth.h similarity index 25% copy from helper/include/odp/helper/eth.h copy to platform/linux-generic/include/protocols/eth.h index 9f47ddf..1594b8c 100644 --- a/helper/include/odp/helper/eth.h +++ b/platform/linux-generic/include/protocols/eth.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2014, Linaro Limited +/* Copyright (c) 2016, Linaro Limited * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -10,8 +10,8 @@ * ODP ethernet header */ -#ifndef ODPH_ETH_H_ -#define ODPH_ETH_H_ +#ifndef ODP_ETH_H_ +#define ODP_ETH_H_ #ifdef __cplusplus extern "C" { @@ -19,105 +19,88 @@ extern "C" { #include <odp_api.h> -/** @addtogroup odph_header ODPH HEADER +/** @addtogroup odp_header ODP HEADER * @{ */ -#define ODPH_ETHADDR_LEN 6 /**< Ethernet address length */ -#define ODPH_ETHHDR_LEN 14 /**< Ethernet header length */ -#define ODPH_VLANHDR_LEN 4 /**< VLAN header length */ -#define ODPH_ETH_LEN_MIN 60 /**< Min frame length (excl CRC 4 bytes) */ -#define ODPH_ETH_LEN_MIN_CRC 64 /**< Min frame length (incl CRC 4 bytes) */ -#define ODPH_ETH_LEN_MAX 1514 /**< Max frame length (excl CRC 4 bytes) */ -#define ODPH_ETH_LEN_MAX_CRC 1518 /**< Max frame length (incl CRC 4 bytes) */ +#define ODP_ETHADDR_LEN 6 /**< Ethernet address length */ +#define ODP_ETHHDR_LEN 14 /**< Ethernet header length */ +#define ODP_VLANHDR_LEN 4 /**< VLAN header length */ +#define ODP_ETH_LEN_MIN 60 /**< Min frame length (excl CRC 4 bytes) */ +#define ODP_ETH_LEN_MIN_CRC 64 /**< Min frame length (incl CRC 4 bytes) */ +#define ODP_ETH_LEN_MAX 1514 /**< Max frame length (excl CRC 4 bytes) */ +#define ODP_ETH_LEN_MAX_CRC 1518 /**< Max frame length (incl CRC 4 bytes) */ -/* The two byte odph_vlanhdr_t tci field is composed of the following three +/* The two byte odp_vlanhdr_t tci field is composed of the following three * subfields - a three bit Priority Code Point (PCP), a one bit Drop * Eligibility Indicator (DEI) and a twelve bit VLAN Identifier (VID). The * following constants can be used to extract or modify these subfields, once * the tci field has been read in and converted to host byte order. Note * that the DEI subfield used to be the CFI bit. */ -#define ODPH_VLANHDR_MAX_PRIO 7 /**< Max value of the 3 bit priority */ -#define ODPH_VLANHDR_PCP_MASK 0xE000 /**< PCP field bit mask */ -#define ODPH_VLANHDR_PCP_SHIFT 13 /**< PCP field shift */ -#define ODPH_VLANHDR_DEI_MASK 0x1000 /**< DEI field bit mask */ -#define ODPH_VLANHDR_DEI_SHIFT 12 /**< DEI field shift */ -#define ODPH_VLANHDR_MAX_VID 0x0FFF /**< Max value of the 12 bit VID field */ -#define ODPH_VLANHDR_VID_MASK 0x0FFF /**< VID field bit mask */ -#define ODPH_VLANHDR_VID_SHIFT 0 /**< VID field shift */ +#define ODP_VLANHDR_MAX_PRIO 7 /**< Max value of the 3 bit priority */ +#define ODP_VLANHDR_PCP_MASK 0xE000 /**< PCP field bit mask */ +#define ODP_VLANHDR_PCP_SHIFT 13 /**< PCP field shift */ +#define ODP_VLANHDR_DEI_MASK 0x1000 /**< DEI field bit mask */ +#define ODP_VLANHDR_DEI_SHIFT 12 /**< DEI field shift */ +#define ODP_VLANHDR_MAX_VID 0x0FFF /**< Max value of the 12 bit VID field */ +#define ODP_VLANHDR_VID_MASK 0x0FFF /**< VID field bit mask */ +#define ODP_VLANHDR_VID_SHIFT 0 /**< VID field shift */ /** * Ethernet MAC address */ typedef struct ODP_PACKED { - uint8_t addr[ODPH_ETHADDR_LEN]; /**< @private Address */ -} odph_ethaddr_t; + uint8_t addr[ODP_ETHADDR_LEN]; /**< @private Address */ +} odp_ethaddr_t; /** @internal Compile time assert */ -ODP_STATIC_ASSERT(sizeof(odph_ethaddr_t) == ODPH_ETHADDR_LEN, - "ODPH_ETHADDR_T__SIZE_ERROR"); +ODP_STATIC_ASSERT(sizeof(odp_ethaddr_t) == ODP_ETHADDR_LEN, + "ODP_ETHADDR_T__SIZE_ERROR"); /** * Ethernet header */ typedef struct ODP_PACKED { - odph_ethaddr_t dst; /**< Destination address */ - odph_ethaddr_t src; /**< Source address */ + odp_ethaddr_t dst; /**< Destination address */ + odp_ethaddr_t src; /**< Source address */ odp_u16be_t type; /**< EtherType */ -} odph_ethhdr_t; +} odp_ethhdr_t; /** @internal Compile time assert */ -ODP_STATIC_ASSERT(sizeof(odph_ethhdr_t) == ODPH_ETHHDR_LEN, - "ODPH_ETHHDR_T__SIZE_ERROR"); +ODP_STATIC_ASSERT(sizeof(odp_ethhdr_t) == ODP_ETHHDR_LEN, + "ODP_ETHHDR_T__SIZE_ERROR"); /** * IEEE 802.1Q VLAN header * - * This field is present when the EtherType (the odph_ethhdr_t type field) of - * the preceding ethernet header is ODPH_ETHTYPE_VLAN. The inner EtherType - * (the odph_vlanhdr_t type field) then indicates what comes next. Note that + * This field is present when the EtherType (the odp_ethhdr_t type field) of + * the preceding ethernet header is ODP_ETHTYPE_VLAN. The inner EtherType + * (the odp_vlanhdr_t type field) then indicates what comes next. Note that * the so called TPID field isn't here because it overlaps with the - * odph_ethhdr_t type field. + * odp_ethhdr_t type field. */ typedef struct ODP_PACKED { odp_u16be_t tci; /**< Priority / CFI / VLAN ID */ odp_u16be_t type; /**< Inner EtherType */ -} odph_vlanhdr_t; +} odp_vlanhdr_t; /** @internal Compile time assert */ -ODP_STATIC_ASSERT(sizeof(odph_vlanhdr_t) == ODPH_VLANHDR_LEN, - "ODPH_VLANHDR_T__SIZE_ERROR"); +ODP_STATIC_ASSERT(sizeof(odp_vlanhdr_t) == ODP_VLANHDR_LEN, + "ODP_VLANHDR_T__SIZE_ERROR"); /* Ethernet header Ether Type ('type') values, a selected few */ -#define ODPH_ETHTYPE_IPV4 0x0800 /**< Internet Protocol version 4 */ -#define ODPH_ETHTYPE_ARP 0x0806 /**< Address Resolution Protocol */ -#define ODPH_ETHTYPE_RARP 0x8035 /**< Reverse Address Resolution Protocol*/ -#define ODPH_ETHTYPE_VLAN 0x8100 /**< VLAN-tagged frame IEEE 802.1Q */ -#define ODPH_ETHTYPE_VLAN_OUTER 0x88A8 /**< Stacked VLANs/QinQ, outer-tag/S-TAG*/ -#define ODPH_ETHTYPE_IPV6 0x86dd /**< Internet Protocol version 6 */ -#define ODPH_ETHTYPE_FLOW_CTRL 0x8808 /**< Ethernet flow control */ -#define ODPH_ETHTYPE_MPLS 0x8847 /**< MPLS unicast */ -#define ODPH_ETHTYPE_MPLS_MCAST 0x8848 /**< MPLS multicast */ -#define ODPH_ETHTYPE_MACSEC 0x88E5 /**< MAC security IEEE 802.1AE */ -#define ODPH_ETHTYPE_1588 0x88F7 /**< Precision Time Protocol IEEE 1588 */ - -/** - * Parse Ethernet from a string - * - * Parses Ethernet MAC address from the string which must be passed in format of - * six hexadecimal digits delimited by colons (xx:xx:xx:xx:xx:xx). Both upper - * and lower case characters are supported. All six digits have to be present - * and may have leading zeros. String does not have to be NULL terminated. - * The address is written only when successful. - * - * @param[out] mac Pointer to Ethernet address for output - * @param str MAC address string to be parsed - * - * @retval 0 on success - * @retval <0 on failure - */ -int odph_eth_addr_parse(odph_ethaddr_t *mac, const char *str); +#define ODP_ETHTYPE_IPV4 0x0800 /**< Internet Protocol version 4 */ +#define ODP_ETHTYPE_ARP 0x0806 /**< Address Resolution Protocol */ +#define ODP_ETHTYPE_RARP 0x8035 /**< Reverse Address Resolution Protocol*/ +#define ODP_ETHTYPE_VLAN 0x8100 /**< VLAN-tagged frame IEEE 802.1Q */ +#define ODP_ETHTYPE_VLAN_OUTER 0x88A8 /**< Stacked VLANs/QinQ, outer-tag/S-TAG*/ +#define ODP_ETHTYPE_IPV6 0x86dd /**< Internet Protocol version 6 */ +#define ODP_ETHTYPE_FLOW_CTRL 0x8808 /**< Ethernet flow control */ +#define ODP_ETHTYPE_MPLS 0x8847 /**< MPLS unicast */ +#define ODP_ETHTYPE_MPLS_MCAST 0x8848 /**< MPLS multicast */ +#define ODP_ETHTYPE_MACSEC 0x88E5 /**< MAC security IEEE 802.1AE */ +#define ODP_ETHTYPE_1588 0x88F7 /**< Precision Time Protocol IEEE 1588 */ /** * @} diff --git a/helper/include/odp/helper/ip.h b/platform/linux-generic/include/protocols/ip.h similarity index 37% copy from helper/include/odp/helper/ip.h copy to platform/linux-generic/include/protocols/ip.h index 4cfc00f..d330ae4 100644 --- a/helper/include/odp/helper/ip.h +++ b/platform/linux-generic/include/protocols/ip.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2014, Linaro Limited +/* Copyright (c) 2016, Linaro Limited * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -10,69 +10,66 @@ * ODP IP header */ -#ifndef ODPH_IP_H_ -#define ODPH_IP_H_ +#ifndef ODP_IP_H_ +#define ODP_IP_H_ #ifdef __cplusplus extern "C" { #endif #include <odp_api.h> -#include <odp/helper/chksum.h> -#include <string.h> - -/** @addtogroup odph_header ODPH HEADER +/** @addtogroup odp_header ODP HEADER * @{ */ -#define ODPH_IPV4 4 /**< IP version 4 */ -#define ODPH_IPV4HDR_LEN 20 /**< Min length of IP header (no options) */ -#define ODPH_IPV4HDR_IHL_MIN 5 /**< Minimum IHL value*/ -#define ODPH_IPV4ADDR_LEN 4 /**< IPv4 address length in bytes */ +#define ODP_IPV4 4 /**< IP version 4 */ +#define ODP_IPV4HDR_LEN 20 /**< Min length of IP header (no options) */ +#define ODP_IPV4HDR_IHL_MIN 5 /**< Minimum IHL value*/ +#define ODP_IPV4ADDR_LEN 4 /**< IPv4 address length in bytes */ /** The one byte IPv4 tos or IPv6 tc field is composed of the following two * subfields - a six bit Differentiated Service Code Point (DSCP) and a two * bit Explicit Congestion Notification (ECN) subfield. The following * constants can be used to extract or modify these fields. Despite the - * name prefix being ODPH_IP_TOS_* these constants apply equally well for + * name prefix being ODP_IP_TOS_* these constants apply equally well for * the IPv6 Traffic Class (tc) field. */ -#define ODPH_IP_TOS_MAX_DSCP 63 /**< 6-bit DSCP field has max value 63 */ -#define ODPH_IP_TOS_DSCP_MASK 0xFC /**< DSCP field is in bits <7:2> */ -#define ODPH_IP_TOS_DSCP_SHIFT 2 /**< DSCP field is shifted letf by 2 */ -#define ODPH_IP_TOS_MAX_ECN 3 /**< 2-bit ECN field has max value 3 */ -#define ODPH_IP_TOS_ECN_MASK 0x03 /**< ECN field is in bits <1:0> */ -#define ODPH_IP_TOS_ECN_SHIFT 0 /**< ECN field is not shifted. */ +#define ODP_IP_TOS_MAX_DSCP 63 /**< 6-bit DSCP field has max value 63 */ +#define ODP_IP_TOS_DSCP_MASK 0xFC /**< DSCP field is in bits <7:2> */ +#define ODP_IP_TOS_DSCP_SHIFT 2 /**< DSCP field is shifted letf by 2 */ +#define ODP_IP_TOS_MAX_ECN 3 /**< 2-bit ECN field has max value 3 */ +#define ODP_IP_TOS_ECN_MASK 0x03 /**< ECN field is in bits <1:0> */ +#define ODP_IP_TOS_ECN_SHIFT 0 /**< ECN field is not shifted. */ /** The following constants give names to the four possible ECN values, * as described in RFC 3168. */ -#define ODPH_IP_ECN_NOT_ECT 0 /**< 0 indicates not participating in ECN */ -#define ODPH_IP_ECN_ECT1 1 /**< Indicates no congestion seen yet */ -#define ODPH_IP_ECN_ECT0 2 /**< Indicates no congestion seen yet */ -#define ODPH_IP_ECN_CE 3 /**< Used to signal Congestion Experienced */ +#define ODP_IP_ECN_NOT_ECT 0 /**< 0 indicates not participating in ECN */ +#define ODP_IP_ECN_ECT1 1 /**< Indicates no congestion seen yet */ +#define ODP_IP_ECN_ECT0 2 /**< Indicates no congestion seen yet */ +#define ODP_IP_ECN_CE 3 /**< Used to signal Congestion Experienced */ /** @internal Returns IPv4 version */ -#define ODPH_IPV4HDR_VER(ver_ihl) (((ver_ihl) & 0xf0) >> 4) +#define ODP_IPV4HDR_VER(ver_ihl) (((ver_ihl) & 0xf0) >> 4) /** @internal Returns IPv4 header length */ -#define ODPH_IPV4HDR_IHL(ver_ihl) ((ver_ihl) & 0x0f) +#define ODP_IPV4HDR_IHL(ver_ihl) ((ver_ihl) & 0x0f) /** @internal Returns IPv4 DSCP */ -#define ODPH_IPV4HDR_DSCP(tos) (((tos) & 0xfc) >> 2) +#define ODP_IPV4HDR_DSCP(tos) (((tos) & 0xfc) >> 2) /** @internal Returns IPv4 Don't fragment */ -#define ODPH_IPV4HDR_FLAGS_DONT_FRAG(frag_offset) ((frag_offset) & 0x4000) +#define ODP_IPV4HDR_FLAGS_DONT_FRAG(frag_offset) ((frag_offset) & 0x4000) /** @internal Returns IPv4 more fragments */ -#define ODPH_IPV4HDR_FLAGS_MORE_FRAGS(frag_offset) ((frag_offset) & 0x2000) +#define ODP_IPV4HDR_FLAGS_MORE_FRAGS(frag_offset) ((frag_offset) & 0x2000) /** @internal Returns IPv4 fragment offset */ -#define ODPH_IPV4HDR_FRAG_OFFSET(frag_offset) ((frag_offset) & 0x1fff) +#define ODP_IPV4HDR_FRAG_OFFSET(frag_offset) ((frag_offset) & 0x1fff) /** @internal Returns true if IPv4 packet is a fragment */ -#define ODPH_IPV4HDR_IS_FRAGMENT(frag_offset) ((frag_offset) & 0x3fff) +#define ODP_IPV4HDR_IS_FRAGMENT(frag_offset) ((frag_offset) & 0x3fff) /** IPv4 header */ typedef struct ODP_PACKED { @@ -86,91 +83,37 @@ typedef struct ODP_PACKED { odp_u16sum_t chksum; /**< Checksum */ odp_u32be_t src_addr; /**< Source address */ odp_u32be_t dst_addr; /**< Destination address */ -} odph_ipv4hdr_t; +} odp_ipv4hdr_t; /** @internal Compile time assert */ -ODP_STATIC_ASSERT(sizeof(odph_ipv4hdr_t) == ODPH_IPV4HDR_LEN, - "ODPH_IPV4HDR_T__SIZE_ERROR"); - -/** - * Check if IPv4 checksum is valid - * - * @param pkt ODP packet - * - * @return 1 if checksum is valid, otherwise 0 - */ -static inline int odph_ipv4_csum_valid(odp_packet_t pkt) -{ - odp_u16be_t res = 0; - uint16_t *w; - int nleft = sizeof(odph_ipv4hdr_t); - odph_ipv4hdr_t ip; - odp_u16be_t chksum; - - if (!odp_packet_l3_offset(pkt)) - return 0; - - odp_packet_copy_to_mem(pkt, odp_packet_l3_offset(pkt), - sizeof(odph_ipv4hdr_t), &ip); - - w = (uint16_t *)(void *)&ip; - chksum = ip.chksum; - ip.chksum = 0x0; - - res = odph_chksum(w, nleft); - return (res == chksum) ? 1 : 0; -} - -/** - * Calculate and fill in IPv4 checksum - * - * @note when using this api to populate data destined for the wire - * odp_cpu_to_be_16() can be used to remove sparse warnings - * - * @param pkt ODP packet - * - * @return IPv4 checksum in host cpu order, or 0 on failure - */ -static inline odp_u16sum_t odph_ipv4_csum_update(odp_packet_t pkt) -{ - uint16_t *w; - odph_ipv4hdr_t *ip; - int nleft = sizeof(odph_ipv4hdr_t); - - if (!odp_packet_l3_offset(pkt)) - return 0; - - ip = (odph_ipv4hdr_t *)odp_packet_l3_ptr(pkt, NULL); - w = (uint16_t *)(void *)ip; - ip->chksum = odph_chksum(w, nleft); - return ip->chksum; -} +ODP_STATIC_ASSERT(sizeof(odp_ipv4hdr_t) == ODP_IPV4HDR_LEN, + "ODP_IPV4HDR_T__SIZE_ERROR"); /** IPv6 version */ -#define ODPH_IPV6 6 +#define ODP_IPV6 6 /** IPv6 header length */ -#define ODPH_IPV6HDR_LEN 40 +#define ODP_IPV6HDR_LEN 40 /** IPv6 address length in bytes */ -#define ODPH_IPV6ADDR_LEN 16 +#define ODP_IPV6ADDR_LEN 16 /** The following constants can be used to access the three subfields * of the 4 byte ver_tc_flow field - namely the four bit Version subfield, * the eight bit Traffic Class subfield (TC) and the twenty bit Flow Label * subfield. Note that the IPv6 TC field is analogous to the IPv4 TOS - * field and is composed of the DSCP and ECN subfields. Use the ODPH_IP_TOS_* + * field and is composed of the DSCP and ECN subfields. Use the ODP_IP_TOS_* * constants above to access these subfields. */ -#define ODPH_IPV6HDR_VERSION_MASK 0xF0000000 /**< Version field bit mask */ -#define ODPH_IPV6HDR_VERSION_SHIFT 28 /**< Version field shift */ -#define ODPH_IPV6HDR_TC_MASK 0x0FF00000 /**< TC field bit mask */ -#define ODPH_IPV6HDR_TC_SHIFT 20 /**< TC field shift */ -#define ODPH_IPV6HDR_FLOW_LABEL_MASK 0x000FFFFF /**< Flow Label bit mask */ -#define ODPH_IPV6HDR_FLOW_LABEL_SHIFT 0 /**< Flow Label shift */ +#define ODP_IPV6HDR_VERSION_MASK 0xF0000000 /**< Version field bit mask */ +#define ODP_IPV6HDR_VERSION_SHIFT 28 /**< Version field shift */ +#define ODP_IPV6HDR_TC_MASK 0x0FF00000 /**< TC field bit mask */ +#define ODP_IPV6HDR_TC_SHIFT 20 /**< TC field shift */ +#define ODP_IPV6HDR_FLOW_LABEL_MASK 0x000FFFFF /**< Flow Label bit mask */ +#define ODP_IPV6HDR_FLOW_LABEL_SHIFT 0 /**< Flow Label shift */ /** @internal Returns IPv6 DSCP */ -#define ODPH_IPV6HDR_DSCP(ver_tc_flow) \ +#define ODP_IPV6HDR_DSCP(ver_tc_flow) \ (uint8_t)((((ver_tc_flow) & 0x0fc00000) >> 22) & 0xff) /** @@ -183,11 +126,11 @@ typedef struct ODP_PACKED { uint8_t hop_limit; /**< Hop limit */ uint8_t src_addr[16]; /**< Source address */ uint8_t dst_addr[16]; /**< Destination address */ -} odph_ipv6hdr_t; +} odp_ipv6hdr_t; /** @internal Compile time assert */ -ODP_STATIC_ASSERT(sizeof(odph_ipv6hdr_t) == ODPH_IPV6HDR_LEN, - "ODPH_IPV6HDR_T__SIZE_ERROR"); +ODP_STATIC_ASSERT(sizeof(odp_ipv6hdr_t) == ODP_IPV6HDR_LEN, + "ODP_IPV6HDR_T__SIZE_ERROR"); /** * IPv6 Header extensions @@ -198,41 +141,24 @@ typedef struct ODP_PACKED { not counting first 8 bytes, so 0 = 8 bytes 1 = 16 bytes, etc. */ uint8_t filler[6]; /**< Fill out first 8 byte segment */ -} odph_ipv6hdr_ext_t; +} odp_ipv6hdr_ext_t; /** @name * IP protocol values (IPv4:'proto' or IPv6:'next_hdr') * @{*/ -#define ODPH_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */ -#define ODPH_IPPROTO_ICMP 0x01 /**< Internet Control Message Protocol (1) */ -#define ODPH_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */ -#define ODPH_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */ -#define ODPH_IPPROTO_ROUTE 0x2B /**< IPv6 Routing header (43) */ -#define ODPH_IPPROTO_FRAG 0x2C /**< IPv6 Fragment (44) */ -#define ODPH_IPPROTO_AH 0x33 /**< Authentication Header (51) */ -#define ODPH_IPPROTO_ESP 0x32 /**< Encapsulating Security Payload (50) */ -#define ODPH_IPPROTO_INVALID 0xFF /**< Reserved invalid by IANA */ +#define ODP_IPPROTO_HOPOPTS 0x00 /**< IPv6 hop-by-hop options */ +#define ODP_IPPROTO_ICMP 0x01 /**< Internet Control Message Protocol (1) */ +#define ODP_IPPROTO_TCP 0x06 /**< Transmission Control Protocol (6) */ +#define ODP_IPPROTO_UDP 0x11 /**< User Datagram Protocol (17) */ +#define ODP_IPPROTO_ROUTE 0x2B /**< IPv6 Routing header (43) */ +#define ODP_IPPROTO_FRAG 0x2C /**< IPv6 Fragment (44) */ +#define ODP_IPPROTO_AH 0x33 /**< Authentication Header (51) */ +#define ODP_IPPROTO_ESP 0x32 /**< Encapsulating Security Payload (50) */ +#define ODP_IPPROTO_INVALID 0xFF /**< Reserved invalid by IANA */ /**@}*/ /** - * Parse IPv4 address from a string - * - * Parses IPv4 address from the string which must be passed in the format of - * four decimal digits delimited by dots (xxx.xxx.xxx.xxx). All four digits - * have to be present and may have leading zeros. String does not have to be - * NULL terminated. The address is written only when successful. The address - * byte order is CPU native. - * - * @param[out] ip_addr Pointer to IPv4 address for output (in native endian) - * @param str IPv4 address string to be parsed - * - * @retval 0 on success - * @retval <0 on failure - */ -int odph_ipv4_addr_parse(uint32_t *ip_addr, const char *str); - -/** * @} */ #ifdef __cplusplus diff --git a/helper/include/odp/helper/ipsec.h b/platform/linux-generic/include/protocols/ipsec.h similarity index 64% copy from helper/include/odp/helper/ipsec.h copy to platform/linux-generic/include/protocols/ipsec.h index 034a341..57babbb 100644 --- a/helper/include/odp/helper/ipsec.h +++ b/platform/linux-generic/include/protocols/ipsec.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2014, Linaro Limited +/* Copyright (c) 2016, Linaro Limited * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -11,8 +11,8 @@ * ODP IPSec headers */ -#ifndef ODPH_IPSEC_H_ -#define ODPH_IPSEC_H_ +#ifndef ODP_IPSEC_H_ +#define ODP_IPSEC_H_ #ifdef __cplusplus extern "C" { @@ -20,13 +20,13 @@ extern "C" { #include <odp_api.h> -/** @addtogroup odph_header ODPH HEADER +/** @addtogroup odp_header ODP HEADER * @{ */ -#define ODPH_ESPHDR_LEN 8 /**< IPSec ESP header length */ -#define ODPH_ESPTRL_LEN 2 /**< IPSec ESP trailer length */ -#define ODPH_AHHDR_LEN 12 /**< IPSec AH header length */ +#define ODP_ESPHDR_LEN 8 /**< IPSec ESP header length */ +#define ODP_ESPTRL_LEN 2 /**< IPSec ESP trailer length */ +#define ODP_AHHDR_LEN 12 /**< IPSec AH header length */ /** * IPSec ESP header @@ -35,11 +35,11 @@ typedef struct ODP_PACKED { odp_u32be_t spi; /**< Security Parameter Index */ odp_u32be_t seq_no; /**< Sequence Number */ uint8_t iv[0]; /**< Initialization vector */ -} odph_esphdr_t; +} odp_esphdr_t; /** @internal Compile time assert */ -ODP_STATIC_ASSERT(sizeof(odph_esphdr_t) == ODPH_ESPHDR_LEN, - "ODPH_ESPHDR_T__SIZE_ERROR"); +ODP_STATIC_ASSERT(sizeof(odp_esphdr_t) == ODP_ESPHDR_LEN, + "ODP_ESPHDR_T__SIZE_ERROR"); /** * IPSec ESP trailer @@ -48,11 +48,11 @@ typedef struct ODP_PACKED { uint8_t pad_len; /**< Padding length (0-255) */ uint8_t next_header; /**< Next header protocol */ uint8_t icv[0]; /**< Integrity Check Value (optional) */ -} odph_esptrl_t; +} odp_esptrl_t; /** @internal Compile time assert */ -ODP_STATIC_ASSERT(sizeof(odph_esptrl_t) == ODPH_ESPTRL_LEN, - "ODPH_ESPTRL_T__SIZE_ERROR"); +ODP_STATIC_ASSERT(sizeof(odp_esptrl_t) == ODP_ESPTRL_LEN, + "ODP_ESPTRL_T__SIZE_ERROR"); /** * IPSec AH header @@ -64,11 +64,11 @@ typedef struct ODP_PACKED { odp_u32be_t spi; /**< Security Parameter Index */ odp_u32be_t seq_no; /**< Sequence Number */ uint8_t icv[0]; /**< Integrity Check Value */ -} odph_ahhdr_t; +} odp_ahhdr_t; /** @internal Compile time assert */ -ODP_STATIC_ASSERT(sizeof(odph_ahhdr_t) == ODPH_AHHDR_LEN, - "ODPH_AHHDR_T__SIZE_ERROR"); +ODP_STATIC_ASSERT(sizeof(odp_ahhdr_t) == ODP_AHHDR_LEN, + "ODP_AHHDR_T__SIZE_ERROR"); /** * @} diff --git a/helper/include/odp/helper/tcp.h b/platform/linux-generic/include/protocols/tcp.h similarity index 88% copy from helper/include/odp/helper/tcp.h copy to platform/linux-generic/include/protocols/tcp.h index cabef90..45e3fa4 100644 --- a/helper/include/odp/helper/tcp.h +++ b/platform/linux-generic/include/protocols/tcp.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2014, Linaro Limited +/* Copyright (c) 2016, Linaro Limited * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -11,8 +11,8 @@ * ODP TCP header */ -#ifndef ODPH_TCP_H_ -#define ODPH_TCP_H_ +#ifndef ODP_TCP_H_ +#define ODP_TCP_H_ #ifdef __cplusplus extern "C" { @@ -20,11 +20,11 @@ extern "C" { #include <odp_api.h> -/** @addtogroup odph_header ODPH HEADER +/** @addtogroup odp_header ODP HEADER * @{ */ -#define ODPH_TCPHDR_LEN 20 /**< Min length of TCP header (no options) */ +#define ODP_TCPHDR_LEN 20 /**< Min length of TCP header (no options) */ /** TCP header */ typedef struct ODP_PACKED { @@ -76,7 +76,7 @@ typedef struct ODP_PACKED { odp_u16be_t window; /**< Window size */ odp_u16be_t cksm; /**< Checksum */ odp_u16be_t urgptr; /**< Urgent pointer */ -} odph_tcphdr_t; +} odp_tcphdr_t; /** * @} diff --git a/helper/include/odp/helper/udp.h b/platform/linux-generic/include/protocols/udp.h similarity index 47% copy from helper/include/odp/helper/udp.h copy to platform/linux-generic/include/protocols/udp.h index 1ba2dff..0179394 100644 --- a/helper/include/odp/helper/udp.h +++ b/platform/linux-generic/include/protocols/udp.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2014, Linaro Limited +/* Copyright (c) 2016, Linaro Limited * All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -10,22 +10,21 @@ * ODP UDP header */ -#ifndef ODPH_UDP_H_ -#define ODPH_UDP_H_ +#ifndef ODP_UDP_H_ +#define ODP_UDP_H_ #ifdef __cplusplus extern "C" { #endif #include <odp_api.h> -#include <odp/helper/chksum.h> -/** @addtogroup odph_header ODPH HEADER +/** @addtogroup odp_header ODP HEADER * @{ */ /** UDP header length */ -#define ODPH_UDPHDR_LEN 8 +#define ODP_UDPHDR_LEN 8 /** UDP header */ typedef struct ODP_PACKED { @@ -33,28 +32,11 @@ typedef struct ODP_PACKED { odp_u16be_t dst_port; /**< Destination port */ odp_u16be_t length; /**< UDP datagram length in bytes (header+data) */ odp_u16be_t chksum; /**< UDP header and data checksum (0 if not used)*/ -} odph_udphdr_t; - -/** - * UDP checksum - * - * This function calculates the UDP checksum given an odp packet. - * - * @param pkt calculate chksum for pkt - * @return checksum value in BE endianness - */ -static inline uint16_t odph_ipv4_udp_chksum(odp_packet_t pkt) -{ - uint16_t chksum; - int rc; - - rc = odph_udp_tcp_chksum(pkt, ODPH_CHKSUM_RETURN, &chksum); - return (rc == 0) ? chksum : 0; -} +} odp_udphdr_t; /** @internal Compile time assert */ -ODP_STATIC_ASSERT(sizeof(odph_udphdr_t) == ODPH_UDPHDR_LEN, - "ODPH_UDPHDR_T__SIZE_ERROR"); +ODP_STATIC_ASSERT(sizeof(odp_udphdr_t) == ODP_UDPHDR_LEN, + "ODP_UDPHDR_T__SIZE_ERROR"); /** * @} diff --git a/platform/linux-generic/odp_classification.c b/platform/linux-generic/odp_classification.c index 0602a62..25fe12b 100644 --- a/platform/linux-generic/odp_classification.c +++ b/platform/linux-generic/odp_classification.c @@ -18,7 +18,8 @@ #include <odp_classification_internal.h> #include <odp_pool_internal.h> #include <odp/api/shared_memory.h> -#include <odp/helper/eth.h> +#include <protocols/eth.h> +#include <protocols/ip.h> #include <string.h> #include <errno.h> #include <odp/api/spinlock.h> @@ -840,16 +841,16 @@ cos_t *match_qos_l3_cos(pmr_l3_cos_t *l3_cos, const uint8_t *pkt_addr, { uint8_t dscp; cos_t *cos = NULL; - const odph_ipv4hdr_t *ipv4; - const odph_ipv6hdr_t *ipv6; + const odp_ipv4hdr_t *ipv4; + const odp_ipv6hdr_t *ipv6; if (hdr->p.input_flags.l3 && hdr->p.input_flags.ipv4) { - ipv4 = (const odph_ipv4hdr_t *)(pkt_addr + hdr->p.l3_offset); - dscp = ODPH_IPV4HDR_DSCP(ipv4->tos); + ipv4 = (const odp_ipv4hdr_t *)(pkt_addr + hdr->p.l3_offset); + dscp = ODP_IPV4HDR_DSCP(ipv4->tos); cos = l3_cos->cos[dscp]; } else if (hdr->p.input_flags.l3 && hdr->p.input_flags.ipv6) { - ipv6 = (const odph_ipv6hdr_t *)(pkt_addr + hdr->p.l3_offset); - dscp = ODPH_IPV6HDR_DSCP(ipv6->ver_tc_flow); + ipv6 = (const odp_ipv6hdr_t *)(pkt_addr + hdr->p.l3_offset); + dscp = ODP_IPV6HDR_DSCP(ipv6->ver_tc_flow); cos = l3_cos->cos[dscp]; } @@ -860,14 +861,14 @@ cos_t *match_qos_l2_cos(pmr_l2_cos_t *l2_cos, const uint8_t *pkt_addr, odp_packet_hdr_t *hdr) { cos_t *cos = NULL; - const odph_ethhdr_t *eth; - const odph_vlanhdr_t *vlan; + const odp_ethhdr_t *eth; + const odp_vlanhdr_t *vlan; uint16_t qos; if (packet_hdr_has_l2(hdr) && hdr->p.input_flags.vlan && packet_hdr_has_eth(hdr)) { - eth = (const odph_ethhdr_t *)(pkt_addr + hdr->p.l2_offset); - vlan = (const odph_vlanhdr_t *)(eth + 1); + eth = (const odp_ethhdr_t *)(pkt_addr + hdr->p.l2_offset); + vlan = (const odp_vlanhdr_t *)(eth + 1); qos = odp_be_to_cpu_16(vlan->tci); qos = ((qos >> 13) & 0x07); cos = l2_cos->cos[qos]; diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index c319833..5cbca1e 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -10,10 +10,10 @@ #include <odp/api/hints.h> #include <odp/api/byteorder.h> -#include <odp/helper/eth.h> -#include <odp/helper/ip.h> -#include <odp/helper/tcp.h> -#include <odp/helper/udp.h> +#include <protocols/eth.h> +#include <protocols/ip.h> +#include <protocols/tcp.h> +#include <protocols/udp.h> #include <errno.h> #include <string.h> @@ -995,15 +995,15 @@ void _odp_packet_copy_md_to_packet(odp_packet_t srcpkt, odp_packet_t dstpkt) static inline uint8_t parse_ipv4(packet_parser_t *prs, const uint8_t **parseptr, uint32_t *offset, uint32_t frame_len) { - const odph_ipv4hdr_t *ipv4 = (const odph_ipv4hdr_t *)*parseptr; - uint8_t ver = ODPH_IPV4HDR_VER(ipv4->ver_ihl); - uint8_t ihl = ODPH_IPV4HDR_IHL(ipv4->ver_ihl); + const odp_ipv4hdr_t *ipv4 = (const odp_ipv4hdr_t *)*parseptr; + uint8_t ver = ODP_IPV4HDR_VER(ipv4->ver_ihl); + uint8_t ihl = ODP_IPV4HDR_IHL(ipv4->ver_ihl); uint16_t frag_offset; uint32_t dstaddr = odp_be_to_cpu_32(ipv4->dst_addr); prs->l3_len = odp_be_to_cpu_16(ipv4->tot_len); - if (odp_unlikely(ihl < ODPH_IPV4HDR_IHL_MIN) || + if (odp_unlikely(ihl < ODP_IPV4HDR_IHL_MIN) || odp_unlikely(ver != 4) || (prs->l3_len > frame_len - *offset)) { prs->error_flags.ip_err = 1; @@ -1013,7 +1013,7 @@ static inline uint8_t parse_ipv4(packet_parser_t *prs, const uint8_t **parseptr, *offset += ihl * 4; *parseptr += ihl * 4; - if (odp_unlikely(ihl > ODPH_IPV4HDR_IHL_MIN)) + if (odp_unlikely(ihl > ODP_IPV4HDR_IHL_MIN)) prs->input_flags.ipopt = 1; /* A packet is a fragment if: @@ -1022,7 +1022,7 @@ static inline uint8_t parse_ipv4(packet_parser_t *prs, const uint8_t **parseptr, * "fragment offset" field is nonzero (all fragments except the first) */ frag_offset = odp_be_to_cpu_16(ipv4->frag_offset); - if (odp_unlikely(ODPH_IPV4HDR_IS_FRAGMENT(frag_offset))) + if (odp_unlikely(ODP_IPV4HDR_IS_FRAGMENT(frag_offset))) prs->input_flags.ipfrag = 1; /* Handle IPv4 broadcast / multicast */ @@ -1039,12 +1039,12 @@ static inline uint8_t parse_ipv6(packet_parser_t *prs, const uint8_t **parseptr, uint32_t *offset, uint32_t frame_len, uint32_t seg_len) { - const odph_ipv6hdr_t *ipv6 = (const odph_ipv6hdr_t *)*parseptr; - const odph_ipv6hdr_ext_t *ipv6ext; + const odp_ipv6hdr_t *ipv6 = (const odp_ipv6hdr_t *)*parseptr; + const odp_ipv6hdr_ext_t *ipv6ext; uint32_t dstaddr0 = odp_be_to_cpu_32(ipv6->dst_addr[0]); prs->l3_len = odp_be_to_cpu_16(ipv6->payload_len) + - ODPH_IPV6HDR_LEN; + ODP_IPV6HDR_LEN; /* Basic sanity checks on IPv6 header */ if ((odp_be_to_cpu_32(ipv6->ver_tc_flow) >> 28) != 6 || @@ -1058,22 +1058,22 @@ static inline uint8_t parse_ipv6(packet_parser_t *prs, const uint8_t **parseptr, prs->input_flags.ip_bcast = 0; /* Skip past IPv6 header */ - *offset += sizeof(odph_ipv6hdr_t); - *parseptr += sizeof(odph_ipv6hdr_t); + *offset += sizeof(odp_ipv6hdr_t); + *parseptr += sizeof(odp_ipv6hdr_t); /* Skip past any IPv6 extension headers */ - if (ipv6->next_hdr == ODPH_IPPROTO_HOPOPTS || - ipv6->next_hdr == ODPH_IPPROTO_ROUTE) { + if (ipv6->next_hdr == ODP_IPPROTO_HOPOPTS || + ipv6->next_hdr == ODP_IPPROTO_ROUTE) { prs->input_flags.ipopt = 1; do { - ipv6ext = (const odph_ipv6hdr_ext_t *)*parseptr; + ipv6ext = (const odp_ipv6hdr_ext_t *)*parseptr; uint16_t extlen = 8 + ipv6ext->ext_len * 8; *offset += extlen; *parseptr += extlen; - } while ((ipv6ext->next_hdr == ODPH_IPPROTO_HOPOPTS || - ipv6ext->next_hdr == ODPH_IPPROTO_ROUTE) && + } while ((ipv6ext->next_hdr == ODP_IPPROTO_HOPOPTS || + ipv6ext->next_hdr == ODP_IPPROTO_ROUTE) && *offset < seg_len); if (*offset >= prs->l3_offset + @@ -1082,13 +1082,13 @@ static inline uint8_t parse_ipv6(packet_parser_t *prs, const uint8_t **parseptr, return 0; } - if (ipv6ext->next_hdr == ODPH_IPPROTO_FRAG) + if (ipv6ext->next_hdr == ODP_IPPROTO_FRAG) prs->input_flags.ipfrag = 1; return ipv6ext->next_hdr; } - if (odp_unlikely(ipv6->next_hdr == ODPH_IPPROTO_FRAG)) { + if (odp_unlikely(ipv6->next_hdr == ODP_IPPROTO_FRAG)) { prs->input_flags.ipopt = 1; prs->input_flags.ipfrag = 1; } @@ -1102,11 +1102,11 @@ static inline uint8_t parse_ipv6(packet_parser_t *prs, const uint8_t **parseptr, static inline void parse_tcp(packet_parser_t *prs, const uint8_t **parseptr, uint32_t *offset) { - const odph_tcphdr_t *tcp = (const odph_tcphdr_t *)*parseptr; + const odp_tcphdr_t *tcp = (const odp_tcphdr_t *)*parseptr; - if (tcp->hl < sizeof(odph_tcphdr_t) / sizeof(uint32_t)) + if (tcp->hl < sizeof(odp_tcphdr_t) / sizeof(uint32_t)) prs->error_flags.tcp_err = 1; - else if ((uint32_t)tcp->hl * 4 > sizeof(odph_tcphdr_t)) + else if ((uint32_t)tcp->hl * 4 > sizeof(odp_tcphdr_t)) prs->input_flags.tcpopt = 1; prs->l4_len = prs->l3_len + @@ -1123,10 +1123,10 @@ static inline void parse_tcp(packet_parser_t *prs, static inline void parse_udp(packet_parser_t *prs, const uint8_t **parseptr, uint32_t *offset) { - const odph_udphdr_t *udp = (const odph_udphdr_t *)*parseptr; + const odp_udphdr_t *udp = (const odp_udphdr_t *)*parseptr; uint32_t udplen = odp_be_to_cpu_16(udp->length); - if (udplen < sizeof(odph_udphdr_t) || + if (udplen < sizeof(odp_udphdr_t) || udplen > (prs->l3_len + prs->l4_offset - prs->l3_offset)) { prs->error_flags.udp_err = 1; @@ -1135,8 +1135,8 @@ static inline void parse_udp(packet_parser_t *prs, prs->l4_len = udplen; if (offset) - *offset += sizeof(odph_udphdr_t); - *parseptr += sizeof(odph_udphdr_t); + *offset += sizeof(odp_udphdr_t); + *parseptr += sizeof(odp_udphdr_t); } /** @@ -1150,7 +1150,7 @@ void packet_parse_l2(packet_parser_t *prs, uint32_t frame_len) prs->input_flags.eth = 1; /* Detect jumbo frames */ - if (frame_len > ODPH_ETH_LEN_MAX) + if (frame_len > ODP_ETH_LEN_MAX) prs->input_flags.jumbo = 1; /* Assume valid L2 header, no CRC/FCS check in SW */ @@ -1168,19 +1168,19 @@ void packet_parse_l2(packet_parser_t *prs, uint32_t frame_len) int packet_parse_common(packet_parser_t *prs, const uint8_t *ptr, uint32_t frame_len, uint32_t seg_len) { - const odph_ethhdr_t *eth; - const odph_vlanhdr_t *vlan; + const odp_ethhdr_t *eth; + const odp_vlanhdr_t *vlan; uint16_t ethtype; uint32_t offset; uint8_t ip_proto = 0; const uint8_t *parseptr; uint16_t macaddr0, macaddr2, macaddr4; - offset = sizeof(odph_ethhdr_t); + offset = sizeof(odp_ethhdr_t); if (packet_parse_l2_not_done(prs)) packet_parse_l2(prs, frame_len); - eth = (const odph_ethhdr_t *)ptr; + eth = (const odp_ethhdr_t *)ptr; /* Handle Ethernet broadcast/multicast addresses */ macaddr0 = odp_be_to_cpu_16(*((const uint16_t *)(const void *)eth)); @@ -1204,7 +1204,7 @@ int packet_parse_common(packet_parser_t *prs, const uint8_t *ptr, parseptr = (const uint8_t *)(eth + 1); /* Check for SNAP vs. DIX */ - if (ethtype < ODPH_ETH_LEN_MAX) { + if (ethtype < ODP_ETH_LEN_MAX) { prs->input_flags.snap = 1; if (ethtype > frame_len - offset) { prs->error_flags.snap_len = 1; @@ -1217,22 +1217,22 @@ int packet_parse_common(packet_parser_t *prs, const uint8_t *ptr, } /* Parse the VLAN header(s), if present */ - if (ethtype == ODPH_ETHTYPE_VLAN_OUTER) { + if (ethtype == ODP_ETHTYPE_VLAN_OUTER) { prs->input_flags.vlan_qinq = 1; prs->input_flags.vlan = 1; - vlan = (const odph_vlanhdr_t *)parseptr; + vlan = (const odp_vlanhdr_t *)parseptr; ethtype = odp_be_to_cpu_16(vlan->type); - offset += sizeof(odph_vlanhdr_t); - parseptr += sizeof(odph_vlanhdr_t); + offset += sizeof(odp_vlanhdr_t); + parseptr += sizeof(odp_vlanhdr_t); } - if (ethtype == ODPH_ETHTYPE_VLAN) { + if (ethtype == ODP_ETHTYPE_VLAN) { prs->input_flags.vlan = 1; - vlan = (const odph_vlanhdr_t *)parseptr; + vlan = (const odp_vlanhdr_t *)parseptr; ethtype = odp_be_to_cpu_16(vlan->type); - offset += sizeof(odph_vlanhdr_t); - parseptr += sizeof(odph_vlanhdr_t); + offset += sizeof(odp_vlanhdr_t); + parseptr += sizeof(odp_vlanhdr_t); } /* Set l3_offset+flag only for known ethtypes */ @@ -1241,18 +1241,18 @@ int packet_parse_common(packet_parser_t *prs, const uint8_t *ptr, /* Parse Layer 3 headers */ switch (ethtype) { - case ODPH_ETHTYPE_IPV4: + case ODP_ETHTYPE_IPV4: prs->input_flags.ipv4 = 1; ip_proto = parse_ipv4(prs, &parseptr, &offset, frame_len); break; - case ODPH_ETHTYPE_IPV6: + case ODP_ETHTYPE_IPV6: prs->input_flags.ipv6 = 1; ip_proto = parse_ipv6(prs, &parseptr, &offset, frame_len, seg_len); break; - case ODPH_ETHTYPE_ARP: + case ODP_ETHTYPE_ARP: prs->input_flags.arp = 1; ip_proto = 255; /* Reserved invalid by IANA */ break; @@ -1269,30 +1269,30 @@ int packet_parse_common(packet_parser_t *prs, const uint8_t *ptr, /* Parse Layer 4 headers */ switch (ip_proto) { - case ODPH_IPPROTO_ICMP: + case ODP_IPPROTO_ICMP: prs->input_flags.icmp = 1; break; - case ODPH_IPPROTO_TCP: - if (odp_unlikely(offset + ODPH_TCPHDR_LEN > seg_len)) + case ODP_IPPROTO_TCP: + if (odp_unlikely(offset + ODP_TCPHDR_LEN > seg_len)) return -1; prs->input_flags.tcp = 1; parse_tcp(prs, &parseptr, NULL); break; - case ODPH_IPPROTO_UDP: - if (odp_unlikely(offset + ODPH_UDPHDR_LEN > seg_len)) + case ODP_IPPROTO_UDP: + if (odp_unlikely(offset + ODP_UDPHDR_LEN > seg_len)) return -1; prs->input_flags.udp = 1; parse_udp(prs, &parseptr, NULL); break; - case ODPH_IPPROTO_AH: + case ODP_IPPROTO_AH: prs->input_flags.ipsec = 1; prs->input_flags.ipsec_ah = 1; break; - case ODPH_IPPROTO_ESP: + case ODP_IPPROTO_ESP: prs->input_flags.ipsec = 1; prs->input_flags.ipsec_esp = 1; break; diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c index 1fa2d27..6918bd0 100644 --- a/platform/linux-generic/odp_traffic_mngr.c +++ b/platform/linux-generic/odp_traffic_mngr.c @@ -17,8 +17,8 @@ #include <unistd.h> #include <pthread.h> #include <odp/api/std_types.h> -#include <odp/helper/eth.h> -#include <odp/helper/ip.h> +#include <protocols/eth.h> +#include <protocols/ip.h> #include <odp_traffic_mngr_internal.h> /* Local vars */ @@ -1897,14 +1897,14 @@ static int tm_enqueue(tm_system_t *tm_system, static void egress_vlan_marking(tm_vlan_marking_t *vlan_marking, odp_packet_t odp_pkt) { - odph_vlanhdr_t vlan_hdr, *vlan_hdr_ptr; - odph_ethhdr_t *ether_hdr_ptr; + odp_vlanhdr_t vlan_hdr, *vlan_hdr_ptr; + odp_ethhdr_t *ether_hdr_ptr; odp_bool_t split_hdr; uint32_t hdr_len; uint16_t old_tci, new_tci; ether_hdr_ptr = odp_packet_l2_ptr(odp_pkt, &hdr_len); - vlan_hdr_ptr = (odph_vlanhdr_t *)(ether_hdr_ptr + 1); + vlan_hdr_ptr = (odp_vlanhdr_t *)(ether_hdr_ptr + 1); /* If the split_hdr variable below is TRUE, then this indicates that * for this odp (output) packet the VLAN header is not all in the same @@ -1913,34 +1913,34 @@ static void egress_vlan_marking(tm_vlan_marking_t *vlan_marking, * handle this case for correctness, but because of the rarity the * code handling this is more optimized for ease of understanding and * correctness rather then performance. */ - split_hdr = hdr_len < (ODPH_ETHHDR_LEN + ODPH_VLANHDR_LEN); + split_hdr = hdr_len < (ODP_ETHHDR_LEN + ODP_VLANHDR_LEN); if (split_hdr) { - odp_packet_copy_to_mem(odp_pkt, ODPH_ETHHDR_LEN, - ODPH_VLANHDR_LEN, &vlan_hdr); + odp_packet_copy_to_mem(odp_pkt, ODP_ETHHDR_LEN, + ODP_VLANHDR_LEN, &vlan_hdr); vlan_hdr_ptr = &vlan_hdr; } old_tci = odp_be_to_cpu_16(vlan_hdr_ptr->tci); new_tci = old_tci; if (vlan_marking->drop_eligible_enabled) - new_tci |= ODPH_VLANHDR_DEI_MASK; + new_tci |= ODP_VLANHDR_DEI_MASK; if (new_tci == old_tci) return; vlan_hdr_ptr->tci = odp_cpu_to_be_16(new_tci); if (split_hdr) - odp_packet_copy_from_mem(odp_pkt, ODPH_ETHHDR_LEN, - ODPH_VLANHDR_LEN, &vlan_hdr); + odp_packet_copy_from_mem(odp_pkt, ODP_ETHHDR_LEN, + ODP_VLANHDR_LEN, &vlan_hdr); } static void egress_ipv4_tos_marking(tm_tos_marking_t *tos_marking, odp_packet_t odp_pkt) { - odph_ipv4hdr_t ipv4_hdr, *ipv4_hdr_ptr; - odp_bool_t split_hdr; - uint32_t hdr_len, l3_offset, old_chksum, ones_compl_sum, tos_diff; - uint8_t old_tos, new_tos, ecn; + odp_ipv4hdr_t ipv4_hdr, *ipv4_hdr_ptr; + odp_bool_t split_hdr; + uint32_t hdr_len, l3_offset, old_chksum, ones_compl_sum, tos_diff; + uint8_t old_tos, new_tos, ecn; l3_offset = odp_packet_l3_offset(odp_pkt); ipv4_hdr_ptr = odp_packet_l3_ptr(odp_pkt, &hdr_len); @@ -1955,7 +1955,7 @@ static void egress_ipv4_tos_marking(tm_tos_marking_t *tos_marking, split_hdr = hdr_len < 12; if (split_hdr) { odp_packet_copy_to_mem(odp_pkt, l3_offset, - ODPH_IPV4HDR_LEN, &ipv4_hdr); + ODP_IPV4HDR_LEN, &ipv4_hdr); ipv4_hdr_ptr = &ipv4_hdr; } @@ -1966,10 +1966,10 @@ static void egress_ipv4_tos_marking(tm_tos_marking_t *tos_marking, tos_marking->shifted_dscp; if (tos_marking->ecn_ce_enabled && odp_packet_has_tcp(odp_pkt)) { - ecn = old_tos & ODPH_IP_TOS_ECN_MASK; - if ((ecn == ODPH_IP_ECN_ECT0) || (ecn == ODPH_IP_ECN_ECT1)) - new_tos = (new_tos & ~ODPH_IP_TOS_ECN_MASK) | - (ODPH_IP_ECN_CE << ODPH_IP_TOS_ECN_SHIFT); + ecn = old_tos & ODP_IP_TOS_ECN_MASK; + if ((ecn == ODP_IP_ECN_ECT0) || (ecn == ODP_IP_ECN_ECT1)) + new_tos = (new_tos & ~ODP_IP_TOS_ECN_MASK) | + (ODP_IP_ECN_CE << ODP_IP_TOS_ECN_SHIFT); } if (new_tos == old_tos) @@ -1997,16 +1997,16 @@ static void egress_ipv4_tos_marking(tm_tos_marking_t *tos_marking, ipv4_hdr_ptr->chksum = odp_cpu_to_be_16((~ones_compl_sum) & 0xFFFF); if (split_hdr) odp_packet_copy_from_mem(odp_pkt, l3_offset, - ODPH_IPV4HDR_LEN, &ipv4_hdr); + ODP_IPV4HDR_LEN, &ipv4_hdr); } static void egress_ipv6_tc_marking(tm_tos_marking_t *tos_marking, odp_packet_t odp_pkt) { - odph_ipv6hdr_t ipv6_hdr, *ipv6_hdr_ptr; - odp_bool_t split_hdr; - uint32_t hdr_len, old_ver_tc_flow, new_ver_tc_flow, l3_offset; - uint8_t old_tc, new_tc, ecn; + odp_ipv6hdr_t ipv6_hdr, *ipv6_hdr_ptr; + odp_bool_t split_hdr; + uint32_t hdr_len, old_ver_tc_flow, new_ver_tc_flow, l3_offset; + uint8_t old_tc, new_tc, ecn; l3_offset = odp_packet_l3_offset(odp_pkt); ipv6_hdr_ptr = odp_packet_l3_ptr(odp_pkt, &hdr_len); @@ -2021,13 +2021,13 @@ static void egress_ipv6_tc_marking(tm_tos_marking_t *tos_marking, split_hdr = hdr_len < 4; if (split_hdr) { odp_packet_copy_to_mem(odp_pkt, l3_offset, - ODPH_IPV6HDR_LEN, &ipv6_hdr); + ODP_IPV6HDR_LEN, &ipv6_hdr); ipv6_hdr_ptr = &ipv6_hdr; } old_ver_tc_flow = odp_be_to_cpu_32(ipv6_hdr_ptr->ver_tc_flow); - old_tc = (old_ver_tc_flow & ODPH_IPV6HDR_TC_MASK) - >> ODPH_IPV6HDR_TC_SHIFT; + old_tc = (old_ver_tc_flow & ODP_IPV6HDR_TC_MASK) + >> ODP_IPV6HDR_TC_SHIFT; new_tc = old_tc; if (tos_marking->drop_prec_enabled) @@ -2035,22 +2035,22 @@ static void egress_ipv6_tc_marking(tm_tos_marking_t *tos_marking, tos_marking->shifted_dscp; if (tos_marking->ecn_ce_enabled && odp_packet_has_tcp(odp_pkt)) { - ecn = old_tc & ODPH_IP_TOS_ECN_MASK; - if ((ecn == ODPH_IP_ECN_ECT0) || (ecn == ODPH_IP_ECN_ECT1)) - new_tc = (new_tc & ~ODPH_IP_TOS_ECN_MASK) | - (ODPH_IP_ECN_CE << ODPH_IP_TOS_ECN_SHIFT); + ecn = old_tc & ODP_IP_TOS_ECN_MASK; + if ((ecn == ODP_IP_ECN_ECT0) || (ecn == ODP_IP_ECN_ECT1)) + new_tc = (new_tc & ~ODP_IP_TOS_ECN_MASK) | + (ODP_IP_ECN_CE << ODP_IP_TOS_ECN_SHIFT); } if (new_tc == old_tc) return; - new_ver_tc_flow = (old_ver_tc_flow & ~ODPH_IPV6HDR_TC_MASK) | - (new_tc << ODPH_IPV6HDR_TC_SHIFT); + new_ver_tc_flow = (old_ver_tc_flow & ~ODP_IPV6HDR_TC_MASK) | + (new_tc << ODP_IPV6HDR_TC_SHIFT); ipv6_hdr_ptr->ver_tc_flow = odp_cpu_to_be_32(new_ver_tc_flow); if (split_hdr) odp_packet_copy_from_mem(odp_pkt, l3_offset, - ODPH_IPV6HDR_LEN, &ipv6_hdr); + ODP_IPV6HDR_LEN, &ipv6_hdr); } static void tm_egress_marking(tm_system_t *tm_system, odp_packet_t odp_pkt) @@ -2866,9 +2866,9 @@ int odp_tm_drop_prec_marking(odp_tm_t odp_tm, if (drop_prec_enabled) { new_dscp = new_dscp & dscp_mask; inverted_mask = (uint8_t)~dscp_mask; - tos_mask = (inverted_mask << ODPH_IP_TOS_DSCP_SHIFT) | - ODPH_IP_TOS_ECN_MASK; - shifted_dscp = new_dscp << ODPH_IP_TOS_DSCP_SHIFT; + tos_mask = (inverted_mask << ODP_IP_TOS_DSCP_SHIFT) | + ODP_IP_TOS_ECN_MASK; + shifted_dscp = new_dscp << ODP_IP_TOS_DSCP_SHIFT; } else { tos_mask = 0xFF; /* Note that this is an inverted mask */ shifted_dscp = 0; diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c index 245ff7b..39faef3 100644 --- a/platform/linux-generic/pktio/dpdk.c +++ b/platform/linux-generic/pktio/dpdk.c @@ -19,7 +19,7 @@ #include <odp_packet_dpdk.h> #include <odp_debug_internal.h> -#include <odp/helper/eth.h> +#include <protocols/eth.h> #include <rte_config.h> #include <rte_mbuf.h> @@ -590,7 +590,7 @@ static int dpdk_open(odp_pktio_t id ODP_UNUSED, ODP_ERR("Failed to read interface MTU\n"); return -1; } - pkt_dpdk->mtu = mtu + ODPH_ETHHDR_LEN; + pkt_dpdk->mtu = mtu + ODP_ETHHDR_LEN; /* Some DPDK PMD virtual devices, like PCAP, do not support promisc * mode change. Use system call for them. */ diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c index dce33e5..26523f1 100644 --- a/platform/linux-generic/pktio/loop.c +++ b/platform/linux-generic/pktio/loop.c @@ -12,8 +12,8 @@ #include <odp_debug_internal.h> #include <odp/api/hints.h> -#include <odp/helper/eth.h> -#include <odp/helper/ip.h> +#include <protocols/eth.h> +#include <protocols/ip.h> #include <errno.h> diff --git a/platform/linux-generic/pktio/netmap.c b/platform/linux-generic/pktio/netmap.c index 847250b..0184df5 100644 --- a/platform/linux-generic/pktio/netmap.c +++ b/platform/linux-generic/pktio/netmap.c @@ -12,7 +12,7 @@ #include <odp_packet_netmap.h> #include <odp_packet_socket.h> #include <odp_debug_internal.h> -#include <odp/helper/eth.h> +#include <protocols/eth.h> #include <sys/ioctl.h> #include <poll.h> @@ -408,7 +408,7 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, pktio_entry_t *pktio_entry, ODP_ERR("Unable to read interface MTU\n"); goto error; } - mtu += ODPH_ETHHDR_LEN; + mtu += ODP_ETHHDR_LEN; pkt_nm->mtu = (mtu < buf_size) ? mtu : buf_size; /* Check if RSS is supported. If not, set 'max_input_queues' to 1. */ @@ -603,7 +603,7 @@ static inline int netmap_pkt_to_odp(pktio_entry_t *pktio_entry, return -1; } - if (odp_unlikely(len < ODPH_ETH_LEN_MIN)) { + if (odp_unlikely(len < ODP_ETH_LEN_MIN)) { ODP_ERR("RX: Frame truncated: %" PRIu16 "\n", len); return -1; } diff --git a/platform/linux-generic/pktio/pcap.c b/platform/linux-generic/pktio/pcap.c index 2fb2a5b..3ed1ff7 100644 --- a/platform/linux-generic/pktio/pcap.c +++ b/platform/linux-generic/pktio/pcap.c @@ -40,7 +40,7 @@ #include <odp_packet_internal.h> #include <odp_packet_io_internal.h> -#include <odp/helper/eth.h> +#include <protocols/eth.h> #include <errno.h> #include <pcap/pcap.h> @@ -349,9 +349,9 @@ static uint32_t pcapif_mtu_get(pktio_entry_t *pktio_entry ODP_UNUSED) static int pcapif_mac_addr_get(pktio_entry_t *pktio_entry ODP_UNUSED, void *mac_addr) { - memcpy(mac_addr, pcap_mac, ODPH_ETHADDR_LEN); + memcpy(mac_addr, pcap_mac, ODP_ETHADDR_LEN); - return ODPH_ETHADDR_LEN; + return ODP_ETHADDR_LEN; } static int pcapif_capability(pktio_entry_t *pktio_entry ODP_UNUSED, diff --git a/platform/linux-generic/pktio/ring.c b/platform/linux-generic/pktio/ring.c index ec27f2c..517e876 100644 --- a/platform/linux-generic/pktio/ring.c +++ b/platform/linux-generic/pktio/ring.c @@ -73,7 +73,6 @@ #include <fcntl.h> #include <stdio.h> #include <string.h> -#include "odph_debug.h" #include <odp_packet_io_ring_internal.h> #include <odp_internal.h> @@ -165,9 +164,9 @@ _ring_create(const char *name, unsigned count, unsigned flags) /* count must be a power of 2 */ if (!RING_VAL_IS_POWER_2(count) || (count > _RING_SZ_MASK)) { - ODPH_ERR("Requested size is invalid, must be power of 2," - "and do not exceed the size limit %u\n", - _RING_SZ_MASK); + ODP_ERR("Requested size is invalid, must be power of 2," + "and do not exceed the size limit %u\n", + _RING_SZ_MASK); __odp_errno = EINVAL; return NULL; } @@ -202,7 +201,7 @@ _ring_create(const char *name, unsigned count, unsigned flags) TAILQ_INSERT_TAIL(&odp_ring_list, r, next); } else { __odp_errno = ENOMEM; - ODPH_ERR("Cannot reserve memory\n"); + ODP_ERR("Cannot reserve memory\n"); } odp_rwlock_write_unlock(&qlock); diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c index 8f86dda..d3b2971 100644 --- a/platform/linux-generic/pktio/socket.c +++ b/platform/linux-generic/pktio/socket.c @@ -43,8 +43,8 @@ #include <odp_classification_internal.h> #include <odp/api/hints.h> -#include <odp/helper/eth.h> -#include <odp/helper/ip.h> +#include <protocols/eth.h> +#include <protocols/ip.h> static int sock_stats_reset(pktio_entry_t *pktio_entry); @@ -84,8 +84,8 @@ int sendmmsg(int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags) /** Eth buffer start offset from u32-aligned address to make sure the following * header (e.g. IP) starts at a 32-bit aligned address. */ -#define ETHBUF_OFFSET (ODP_ALIGN_ROUNDUP(ODPH_ETHHDR_LEN, sizeof(uint32_t)) \ - - ODPH_ETHHDR_LEN) +#define ETHBUF_OFFSET (ODP_ALIGN_ROUNDUP(ODP_ETHHDR_LEN, sizeof(uint32_t)) \ + - ODP_ETHHDR_LEN) /** Round up buffer address to get a properly aliged eth buffer, i.e. aligned * so that the next header always starts at a 32bit aligned address. diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c index 420cd26..d4cb6f8 100644 --- a/platform/linux-generic/pktio/socket_mmap.c +++ b/platform/linux-generic/pktio/socket_mmap.c @@ -32,8 +32,8 @@ #include <odp_classification_internal.h> #include <odp/api/hints.h> -#include <odp/helper/eth.h> -#include <odp/helper/ip.h> +#include <protocols/eth.h> +#include <protocols/ip.h> static int set_pkt_sock_fanout_mmap(pkt_sock_mmap_t *const pkt_sock, int sock_group_idx) @@ -115,26 +115,26 @@ static uint8_t *pkt_mmap_vlan_insert(uint8_t *l2_hdr_ptr, uint16_t vlan_tci, int *pkt_len_ptr) { - odph_ethhdr_t *eth_hdr; - odph_vlanhdr_t *vlan_hdr; - uint8_t *new_l2_ptr; - int orig_pkt_len; + odp_ethhdr_t *eth_hdr; + odp_vlanhdr_t *vlan_hdr; + uint8_t *new_l2_ptr; + int orig_pkt_len; /* First try to see if the mac_offset is large enough to accommodate * shifting the Ethernet header down to open up space for the IEEE * 802.1Q vlan header. */ - if (ODPH_VLANHDR_LEN < mac_offset) { + if (ODP_VLANHDR_LEN < mac_offset) { orig_pkt_len = *pkt_len_ptr; - new_l2_ptr = l2_hdr_ptr - ODPH_VLANHDR_LEN; - memmove(new_l2_ptr, l2_hdr_ptr, ODPH_ETHHDR_LEN); + new_l2_ptr = l2_hdr_ptr - ODP_VLANHDR_LEN; + memmove(new_l2_ptr, l2_hdr_ptr, ODP_ETHHDR_LEN); - eth_hdr = (odph_ethhdr_t *)new_l2_ptr; - vlan_hdr = (odph_vlanhdr_t *)(new_l2_ptr + ODPH_ETHHDR_LEN); + eth_hdr = (odp_ethhdr_t *)new_l2_ptr; + vlan_hdr = (odp_vlanhdr_t *)(new_l2_ptr + ODP_ETHHDR_LEN); vlan_hdr->tci = odp_cpu_to_be_16(vlan_tci); vlan_hdr->type = eth_hdr->type; - eth_hdr->type = odp_cpu_to_be_16(ODPH_ETHTYPE_VLAN); - *pkt_len_ptr = orig_pkt_len + ODPH_VLANHDR_LEN; + eth_hdr->type = odp_cpu_to_be_16(ODP_ETHTYPE_VLAN); + *pkt_len_ptr = orig_pkt_len + ODP_VLANHDR_LEN; return new_l2_ptr; }
Remove all dependencies to helper by copying protocol header definitions into linux-generic, checked and decoupled all odph_* ODPH_* references. Signed-off-by: Yi He <yi.he@linaro.org> --- platform/linux-generic/Makefile.am | 7 +- .../include/odp_classification_inlines.h | 50 +++--- .../include/odp_name_table_internal.h | 2 +- .../linux-generic/include/protocols}/eth.h | 111 ++++++------- .../linux-generic/include/protocols}/ip.h | 180 ++++++--------------- .../linux-generic/include/protocols}/ipsec.h | 32 ++-- .../linux-generic/include/protocols}/tcp.h | 12 +- .../linux-generic/include/protocols}/udp.h | 34 +--- platform/linux-generic/odp_classification.c | 23 +-- platform/linux-generic/odp_packet.c | 106 ++++++------ platform/linux-generic/odp_traffic_mngr.c | 76 ++++----- platform/linux-generic/pktio/dpdk.c | 4 +- platform/linux-generic/pktio/loop.c | 4 +- platform/linux-generic/pktio/netmap.c | 6 +- platform/linux-generic/pktio/pcap.c | 6 +- platform/linux-generic/pktio/ring.c | 9 +- platform/linux-generic/pktio/socket.c | 8 +- platform/linux-generic/pktio/socket_mmap.c | 26 +-- 18 files changed, 295 insertions(+), 401 deletions(-) copy {helper/include/odp/helper => platform/linux-generic/include/protocols}/eth.h (25%) copy {helper/include/odp/helper => platform/linux-generic/include/protocols}/ip.h (37%) copy {helper/include/odp/helper => platform/linux-generic/include/protocols}/ipsec.h (64%) copy {helper/include/odp/helper => platform/linux-generic/include/protocols}/tcp.h (88%) copy {helper/include/odp/helper => platform/linux-generic/include/protocols}/udp.h (47%)