* [dpdk-dev] [PATCH] ip_frag: hide internal structures @ 2021-11-01 12:24 Konstantin Ananyev 2021-11-01 12:49 ` [dpdk-dev] [PATCH v2] " Konstantin Ananyev 0 siblings, 1 reply; 11+ messages in thread From: Konstantin Ananyev @ 2021-11-01 12:24 UTC (permalink / raw) To: dev; +Cc: Konstantin Ananyev Move internal reassembly structures into new private header 'ip_reassembly.h'. Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com> --- lib/ip_frag/ip_frag_common.h | 1 + lib/ip_frag/ip_reassembly.h | 88 ++++++++++++++++++++++++++++++++++++ lib/ip_frag/rte_ip_frag.h | 74 +----------------------------- 3 files changed, 91 insertions(+), 72 deletions(-) create mode 100644 lib/ip_frag/ip_reassembly.h diff --git a/lib/ip_frag/ip_frag_common.h b/lib/ip_frag/ip_frag_common.h index a17a74076c..9c0dbdeb6e 100644 --- a/lib/ip_frag/ip_frag_common.h +++ b/lib/ip_frag/ip_frag_common.h @@ -6,6 +6,7 @@ #define _IP_FRAG_COMMON_H_ #include "rte_ip_frag.h" +#include "ip_reassembly.h" /* logging macros. */ #ifdef RTE_LIBRTE_IP_FRAG_DEBUG diff --git a/lib/ip_frag/ip_reassembly.h b/lib/ip_frag/ip_reassembly.h new file mode 100644 index 0000000000..81e2a0cf3c --- /dev/null +++ b/lib/ip_frag/ip_reassembly.h @@ -0,0 +1,88 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2014 Intel Corporation + */ + +#ifndef _IP_REASSEMBLY_H_ +#define _IP_REASSEMBLY_H_ + +/* + * RTE IP Fragmentation and Reassembly + * Implementation of IP packet fragmentation and reassembly. + */ + +#include <rte_ip_frag.h> + +enum { + IP_LAST_FRAG_IDX, /**< index of last fragment */ + IP_FIRST_FRAG_IDX, /**< index of first fragment */ + IP_MIN_FRAG_NUM, /**< minimum number of fragments */ + IP_MAX_FRAG_NUM = RTE_LIBRTE_IP_FRAG_MAX_FRAG, + /**< maximum number of fragments per packet */ +}; + +/** @internal fragmented mbuf */ +struct ip_frag { + uint16_t ofs; /**< offset into the packet */ + uint16_t len; /**< length of fragment */ + struct rte_mbuf *mb; /**< fragment mbuf */ +}; + +/** @internal + * <src addr, dst_addr, id> to uniquely identify fragmented datagram. + */ +struct ip_frag_key { + uint64_t src_dst[4]; + /**< src and dst address, only first 8 bytes used for IPv4 */ + RTE_STD_C11 + union { + uint64_t id_key_len; /**< combined for easy fetch */ + __extension__ + struct { + uint32_t id; /**< packet id */ + uint32_t key_len; /**< src/dst key length */ + }; + }; +}; + +/** + * @internal Fragmented packet to reassemble. + * First two entries in the frags[] array are for the last and first fragments. + */ +struct ip_frag_pkt { + RTE_TAILQ_ENTRY(ip_frag_pkt) lru; /**< LRU list */ + struct ip_frag_key key; /**< fragmentation key */ + uint64_t start; /**< creation timestamp */ + uint32_t total_size; /**< expected reassembled size */ + uint32_t frag_size; /**< size of fragments received */ + uint32_t last_idx; /**< index of next entry to fill */ + struct ip_frag frags[IP_MAX_FRAG_NUM]; /**< fragments */ +} __rte_cache_aligned; + +RTE_TAILQ_HEAD(ip_pkt_list, ip_frag_pkt); /**< @internal fragments tailq */ + +/** fragmentation table statistics */ +struct ip_frag_tbl_stat { + uint64_t find_num; /**< total # of find/insert attempts. */ + uint64_t add_num; /**< # of add ops. */ + uint64_t del_num; /**< # of del ops. */ + uint64_t reuse_num; /**< # of reuse (del/add) ops. */ + uint64_t fail_total; /**< total # of add failures. */ + uint64_t fail_nospace; /**< # of 'no space' add failures. */ +} __rte_cache_aligned; + +/** fragmentation table */ +struct rte_ip_frag_tbl { + uint64_t max_cycles; /**< ttl for table entries. */ + uint32_t entry_mask; /**< hash value mask. */ + uint32_t max_entries; /**< max entries allowed. */ + uint32_t use_entries; /**< entries in use. */ + uint32_t bucket_entries; /**< hash associativity. */ + uint32_t nb_entries; /**< total size of the table. */ + uint32_t nb_buckets; /**< num of associativity lines. */ + struct ip_frag_pkt *last; /**< last used entry. */ + struct ip_pkt_list lru; /**< LRU list for table entries. */ + struct ip_frag_tbl_stat stat; /**< statistics counters. */ + __extension__ struct ip_frag_pkt pkt[0]; /**< hash table. */ +}; + +#endif /* _RTE_IP_REASSEMBLY_H_ */ diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h index 08555fde6a..b469bb5f4e 100644 --- a/lib/ip_frag/rte_ip_frag.h +++ b/lib/ip_frag/rte_ip_frag.h @@ -27,54 +27,11 @@ extern "C" { struct rte_mbuf; -enum { - IP_LAST_FRAG_IDX, /**< index of last fragment */ - IP_FIRST_FRAG_IDX, /**< index of first fragment */ - IP_MIN_FRAG_NUM, /**< minimum number of fragments */ - IP_MAX_FRAG_NUM = RTE_LIBRTE_IP_FRAG_MAX_FRAG, - /**< maximum number of fragments per packet */ -}; - -/** @internal fragmented mbuf */ -struct ip_frag { - uint16_t ofs; /**< offset into the packet */ - uint16_t len; /**< length of fragment */ - struct rte_mbuf *mb; /**< fragment mbuf */ -}; - -/** @internal <src addr, dst_addr, id> to uniquely identify fragmented datagram. */ -struct ip_frag_key { - uint64_t src_dst[4]; - /**< src and dst address, only first 8 bytes used for IPv4 */ - RTE_STD_C11 - union { - uint64_t id_key_len; /**< combined for easy fetch */ - __extension__ - struct { - uint32_t id; /**< packet id */ - uint32_t key_len; /**< src/dst key length */ - }; - }; -}; - -/** - * @internal Fragmented packet to reassemble. - * First two entries in the frags[] array are for the last and first fragments. - */ -struct ip_frag_pkt { - RTE_TAILQ_ENTRY(ip_frag_pkt) lru; /**< LRU list */ - struct ip_frag_key key; /**< fragmentation key */ - uint64_t start; /**< creation timestamp */ - uint32_t total_size; /**< expected reassembled size */ - uint32_t frag_size; /**< size of fragments received */ - uint32_t last_idx; /**< index of next entry to fill */ - struct ip_frag frags[IP_MAX_FRAG_NUM]; /**< fragments */ -} __rte_cache_aligned; - #define IP_FRAG_DEATH_ROW_LEN 32 /**< death row size (in packets) */ /* death row size in mbufs */ -#define IP_FRAG_DEATH_ROW_MBUF_LEN (IP_FRAG_DEATH_ROW_LEN * (IP_MAX_FRAG_NUM + 1)) +#define IP_FRAG_DEATH_ROW_MBUF_LEN \ + (IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) /** mbuf death row (packets to be freed) */ struct rte_ip_frag_death_row { @@ -83,33 +40,6 @@ struct rte_ip_frag_death_row { /**< mbufs to be freed */ }; -RTE_TAILQ_HEAD(ip_pkt_list, ip_frag_pkt); /**< @internal fragments tailq */ - -/** fragmentation table statistics */ -struct ip_frag_tbl_stat { - uint64_t find_num; /**< total # of find/insert attempts. */ - uint64_t add_num; /**< # of add ops. */ - uint64_t del_num; /**< # of del ops. */ - uint64_t reuse_num; /**< # of reuse (del/add) ops. */ - uint64_t fail_total; /**< total # of add failures. */ - uint64_t fail_nospace; /**< # of 'no space' add failures. */ -} __rte_cache_aligned; - -/** fragmentation table */ -struct rte_ip_frag_tbl { - uint64_t max_cycles; /**< ttl for table entries. */ - uint32_t entry_mask; /**< hash value mask. */ - uint32_t max_entries; /**< max entries allowed. */ - uint32_t use_entries; /**< entries in use. */ - uint32_t bucket_entries; /**< hash associativity. */ - uint32_t nb_entries; /**< total size of the table. */ - uint32_t nb_buckets; /**< num of associativity lines. */ - struct ip_frag_pkt *last; /**< last used entry. */ - struct ip_pkt_list lru; /**< LRU list for table entries. */ - struct ip_frag_tbl_stat stat; /**< statistics counters. */ - __extension__ struct ip_frag_pkt pkt[0]; /**< hash table. */ -}; - /* struct ipv6_extension_fragment moved to librte_net/rte_ip.h and renamed. */ #define ipv6_extension_fragment rte_ipv6_fragment_ext -- 2.25.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [dpdk-dev] [PATCH v2] ip_frag: hide internal structures 2021-11-01 12:24 [dpdk-dev] [PATCH] ip_frag: hide internal structures Konstantin Ananyev @ 2021-11-01 12:49 ` Konstantin Ananyev 2021-11-04 18:30 ` Thomas Monjalon 2021-11-08 11:51 ` [dpdk-dev] [PATCH v3] " Konstantin Ananyev 0 siblings, 2 replies; 11+ messages in thread From: Konstantin Ananyev @ 2021-11-01 12:49 UTC (permalink / raw) To: dev; +Cc: Konstantin Ananyev Move internal reassembly structures into new private header 'ip_reassembly.h'. Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com> --- lib/ip_frag/ip_frag_common.h | 1 + lib/ip_frag/ip_reassembly.h | 88 ++++++++++++++++++++++++++++++++++++ lib/ip_frag/rte_ip_frag.h | 74 +----------------------------- 3 files changed, 91 insertions(+), 72 deletions(-) create mode 100644 lib/ip_frag/ip_reassembly.h diff --git a/lib/ip_frag/ip_frag_common.h b/lib/ip_frag/ip_frag_common.h index a17a74076c..9c0dbdeb6e 100644 --- a/lib/ip_frag/ip_frag_common.h +++ b/lib/ip_frag/ip_frag_common.h @@ -6,6 +6,7 @@ #define _IP_FRAG_COMMON_H_ #include "rte_ip_frag.h" +#include "ip_reassembly.h" /* logging macros. */ #ifdef RTE_LIBRTE_IP_FRAG_DEBUG diff --git a/lib/ip_frag/ip_reassembly.h b/lib/ip_frag/ip_reassembly.h new file mode 100644 index 0000000000..768a904a3f --- /dev/null +++ b/lib/ip_frag/ip_reassembly.h @@ -0,0 +1,88 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2021 Intel Corporation + */ + +#ifndef _IP_REASSEMBLY_H_ +#define _IP_REASSEMBLY_H_ + +/* + * RTE IP Fragmentation and Reassembly + * Implementation of IP packet fragmentation and reassembly. + */ + +#include <rte_ip_frag.h> + +enum { + IP_LAST_FRAG_IDX, /**< index of last fragment */ + IP_FIRST_FRAG_IDX, /**< index of first fragment */ + IP_MIN_FRAG_NUM, /**< minimum number of fragments */ + IP_MAX_FRAG_NUM = RTE_LIBRTE_IP_FRAG_MAX_FRAG, + /**< maximum number of fragments per packet */ +}; + +/** @internal fragmented mbuf */ +struct ip_frag { + uint16_t ofs; /**< offset into the packet */ + uint16_t len; /**< length of fragment */ + struct rte_mbuf *mb; /**< fragment mbuf */ +}; + +/** @internal + * <src addr, dst_addr, id> to uniquely identify fragmented datagram. + */ +struct ip_frag_key { + uint64_t src_dst[4]; + /**< src and dst address, only first 8 bytes used for IPv4 */ + RTE_STD_C11 + union { + uint64_t id_key_len; /**< combined for easy fetch */ + __extension__ + struct { + uint32_t id; /**< packet id */ + uint32_t key_len; /**< src/dst key length */ + }; + }; +}; + +/** + * @internal Fragmented packet to reassemble. + * First two entries in the frags[] array are for the last and first fragments. + */ +struct ip_frag_pkt { + RTE_TAILQ_ENTRY(ip_frag_pkt) lru; /**< LRU list */ + struct ip_frag_key key; /**< fragmentation key */ + uint64_t start; /**< creation timestamp */ + uint32_t total_size; /**< expected reassembled size */ + uint32_t frag_size; /**< size of fragments received */ + uint32_t last_idx; /**< index of next entry to fill */ + struct ip_frag frags[IP_MAX_FRAG_NUM]; /**< fragments */ +} __rte_cache_aligned; + +RTE_TAILQ_HEAD(ip_pkt_list, ip_frag_pkt); /**< @internal fragments tailq */ + +/** fragmentation table statistics */ +struct ip_frag_tbl_stat { + uint64_t find_num; /**< total # of find/insert attempts. */ + uint64_t add_num; /**< # of add ops. */ + uint64_t del_num; /**< # of del ops. */ + uint64_t reuse_num; /**< # of reuse (del/add) ops. */ + uint64_t fail_total; /**< total # of add failures. */ + uint64_t fail_nospace; /**< # of 'no space' add failures. */ +} __rte_cache_aligned; + +/** fragmentation table */ +struct rte_ip_frag_tbl { + uint64_t max_cycles; /**< ttl for table entries. */ + uint32_t entry_mask; /**< hash value mask. */ + uint32_t max_entries; /**< max entries allowed. */ + uint32_t use_entries; /**< entries in use. */ + uint32_t bucket_entries; /**< hash associativity. */ + uint32_t nb_entries; /**< total size of the table. */ + uint32_t nb_buckets; /**< num of associativity lines. */ + struct ip_frag_pkt *last; /**< last used entry. */ + struct ip_pkt_list lru; /**< LRU list for table entries. */ + struct ip_frag_tbl_stat stat; /**< statistics counters. */ + __extension__ struct ip_frag_pkt pkt[0]; /**< hash table. */ +}; + +#endif /* _RTE_IP_REASSEMBLY_H_ */ diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h index 08555fde6a..b469bb5f4e 100644 --- a/lib/ip_frag/rte_ip_frag.h +++ b/lib/ip_frag/rte_ip_frag.h @@ -27,54 +27,11 @@ extern "C" { struct rte_mbuf; -enum { - IP_LAST_FRAG_IDX, /**< index of last fragment */ - IP_FIRST_FRAG_IDX, /**< index of first fragment */ - IP_MIN_FRAG_NUM, /**< minimum number of fragments */ - IP_MAX_FRAG_NUM = RTE_LIBRTE_IP_FRAG_MAX_FRAG, - /**< maximum number of fragments per packet */ -}; - -/** @internal fragmented mbuf */ -struct ip_frag { - uint16_t ofs; /**< offset into the packet */ - uint16_t len; /**< length of fragment */ - struct rte_mbuf *mb; /**< fragment mbuf */ -}; - -/** @internal <src addr, dst_addr, id> to uniquely identify fragmented datagram. */ -struct ip_frag_key { - uint64_t src_dst[4]; - /**< src and dst address, only first 8 bytes used for IPv4 */ - RTE_STD_C11 - union { - uint64_t id_key_len; /**< combined for easy fetch */ - __extension__ - struct { - uint32_t id; /**< packet id */ - uint32_t key_len; /**< src/dst key length */ - }; - }; -}; - -/** - * @internal Fragmented packet to reassemble. - * First two entries in the frags[] array are for the last and first fragments. - */ -struct ip_frag_pkt { - RTE_TAILQ_ENTRY(ip_frag_pkt) lru; /**< LRU list */ - struct ip_frag_key key; /**< fragmentation key */ - uint64_t start; /**< creation timestamp */ - uint32_t total_size; /**< expected reassembled size */ - uint32_t frag_size; /**< size of fragments received */ - uint32_t last_idx; /**< index of next entry to fill */ - struct ip_frag frags[IP_MAX_FRAG_NUM]; /**< fragments */ -} __rte_cache_aligned; - #define IP_FRAG_DEATH_ROW_LEN 32 /**< death row size (in packets) */ /* death row size in mbufs */ -#define IP_FRAG_DEATH_ROW_MBUF_LEN (IP_FRAG_DEATH_ROW_LEN * (IP_MAX_FRAG_NUM + 1)) +#define IP_FRAG_DEATH_ROW_MBUF_LEN \ + (IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) /** mbuf death row (packets to be freed) */ struct rte_ip_frag_death_row { @@ -83,33 +40,6 @@ struct rte_ip_frag_death_row { /**< mbufs to be freed */ }; -RTE_TAILQ_HEAD(ip_pkt_list, ip_frag_pkt); /**< @internal fragments tailq */ - -/** fragmentation table statistics */ -struct ip_frag_tbl_stat { - uint64_t find_num; /**< total # of find/insert attempts. */ - uint64_t add_num; /**< # of add ops. */ - uint64_t del_num; /**< # of del ops. */ - uint64_t reuse_num; /**< # of reuse (del/add) ops. */ - uint64_t fail_total; /**< total # of add failures. */ - uint64_t fail_nospace; /**< # of 'no space' add failures. */ -} __rte_cache_aligned; - -/** fragmentation table */ -struct rte_ip_frag_tbl { - uint64_t max_cycles; /**< ttl for table entries. */ - uint32_t entry_mask; /**< hash value mask. */ - uint32_t max_entries; /**< max entries allowed. */ - uint32_t use_entries; /**< entries in use. */ - uint32_t bucket_entries; /**< hash associativity. */ - uint32_t nb_entries; /**< total size of the table. */ - uint32_t nb_buckets; /**< num of associativity lines. */ - struct ip_frag_pkt *last; /**< last used entry. */ - struct ip_pkt_list lru; /**< LRU list for table entries. */ - struct ip_frag_tbl_stat stat; /**< statistics counters. */ - __extension__ struct ip_frag_pkt pkt[0]; /**< hash table. */ -}; - /* struct ipv6_extension_fragment moved to librte_net/rte_ip.h and renamed. */ #define ipv6_extension_fragment rte_ipv6_fragment_ext -- 2.25.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v2] ip_frag: hide internal structures 2021-11-01 12:49 ` [dpdk-dev] [PATCH v2] " Konstantin Ananyev @ 2021-11-04 18:30 ` Thomas Monjalon 2021-11-08 11:51 ` [dpdk-dev] [PATCH v3] " Konstantin Ananyev 1 sibling, 0 replies; 11+ messages in thread From: Thomas Monjalon @ 2021-11-04 18:30 UTC (permalink / raw) To: Konstantin Ananyev; +Cc: dev 01/11/2021 13:49, Konstantin Ananyev: > +/* > + * RTE IP Fragmentation and Reassembly RTE is not an entity, just a prefix. Please use "DPDK" instead, or just drop "RTE". > + * Implementation of IP packet fragmentation and reassembly. > + */ > + > +#include <rte_ip_frag.h> > + > +enum { > + IP_LAST_FRAG_IDX, /**< index of last fragment */ > + IP_FIRST_FRAG_IDX, /**< index of first fragment */ > + IP_MIN_FRAG_NUM, /**< minimum number of fragments */ > + IP_MAX_FRAG_NUM = RTE_LIBRTE_IP_FRAG_MAX_FRAG, > + /**< maximum number of fragments per packet */ > +}; > + > +/** @internal fragmented mbuf */ Why having doxygen in this file? > +struct ip_frag { > + uint16_t ofs; /**< offset into the packet */ > + uint16_t len; /**< length of fragment */ > + struct rte_mbuf *mb; /**< fragment mbuf */ > +}; [...] > -#define IP_FRAG_DEATH_ROW_MBUF_LEN (IP_FRAG_DEATH_ROW_LEN * (IP_MAX_FRAG_NUM + 1)) > +#define IP_FRAG_DEATH_ROW_MBUF_LEN \ > + (IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) Namespace is wrong here. It should be fixed in another patch. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [dpdk-dev] [PATCH v3] ip_frag: hide internal structures 2021-11-01 12:49 ` [dpdk-dev] [PATCH v2] " Konstantin Ananyev 2021-11-04 18:30 ` Thomas Monjalon @ 2021-11-08 11:51 ` Konstantin Ananyev 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 0/2] ip_frag cleanup patches Konstantin Ananyev 1 sibling, 1 reply; 11+ messages in thread From: Konstantin Ananyev @ 2021-11-08 11:51 UTC (permalink / raw) To: dev; +Cc: Konstantin Ananyev Move internal reassembly structures into new private header 'ip_reassembly.h'. Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com> --- lib/ip_frag/ip_frag_common.h | 1 + lib/ip_frag/ip_reassembly.h | 89 ++++++++++++++++++++++++++++++++++++ lib/ip_frag/rte_ip_frag.h | 74 +----------------------------- 3 files changed, 92 insertions(+), 72 deletions(-) create mode 100644 lib/ip_frag/ip_reassembly.h diff --git a/lib/ip_frag/ip_frag_common.h b/lib/ip_frag/ip_frag_common.h index a17a74076c..9c0dbdeb6e 100644 --- a/lib/ip_frag/ip_frag_common.h +++ b/lib/ip_frag/ip_frag_common.h @@ -6,6 +6,7 @@ #define _IP_FRAG_COMMON_H_ #include "rte_ip_frag.h" +#include "ip_reassembly.h" /* logging macros. */ #ifdef RTE_LIBRTE_IP_FRAG_DEBUG diff --git a/lib/ip_frag/ip_reassembly.h b/lib/ip_frag/ip_reassembly.h new file mode 100644 index 0000000000..cf38c782f6 --- /dev/null +++ b/lib/ip_frag/ip_reassembly.h @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2021 Intel Corporation + */ + +#ifndef _IP_REASSEMBLY_H_ +#define _IP_REASSEMBLY_H_ + +/* + * IP Fragmentation and Reassembly + * Implementation of IP packet fragmentation and reassembly. + */ + +#include <rte_ip_frag.h> + +enum { + IP_LAST_FRAG_IDX, /* index of last fragment */ + IP_FIRST_FRAG_IDX, /* index of first fragment */ + IP_MIN_FRAG_NUM, /* minimum number of fragments */ + IP_MAX_FRAG_NUM = RTE_LIBRTE_IP_FRAG_MAX_FRAG, + /* maximum number of fragments per packet */ +}; + +/* fragmented mbuf */ +struct ip_frag { + uint16_t ofs; /* offset into the packet */ + uint16_t len; /* length of fragment */ + struct rte_mbuf *mb; /* fragment mbuf */ +}; + +/* + * key: <src addr, dst_addr, id> to uniquely identify fragmented datagram. + */ +struct ip_frag_key { + uint64_t src_dst[4]; + /* src and dst address, only first 8 bytes used for IPv4 */ + RTE_STD_C11 + union { + uint64_t id_key_len; /* combined for easy fetch */ + __extension__ + struct { + uint32_t id; /* packet id */ + uint32_t key_len; /* src/dst key length */ + }; + }; +}; + +/* + * Fragmented packet to reassemble. + * First two entries in the frags[] array are for the last and first fragments. + */ +struct ip_frag_pkt { + RTE_TAILQ_ENTRY(ip_frag_pkt) lru; /* LRU list */ + struct ip_frag_key key; /* fragmentation key */ + uint64_t start; /* creation timestamp */ + uint32_t total_size; /* expected reassembled size */ + uint32_t frag_size; /* size of fragments received */ + uint32_t last_idx; /* index of next entry to fill */ + struct ip_frag frags[IP_MAX_FRAG_NUM]; /* fragments */ +} __rte_cache_aligned; + + /* fragments tailq */ +RTE_TAILQ_HEAD(ip_pkt_list, ip_frag_pkt); + +/* fragmentation table statistics */ +struct ip_frag_tbl_stat { + uint64_t find_num; /* total # of find/insert attempts. */ + uint64_t add_num; /* # of add ops. */ + uint64_t del_num; /* # of del ops. */ + uint64_t reuse_num; /* # of reuse (del/add) ops. */ + uint64_t fail_total; /* total # of add failures. */ + uint64_t fail_nospace; /* # of 'no space' add failures. */ +} __rte_cache_aligned; + +/* fragmentation table */ +struct rte_ip_frag_tbl { + uint64_t max_cycles; /* ttl for table entries. */ + uint32_t entry_mask; /* hash value mask. */ + uint32_t max_entries; /* max entries allowed. */ + uint32_t use_entries; /* entries in use. */ + uint32_t bucket_entries; /* hash associativity. */ + uint32_t nb_entries; /* total size of the table. */ + uint32_t nb_buckets; /* num of associativity lines. */ + struct ip_frag_pkt *last; /* last used entry. */ + struct ip_pkt_list lru; /* LRU list for table entries. */ + struct ip_frag_tbl_stat stat; /* statistics counters. */ + __extension__ struct ip_frag_pkt pkt[0]; /* hash table. */ +}; + +#endif /* _RTE_IP_REASSEMBLY_H_ */ diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h index 08555fde6a..b469bb5f4e 100644 --- a/lib/ip_frag/rte_ip_frag.h +++ b/lib/ip_frag/rte_ip_frag.h @@ -27,54 +27,11 @@ extern "C" { struct rte_mbuf; -enum { - IP_LAST_FRAG_IDX, /**< index of last fragment */ - IP_FIRST_FRAG_IDX, /**< index of first fragment */ - IP_MIN_FRAG_NUM, /**< minimum number of fragments */ - IP_MAX_FRAG_NUM = RTE_LIBRTE_IP_FRAG_MAX_FRAG, - /**< maximum number of fragments per packet */ -}; - -/** @internal fragmented mbuf */ -struct ip_frag { - uint16_t ofs; /**< offset into the packet */ - uint16_t len; /**< length of fragment */ - struct rte_mbuf *mb; /**< fragment mbuf */ -}; - -/** @internal <src addr, dst_addr, id> to uniquely identify fragmented datagram. */ -struct ip_frag_key { - uint64_t src_dst[4]; - /**< src and dst address, only first 8 bytes used for IPv4 */ - RTE_STD_C11 - union { - uint64_t id_key_len; /**< combined for easy fetch */ - __extension__ - struct { - uint32_t id; /**< packet id */ - uint32_t key_len; /**< src/dst key length */ - }; - }; -}; - -/** - * @internal Fragmented packet to reassemble. - * First two entries in the frags[] array are for the last and first fragments. - */ -struct ip_frag_pkt { - RTE_TAILQ_ENTRY(ip_frag_pkt) lru; /**< LRU list */ - struct ip_frag_key key; /**< fragmentation key */ - uint64_t start; /**< creation timestamp */ - uint32_t total_size; /**< expected reassembled size */ - uint32_t frag_size; /**< size of fragments received */ - uint32_t last_idx; /**< index of next entry to fill */ - struct ip_frag frags[IP_MAX_FRAG_NUM]; /**< fragments */ -} __rte_cache_aligned; - #define IP_FRAG_DEATH_ROW_LEN 32 /**< death row size (in packets) */ /* death row size in mbufs */ -#define IP_FRAG_DEATH_ROW_MBUF_LEN (IP_FRAG_DEATH_ROW_LEN * (IP_MAX_FRAG_NUM + 1)) +#define IP_FRAG_DEATH_ROW_MBUF_LEN \ + (IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) /** mbuf death row (packets to be freed) */ struct rte_ip_frag_death_row { @@ -83,33 +40,6 @@ struct rte_ip_frag_death_row { /**< mbufs to be freed */ }; -RTE_TAILQ_HEAD(ip_pkt_list, ip_frag_pkt); /**< @internal fragments tailq */ - -/** fragmentation table statistics */ -struct ip_frag_tbl_stat { - uint64_t find_num; /**< total # of find/insert attempts. */ - uint64_t add_num; /**< # of add ops. */ - uint64_t del_num; /**< # of del ops. */ - uint64_t reuse_num; /**< # of reuse (del/add) ops. */ - uint64_t fail_total; /**< total # of add failures. */ - uint64_t fail_nospace; /**< # of 'no space' add failures. */ -} __rte_cache_aligned; - -/** fragmentation table */ -struct rte_ip_frag_tbl { - uint64_t max_cycles; /**< ttl for table entries. */ - uint32_t entry_mask; /**< hash value mask. */ - uint32_t max_entries; /**< max entries allowed. */ - uint32_t use_entries; /**< entries in use. */ - uint32_t bucket_entries; /**< hash associativity. */ - uint32_t nb_entries; /**< total size of the table. */ - uint32_t nb_buckets; /**< num of associativity lines. */ - struct ip_frag_pkt *last; /**< last used entry. */ - struct ip_pkt_list lru; /**< LRU list for table entries. */ - struct ip_frag_tbl_stat stat; /**< statistics counters. */ - __extension__ struct ip_frag_pkt pkt[0]; /**< hash table. */ -}; - /* struct ipv6_extension_fragment moved to librte_net/rte_ip.h and renamed. */ #define ipv6_extension_fragment rte_ipv6_fragment_ext -- 2.25.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [dpdk-dev] [PATCH v4 0/2] ip_frag cleanup patches 2021-11-08 11:51 ` [dpdk-dev] [PATCH v3] " Konstantin Ananyev @ 2021-11-08 13:55 ` Konstantin Ananyev 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 1/2] ip_frag: hide internal structures Konstantin Ananyev 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 2/2] ip_frag: add namespace Konstantin Ananyev 0 siblings, 2 replies; 11+ messages in thread From: Konstantin Ananyev @ 2021-11-08 13:55 UTC (permalink / raw) To: dev; +Cc: Konstantin Ananyev Konstantin Ananyev (2): ip_frag: hide internal structures ip_frag: add namespace doc/guides/rel_notes/release_21_11.rst | 3 + examples/ip_reassembly/main.c | 2 +- examples/ipsec-secgw/ipsec-secgw.c | 2 +- lib/ip_frag/ip_frag_common.h | 1 + lib/ip_frag/ip_reassembly.h | 89 ++++++++++++++++++++++++++ lib/ip_frag/rte_ip_frag.h | 87 ++----------------------- lib/ip_frag/rte_ip_frag_common.c | 3 +- lib/ip_frag/rte_ipv6_fragmentation.c | 12 ++-- lib/ip_frag/rte_ipv6_reassembly.c | 6 +- lib/port/rte_port_ras.c | 2 +- 10 files changed, 114 insertions(+), 93 deletions(-) create mode 100644 lib/ip_frag/ip_reassembly.h -- 2.25.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [dpdk-dev] [PATCH v4 1/2] ip_frag: hide internal structures 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 0/2] ip_frag cleanup patches Konstantin Ananyev @ 2021-11-08 13:55 ` Konstantin Ananyev 2021-11-08 21:39 ` Thomas Monjalon 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 2/2] ip_frag: add namespace Konstantin Ananyev 1 sibling, 1 reply; 11+ messages in thread From: Konstantin Ananyev @ 2021-11-08 13:55 UTC (permalink / raw) To: dev; +Cc: Konstantin Ananyev Move internal reassembly structures into new private header 'ip_reassembly.h'. Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com> --- lib/ip_frag/ip_frag_common.h | 1 + lib/ip_frag/ip_reassembly.h | 89 ++++++++++++++++++++++++++++++++++++ lib/ip_frag/rte_ip_frag.h | 74 +----------------------------- 3 files changed, 92 insertions(+), 72 deletions(-) create mode 100644 lib/ip_frag/ip_reassembly.h diff --git a/lib/ip_frag/ip_frag_common.h b/lib/ip_frag/ip_frag_common.h index a17a74076c..9c0dbdeb6e 100644 --- a/lib/ip_frag/ip_frag_common.h +++ b/lib/ip_frag/ip_frag_common.h @@ -6,6 +6,7 @@ #define _IP_FRAG_COMMON_H_ #include "rte_ip_frag.h" +#include "ip_reassembly.h" /* logging macros. */ #ifdef RTE_LIBRTE_IP_FRAG_DEBUG diff --git a/lib/ip_frag/ip_reassembly.h b/lib/ip_frag/ip_reassembly.h new file mode 100644 index 0000000000..cf38c782f6 --- /dev/null +++ b/lib/ip_frag/ip_reassembly.h @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2021 Intel Corporation + */ + +#ifndef _IP_REASSEMBLY_H_ +#define _IP_REASSEMBLY_H_ + +/* + * IP Fragmentation and Reassembly + * Implementation of IP packet fragmentation and reassembly. + */ + +#include <rte_ip_frag.h> + +enum { + IP_LAST_FRAG_IDX, /* index of last fragment */ + IP_FIRST_FRAG_IDX, /* index of first fragment */ + IP_MIN_FRAG_NUM, /* minimum number of fragments */ + IP_MAX_FRAG_NUM = RTE_LIBRTE_IP_FRAG_MAX_FRAG, + /* maximum number of fragments per packet */ +}; + +/* fragmented mbuf */ +struct ip_frag { + uint16_t ofs; /* offset into the packet */ + uint16_t len; /* length of fragment */ + struct rte_mbuf *mb; /* fragment mbuf */ +}; + +/* + * key: <src addr, dst_addr, id> to uniquely identify fragmented datagram. + */ +struct ip_frag_key { + uint64_t src_dst[4]; + /* src and dst address, only first 8 bytes used for IPv4 */ + RTE_STD_C11 + union { + uint64_t id_key_len; /* combined for easy fetch */ + __extension__ + struct { + uint32_t id; /* packet id */ + uint32_t key_len; /* src/dst key length */ + }; + }; +}; + +/* + * Fragmented packet to reassemble. + * First two entries in the frags[] array are for the last and first fragments. + */ +struct ip_frag_pkt { + RTE_TAILQ_ENTRY(ip_frag_pkt) lru; /* LRU list */ + struct ip_frag_key key; /* fragmentation key */ + uint64_t start; /* creation timestamp */ + uint32_t total_size; /* expected reassembled size */ + uint32_t frag_size; /* size of fragments received */ + uint32_t last_idx; /* index of next entry to fill */ + struct ip_frag frags[IP_MAX_FRAG_NUM]; /* fragments */ +} __rte_cache_aligned; + + /* fragments tailq */ +RTE_TAILQ_HEAD(ip_pkt_list, ip_frag_pkt); + +/* fragmentation table statistics */ +struct ip_frag_tbl_stat { + uint64_t find_num; /* total # of find/insert attempts. */ + uint64_t add_num; /* # of add ops. */ + uint64_t del_num; /* # of del ops. */ + uint64_t reuse_num; /* # of reuse (del/add) ops. */ + uint64_t fail_total; /* total # of add failures. */ + uint64_t fail_nospace; /* # of 'no space' add failures. */ +} __rte_cache_aligned; + +/* fragmentation table */ +struct rte_ip_frag_tbl { + uint64_t max_cycles; /* ttl for table entries. */ + uint32_t entry_mask; /* hash value mask. */ + uint32_t max_entries; /* max entries allowed. */ + uint32_t use_entries; /* entries in use. */ + uint32_t bucket_entries; /* hash associativity. */ + uint32_t nb_entries; /* total size of the table. */ + uint32_t nb_buckets; /* num of associativity lines. */ + struct ip_frag_pkt *last; /* last used entry. */ + struct ip_pkt_list lru; /* LRU list for table entries. */ + struct ip_frag_tbl_stat stat; /* statistics counters. */ + __extension__ struct ip_frag_pkt pkt[0]; /* hash table. */ +}; + +#endif /* _RTE_IP_REASSEMBLY_H_ */ diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h index 08555fde6a..b469bb5f4e 100644 --- a/lib/ip_frag/rte_ip_frag.h +++ b/lib/ip_frag/rte_ip_frag.h @@ -27,54 +27,11 @@ extern "C" { struct rte_mbuf; -enum { - IP_LAST_FRAG_IDX, /**< index of last fragment */ - IP_FIRST_FRAG_IDX, /**< index of first fragment */ - IP_MIN_FRAG_NUM, /**< minimum number of fragments */ - IP_MAX_FRAG_NUM = RTE_LIBRTE_IP_FRAG_MAX_FRAG, - /**< maximum number of fragments per packet */ -}; - -/** @internal fragmented mbuf */ -struct ip_frag { - uint16_t ofs; /**< offset into the packet */ - uint16_t len; /**< length of fragment */ - struct rte_mbuf *mb; /**< fragment mbuf */ -}; - -/** @internal <src addr, dst_addr, id> to uniquely identify fragmented datagram. */ -struct ip_frag_key { - uint64_t src_dst[4]; - /**< src and dst address, only first 8 bytes used for IPv4 */ - RTE_STD_C11 - union { - uint64_t id_key_len; /**< combined for easy fetch */ - __extension__ - struct { - uint32_t id; /**< packet id */ - uint32_t key_len; /**< src/dst key length */ - }; - }; -}; - -/** - * @internal Fragmented packet to reassemble. - * First two entries in the frags[] array are for the last and first fragments. - */ -struct ip_frag_pkt { - RTE_TAILQ_ENTRY(ip_frag_pkt) lru; /**< LRU list */ - struct ip_frag_key key; /**< fragmentation key */ - uint64_t start; /**< creation timestamp */ - uint32_t total_size; /**< expected reassembled size */ - uint32_t frag_size; /**< size of fragments received */ - uint32_t last_idx; /**< index of next entry to fill */ - struct ip_frag frags[IP_MAX_FRAG_NUM]; /**< fragments */ -} __rte_cache_aligned; - #define IP_FRAG_DEATH_ROW_LEN 32 /**< death row size (in packets) */ /* death row size in mbufs */ -#define IP_FRAG_DEATH_ROW_MBUF_LEN (IP_FRAG_DEATH_ROW_LEN * (IP_MAX_FRAG_NUM + 1)) +#define IP_FRAG_DEATH_ROW_MBUF_LEN \ + (IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) /** mbuf death row (packets to be freed) */ struct rte_ip_frag_death_row { @@ -83,33 +40,6 @@ struct rte_ip_frag_death_row { /**< mbufs to be freed */ }; -RTE_TAILQ_HEAD(ip_pkt_list, ip_frag_pkt); /**< @internal fragments tailq */ - -/** fragmentation table statistics */ -struct ip_frag_tbl_stat { - uint64_t find_num; /**< total # of find/insert attempts. */ - uint64_t add_num; /**< # of add ops. */ - uint64_t del_num; /**< # of del ops. */ - uint64_t reuse_num; /**< # of reuse (del/add) ops. */ - uint64_t fail_total; /**< total # of add failures. */ - uint64_t fail_nospace; /**< # of 'no space' add failures. */ -} __rte_cache_aligned; - -/** fragmentation table */ -struct rte_ip_frag_tbl { - uint64_t max_cycles; /**< ttl for table entries. */ - uint32_t entry_mask; /**< hash value mask. */ - uint32_t max_entries; /**< max entries allowed. */ - uint32_t use_entries; /**< entries in use. */ - uint32_t bucket_entries; /**< hash associativity. */ - uint32_t nb_entries; /**< total size of the table. */ - uint32_t nb_buckets; /**< num of associativity lines. */ - struct ip_frag_pkt *last; /**< last used entry. */ - struct ip_pkt_list lru; /**< LRU list for table entries. */ - struct ip_frag_tbl_stat stat; /**< statistics counters. */ - __extension__ struct ip_frag_pkt pkt[0]; /**< hash table. */ -}; - /* struct ipv6_extension_fragment moved to librte_net/rte_ip.h and renamed. */ #define ipv6_extension_fragment rte_ipv6_fragment_ext -- 2.25.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v4 1/2] ip_frag: hide internal structures 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 1/2] ip_frag: hide internal structures Konstantin Ananyev @ 2021-11-08 21:39 ` Thomas Monjalon 0 siblings, 0 replies; 11+ messages in thread From: Thomas Monjalon @ 2021-11-08 21:39 UTC (permalink / raw) To: Konstantin Ananyev; +Cc: dev 08/11/2021 14:55, Konstantin Ananyev: > Move internal reassembly structures into new private > header 'ip_reassembly.h'. > > Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com> [...] > --- /dev/null > +++ b/lib/ip_frag/ip_reassembly.h > +#ifndef _IP_REASSEMBLY_H_ > +#define _IP_REASSEMBLY_H_ [...] > + > +#endif /* _RTE_IP_REASSEMBLY_H_ */ I removed RTE_ here. Applied this single patch, thanks. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [dpdk-dev] [PATCH v4 2/2] ip_frag: add namespace 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 0/2] ip_frag cleanup patches Konstantin Ananyev 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 1/2] ip_frag: hide internal structures Konstantin Ananyev @ 2021-11-08 13:55 ` Konstantin Ananyev 2021-11-08 21:36 ` Thomas Monjalon 2021-11-09 12:32 ` [dpdk-dev] [PATCH v5] " Konstantin Ananyev 1 sibling, 2 replies; 11+ messages in thread From: Konstantin Ananyev @ 2021-11-08 13:55 UTC (permalink / raw) To: dev; +Cc: Konstantin Ananyev Update public macros to have RTE_IP_FRAG_ prefix. Remove obsolete macro. Update DPDK components to use new names. Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com> --- doc/guides/rel_notes/release_21_11.rst | 3 +++ examples/ip_reassembly/main.c | 2 +- examples/ipsec-secgw/ipsec-secgw.c | 2 +- lib/ip_frag/rte_ip_frag.h | 17 +++++++---------- lib/ip_frag/rte_ip_frag_common.c | 3 ++- lib/ip_frag/rte_ipv6_fragmentation.c | 12 ++++++------ lib/ip_frag/rte_ipv6_reassembly.c | 6 +++--- lib/port/rte_port_ras.c | 2 +- 8 files changed, 24 insertions(+), 23 deletions(-) diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index 8da19c613a..ce47250fbd 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -559,6 +559,9 @@ API Changes * fib: Added the ``rib_ext_sz`` field to ``rte_fib_conf`` and ``rte_fib6_conf`` so that user can specify the size of the RIB extension inside the FIB. +* ip_frag: All macros updated to have ``RTE_IP_FRAG_`` prefix. Obsolete + macros are removed. DPDK components updated to use new names. + ABI Changes ----------- diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c index 547b47276e..fb3cac3bd0 100644 --- a/examples/ip_reassembly/main.c +++ b/examples/ip_reassembly/main.c @@ -371,7 +371,7 @@ reassemble(struct rte_mbuf *m, uint16_t portid, uint32_t queue, eth_hdr->ether_type = rte_be_to_cpu_16(RTE_ETHER_TYPE_IPV4); } else if (RTE_ETH_IS_IPV6_HDR(m->packet_type)) { /* if packet is IPv6 */ - struct ipv6_extension_fragment *frag_hdr; + struct rte_ipv6_fragment_ext *frag_hdr; struct rte_ipv6_hdr *ip_hdr; ip_hdr = (struct rte_ipv6_hdr *)(eth_hdr + 1); diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c index 0a1c5bcaaa..86bb7e9064 100644 --- a/examples/ipsec-secgw/ipsec-secgw.c +++ b/examples/ipsec-secgw/ipsec-secgw.c @@ -2647,7 +2647,7 @@ rx_callback(__rte_unused uint16_t port, __rte_unused uint16_t queue, rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6)) { struct rte_ipv6_hdr *iph; - struct ipv6_extension_fragment *fh; + struct rte_ipv6_fragment_ext *fh; iph = (struct rte_ipv6_hdr *)(eth + 1); fh = rte_ipv6_frag_get_ipv6_fragment_header(iph); diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h index b469bb5f4e..0782ba45d6 100644 --- a/lib/ip_frag/rte_ip_frag.h +++ b/lib/ip_frag/rte_ip_frag.h @@ -27,22 +27,19 @@ extern "C" { struct rte_mbuf; -#define IP_FRAG_DEATH_ROW_LEN 32 /**< death row size (in packets) */ +#define RTE_IP_FRAG_DEATH_ROW_LEN 32 /**< death row size (in packets) */ /* death row size in mbufs */ -#define IP_FRAG_DEATH_ROW_MBUF_LEN \ - (IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) +#define RTE_IP_FRAG_DEATH_ROW_MBUF_LEN \ + (RTE_IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) /** mbuf death row (packets to be freed) */ struct rte_ip_frag_death_row { uint32_t cnt; /**< number of mbufs currently on death row */ - struct rte_mbuf *row[IP_FRAG_DEATH_ROW_MBUF_LEN]; + struct rte_mbuf *row[RTE_IP_FRAG_DEATH_ROW_MBUF_LEN]; /**< mbufs to be freed */ }; -/* struct ipv6_extension_fragment moved to librte_net/rte_ip.h and renamed. */ -#define ipv6_extension_fragment rte_ipv6_fragment_ext - /** * Create a new IP fragmentation table. * @@ -128,7 +125,7 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in, struct rte_mbuf *rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl, struct rte_ip_frag_death_row *dr, struct rte_mbuf *mb, uint64_t tms, struct rte_ipv6_hdr *ip_hdr, - struct ipv6_extension_fragment *frag_hdr); + struct rte_ipv6_fragment_ext *frag_hdr); /** * Return a pointer to the packet's fragment header, if found. @@ -141,11 +138,11 @@ struct rte_mbuf *rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl, * Pointer to the IPv6 fragment extension header, or NULL if it's not * present. */ -static inline struct ipv6_extension_fragment * +static inline struct rte_ipv6_fragment_ext * rte_ipv6_frag_get_ipv6_fragment_header(struct rte_ipv6_hdr *hdr) { if (hdr->proto == IPPROTO_FRAGMENT) { - return (struct ipv6_extension_fragment *) ++hdr; + return (struct rte_ipv6_fragment_ext *) ++hdr; } else return NULL; diff --git a/lib/ip_frag/rte_ip_frag_common.c b/lib/ip_frag/rte_ip_frag_common.c index 6b29e9d7ed..8580ffca5e 100644 --- a/lib/ip_frag/rte_ip_frag_common.c +++ b/lib/ip_frag/rte_ip_frag_common.c @@ -135,7 +135,8 @@ rte_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl, TAILQ_FOREACH(fp, &tbl->lru, lru) if (max_cycles + fp->start < tms) { /* check that death row has enough space */ - if (IP_FRAG_DEATH_ROW_MBUF_LEN - dr->cnt >= fp->last_idx) + if (RTE_IP_FRAG_DEATH_ROW_MBUF_LEN - dr->cnt >= + fp->last_idx) ip_frag_tbl_del(tbl, dr, fp); else return; diff --git a/lib/ip_frag/rte_ipv6_fragmentation.c b/lib/ip_frag/rte_ipv6_fragmentation.c index 5d67336f2d..88f29c158c 100644 --- a/lib/ip_frag/rte_ipv6_fragmentation.c +++ b/lib/ip_frag/rte_ipv6_fragmentation.c @@ -22,13 +22,13 @@ __fill_ipv6hdr_frag(struct rte_ipv6_hdr *dst, const struct rte_ipv6_hdr *src, uint16_t len, uint16_t fofs, uint32_t mf) { - struct ipv6_extension_fragment *fh; + struct rte_ipv6_fragment_ext *fh; rte_memcpy(dst, src, sizeof(*dst)); dst->payload_len = rte_cpu_to_be_16(len); dst->proto = IPPROTO_FRAGMENT; - fh = (struct ipv6_extension_fragment *) ++dst; + fh = (struct rte_ipv6_fragment_ext *) ++dst; fh->next_header = src->proto; fh->reserved = 0; fh->frag_data = rte_cpu_to_be_16(RTE_IPV6_SET_FRAG_DATA(fofs, mf)); @@ -94,7 +94,7 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in, */ frag_size = mtu_size - sizeof(struct rte_ipv6_hdr) - - sizeof(struct ipv6_extension_fragment); + sizeof(struct rte_ipv6_fragment_ext); frag_size = RTE_ALIGN_FLOOR(frag_size, RTE_IPV6_EHDR_FO_ALIGN); /* Check that pkts_out is big enough to hold all fragments */ @@ -124,9 +124,9 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in, /* Reserve space for the IP header that will be built later */ out_pkt->data_len = sizeof(struct rte_ipv6_hdr) + - sizeof(struct ipv6_extension_fragment); + sizeof(struct rte_ipv6_fragment_ext); out_pkt->pkt_len = sizeof(struct rte_ipv6_hdr) + - sizeof(struct ipv6_extension_fragment); + sizeof(struct rte_ipv6_fragment_ext); frag_bytes_remaining = frag_size; out_seg_prev = out_pkt; @@ -184,7 +184,7 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in, fragment_offset = (uint16_t)(fragment_offset + out_pkt->pkt_len - sizeof(struct rte_ipv6_hdr) - - sizeof(struct ipv6_extension_fragment)); + - sizeof(struct rte_ipv6_fragment_ext)); /* Write the fragment to the output list */ pkts_out[out_pkt_pos] = out_pkt; diff --git a/lib/ip_frag/rte_ipv6_reassembly.c b/lib/ip_frag/rte_ipv6_reassembly.c index 6bc0bf792a..d4019e87e6 100644 --- a/lib/ip_frag/rte_ipv6_reassembly.c +++ b/lib/ip_frag/rte_ipv6_reassembly.c @@ -33,7 +33,7 @@ struct rte_mbuf * ipv6_frag_reassemble(struct ip_frag_pkt *fp) { struct rte_ipv6_hdr *ip_hdr; - struct ipv6_extension_fragment *frag_hdr; + struct rte_ipv6_fragment_ext *frag_hdr; struct rte_mbuf *m, *prev; uint32_t i, n, ofs, first_len; uint32_t last_len, move_len, payload_len; @@ -102,7 +102,7 @@ ipv6_frag_reassemble(struct ip_frag_pkt *fp) * the main IPv6 header instead. */ move_len = m->l2_len + m->l3_len - sizeof(*frag_hdr); - frag_hdr = (struct ipv6_extension_fragment *) (ip_hdr + 1); + frag_hdr = (struct rte_ipv6_fragment_ext *) (ip_hdr + 1); ip_hdr->proto = frag_hdr->next_header; ip_frag_memmove(rte_pktmbuf_mtod_offset(m, char *, sizeof(*frag_hdr)), @@ -136,7 +136,7 @@ ipv6_frag_reassemble(struct ip_frag_pkt *fp) struct rte_mbuf * rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl, struct rte_ip_frag_death_row *dr, struct rte_mbuf *mb, uint64_t tms, - struct rte_ipv6_hdr *ip_hdr, struct ipv6_extension_fragment *frag_hdr) + struct rte_ipv6_hdr *ip_hdr, struct rte_ipv6_fragment_ext *frag_hdr) { struct ip_frag_pkt *fp; struct ip_frag_key key; diff --git a/lib/port/rte_port_ras.c b/lib/port/rte_port_ras.c index 403028f8d6..8508814bb2 100644 --- a/lib/port/rte_port_ras.c +++ b/lib/port/rte_port_ras.c @@ -186,7 +186,7 @@ process_ipv6(struct rte_port_ring_writer_ras *p, struct rte_mbuf *pkt) struct rte_ipv6_hdr *pkt_hdr = rte_pktmbuf_mtod(pkt, struct rte_ipv6_hdr *); - struct ipv6_extension_fragment *frag_hdr; + struct rte_ipv6_fragment_ext *frag_hdr; uint16_t frag_data = 0; frag_hdr = rte_ipv6_frag_get_ipv6_fragment_header(pkt_hdr); if (frag_hdr != NULL) -- 2.25.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v4 2/2] ip_frag: add namespace 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 2/2] ip_frag: add namespace Konstantin Ananyev @ 2021-11-08 21:36 ` Thomas Monjalon 2021-11-09 12:32 ` [dpdk-dev] [PATCH v5] " Konstantin Ananyev 1 sibling, 0 replies; 11+ messages in thread From: Thomas Monjalon @ 2021-11-08 21:36 UTC (permalink / raw) To: Konstantin Ananyev; +Cc: dev, ferruh.yigit, mdr 08/11/2021 14:55, Konstantin Ananyev: > Update public macros to have RTE_IP_FRAG_ prefix. > Remove obsolete macro. > Update DPDK components to use new names. I think you should keep old names for compatibility during some time. We should rename the function rte_frag_table_del_expired_entries to start with rte_ip_frag_ like others. > --- a/lib/ip_frag/rte_ip_frag.h > +++ b/lib/ip_frag/rte_ip_frag.h > @@ -27,22 +27,19 @@ extern "C" { > > struct rte_mbuf; > > -#define IP_FRAG_DEATH_ROW_LEN 32 /**< death row size (in packets) */ > +#define RTE_IP_FRAG_DEATH_ROW_LEN 32 /**< death row size (in packets) */ > > /* death row size in mbufs */ > -#define IP_FRAG_DEATH_ROW_MBUF_LEN \ > - (IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) > +#define RTE_IP_FRAG_DEATH_ROW_MBUF_LEN \ > + (RTE_IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) > > /** mbuf death row (packets to be freed) */ > struct rte_ip_frag_death_row { > uint32_t cnt; /**< number of mbufs currently on death row */ > - struct rte_mbuf *row[IP_FRAG_DEATH_ROW_MBUF_LEN]; > + struct rte_mbuf *row[RTE_IP_FRAG_DEATH_ROW_MBUF_LEN]; > /**< mbufs to be freed */ > }; > > -/* struct ipv6_extension_fragment moved to librte_net/rte_ip.h and renamed. */ > -#define ipv6_extension_fragment rte_ipv6_fragment_ext > - > /** > * Create a new IP fragmentation table. > * > @@ -128,7 +125,7 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in, > struct rte_mbuf *rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl, > struct rte_ip_frag_death_row *dr, > struct rte_mbuf *mb, uint64_t tms, struct rte_ipv6_hdr *ip_hdr, > - struct ipv6_extension_fragment *frag_hdr); > + struct rte_ipv6_fragment_ext *frag_hdr); > > /** > * Return a pointer to the packet's fragment header, if found. > @@ -141,11 +138,11 @@ struct rte_mbuf *rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl, > * Pointer to the IPv6 fragment extension header, or NULL if it's not > * present. > */ > -static inline struct ipv6_extension_fragment * > +static inline struct rte_ipv6_fragment_ext * > rte_ipv6_frag_get_ipv6_fragment_header(struct rte_ipv6_hdr *hdr) > { > if (hdr->proto == IPPROTO_FRAGMENT) { > - return (struct ipv6_extension_fragment *) ++hdr; > + return (struct rte_ipv6_fragment_ext *) ++hdr; > } > else > return NULL; ^ permalink raw reply [flat|nested] 11+ messages in thread
* [dpdk-dev] [PATCH v5] ip_frag: add namespace 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 2/2] ip_frag: add namespace Konstantin Ananyev 2021-11-08 21:36 ` Thomas Monjalon @ 2021-11-09 12:32 ` Konstantin Ananyev 2021-11-17 9:25 ` Thomas Monjalon 1 sibling, 1 reply; 11+ messages in thread From: Konstantin Ananyev @ 2021-11-09 12:32 UTC (permalink / raw) To: dev; +Cc: Konstantin Ananyev Update public macros to have RTE_IP_FRAG_ prefix. Update DPDK components to use new names. Keep obsolete macro for compatibility reasons. Renamed experimental function ``rte_frag_table_del_expired_entries``to ``rte_ip_frag_table_del_expired_entries`` to comply with other public API naming convention. Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com> --- doc/guides/rel_notes/release_21_11.rst | 6 ++++++ examples/ip_reassembly/main.c | 2 +- examples/ipsec-secgw/ipsec-secgw.c | 2 +- lib/ip_frag/rte_ip_frag.h | 29 ++++++++++++++++---------- lib/ip_frag/rte_ip_frag_common.c | 5 +++-- lib/ip_frag/rte_ipv6_fragmentation.c | 12 +++++------ lib/ip_frag/rte_ipv6_reassembly.c | 6 +++--- lib/ip_frag/version.map | 2 +- lib/port/rte_port_ras.c | 2 +- 9 files changed, 40 insertions(+), 26 deletions(-) diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index 01923e2deb..226dbb5bf0 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -565,6 +565,12 @@ API Changes * fib: Added the ``rib_ext_sz`` field to ``rte_fib_conf`` and ``rte_fib6_conf`` so that user can specify the size of the RIB extension inside the FIB. +* ip_frag: All macros updated to have ``RTE_IP_FRAG_`` prefix. Obsolete + macros are kept for compatibility. DPDK components updated to use new names. + Experimental function ``rte_frag_table_del_expired_entries`` was renamed to + ``rte_ip_frag_table_del_expired_entries`` to comply with other public + API naming convention. + ABI Changes ----------- diff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c index 547b47276e..fb3cac3bd0 100644 --- a/examples/ip_reassembly/main.c +++ b/examples/ip_reassembly/main.c @@ -371,7 +371,7 @@ reassemble(struct rte_mbuf *m, uint16_t portid, uint32_t queue, eth_hdr->ether_type = rte_be_to_cpu_16(RTE_ETHER_TYPE_IPV4); } else if (RTE_ETH_IS_IPV6_HDR(m->packet_type)) { /* if packet is IPv6 */ - struct ipv6_extension_fragment *frag_hdr; + struct rte_ipv6_fragment_ext *frag_hdr; struct rte_ipv6_hdr *ip_hdr; ip_hdr = (struct rte_ipv6_hdr *)(eth_hdr + 1); diff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c index 0a1c5bcaaa..86bb7e9064 100644 --- a/examples/ipsec-secgw/ipsec-secgw.c +++ b/examples/ipsec-secgw/ipsec-secgw.c @@ -2647,7 +2647,7 @@ rx_callback(__rte_unused uint16_t port, __rte_unused uint16_t queue, rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6)) { struct rte_ipv6_hdr *iph; - struct ipv6_extension_fragment *fh; + struct rte_ipv6_fragment_ext *fh; iph = (struct rte_ipv6_hdr *)(eth + 1); fh = rte_ipv6_frag_get_ipv6_fragment_header(iph); diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h index b469bb5f4e..9493021428 100644 --- a/lib/ip_frag/rte_ip_frag.h +++ b/lib/ip_frag/rte_ip_frag.h @@ -27,22 +27,19 @@ extern "C" { struct rte_mbuf; -#define IP_FRAG_DEATH_ROW_LEN 32 /**< death row size (in packets) */ +#define RTE_IP_FRAG_DEATH_ROW_LEN 32 /**< death row size (in packets) */ /* death row size in mbufs */ -#define IP_FRAG_DEATH_ROW_MBUF_LEN \ - (IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) +#define RTE_IP_FRAG_DEATH_ROW_MBUF_LEN \ + (RTE_IP_FRAG_DEATH_ROW_LEN * (RTE_LIBRTE_IP_FRAG_MAX_FRAG + 1)) /** mbuf death row (packets to be freed) */ struct rte_ip_frag_death_row { uint32_t cnt; /**< number of mbufs currently on death row */ - struct rte_mbuf *row[IP_FRAG_DEATH_ROW_MBUF_LEN]; + struct rte_mbuf *row[RTE_IP_FRAG_DEATH_ROW_MBUF_LEN]; /**< mbufs to be freed */ }; -/* struct ipv6_extension_fragment moved to librte_net/rte_ip.h and renamed. */ -#define ipv6_extension_fragment rte_ipv6_fragment_ext - /** * Create a new IP fragmentation table. * @@ -128,7 +125,7 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in, struct rte_mbuf *rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl, struct rte_ip_frag_death_row *dr, struct rte_mbuf *mb, uint64_t tms, struct rte_ipv6_hdr *ip_hdr, - struct ipv6_extension_fragment *frag_hdr); + struct rte_ipv6_fragment_ext *frag_hdr); /** * Return a pointer to the packet's fragment header, if found. @@ -141,11 +138,11 @@ struct rte_mbuf *rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl, * Pointer to the IPv6 fragment extension header, or NULL if it's not * present. */ -static inline struct ipv6_extension_fragment * +static inline struct rte_ipv6_fragment_ext * rte_ipv6_frag_get_ipv6_fragment_header(struct rte_ipv6_hdr *hdr) { if (hdr->proto == IPPROTO_FRAGMENT) { - return (struct ipv6_extension_fragment *) ++hdr; + return (struct rte_ipv6_fragment_ext *) ++hdr; } else return NULL; @@ -258,9 +255,19 @@ rte_ip_frag_table_statistics_dump(FILE * f, const struct rte_ip_frag_tbl *tbl); */ __rte_experimental void -rte_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl, +rte_ip_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl, struct rte_ip_frag_death_row *dr, uint64_t tms); +/**@{*/ +/** + * Obsolete macros, kept here for compatibility reasons. + * Will be deprecated/removed in future DPDK releases. + */ +#define IP_FRAG_DEATH_ROW_LEN RTE_IP_FRAG_DEATH_ROW_LEN +#define IP_FRAG_DEATH_ROW_MBUF_LEN RTE_IP_FRAG_DEATH_ROW_MBUF_LEN +#define ipv6_extension_fragment rte_ipv6_fragment_ext +/**@}*/ + #ifdef __cplusplus } #endif diff --git a/lib/ip_frag/rte_ip_frag_common.c b/lib/ip_frag/rte_ip_frag_common.c index 6b29e9d7ed..2c781a6d33 100644 --- a/lib/ip_frag/rte_ip_frag_common.c +++ b/lib/ip_frag/rte_ip_frag_common.c @@ -124,7 +124,7 @@ rte_ip_frag_table_statistics_dump(FILE *f, const struct rte_ip_frag_tbl *tbl) /* Delete expired fragments */ void -rte_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl, +rte_ip_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl, struct rte_ip_frag_death_row *dr, uint64_t tms) { uint64_t max_cycles; @@ -135,7 +135,8 @@ rte_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl, TAILQ_FOREACH(fp, &tbl->lru, lru) if (max_cycles + fp->start < tms) { /* check that death row has enough space */ - if (IP_FRAG_DEATH_ROW_MBUF_LEN - dr->cnt >= fp->last_idx) + if (RTE_IP_FRAG_DEATH_ROW_MBUF_LEN - dr->cnt >= + fp->last_idx) ip_frag_tbl_del(tbl, dr, fp); else return; diff --git a/lib/ip_frag/rte_ipv6_fragmentation.c b/lib/ip_frag/rte_ipv6_fragmentation.c index 5d67336f2d..88f29c158c 100644 --- a/lib/ip_frag/rte_ipv6_fragmentation.c +++ b/lib/ip_frag/rte_ipv6_fragmentation.c @@ -22,13 +22,13 @@ __fill_ipv6hdr_frag(struct rte_ipv6_hdr *dst, const struct rte_ipv6_hdr *src, uint16_t len, uint16_t fofs, uint32_t mf) { - struct ipv6_extension_fragment *fh; + struct rte_ipv6_fragment_ext *fh; rte_memcpy(dst, src, sizeof(*dst)); dst->payload_len = rte_cpu_to_be_16(len); dst->proto = IPPROTO_FRAGMENT; - fh = (struct ipv6_extension_fragment *) ++dst; + fh = (struct rte_ipv6_fragment_ext *) ++dst; fh->next_header = src->proto; fh->reserved = 0; fh->frag_data = rte_cpu_to_be_16(RTE_IPV6_SET_FRAG_DATA(fofs, mf)); @@ -94,7 +94,7 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in, */ frag_size = mtu_size - sizeof(struct rte_ipv6_hdr) - - sizeof(struct ipv6_extension_fragment); + sizeof(struct rte_ipv6_fragment_ext); frag_size = RTE_ALIGN_FLOOR(frag_size, RTE_IPV6_EHDR_FO_ALIGN); /* Check that pkts_out is big enough to hold all fragments */ @@ -124,9 +124,9 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in, /* Reserve space for the IP header that will be built later */ out_pkt->data_len = sizeof(struct rte_ipv6_hdr) + - sizeof(struct ipv6_extension_fragment); + sizeof(struct rte_ipv6_fragment_ext); out_pkt->pkt_len = sizeof(struct rte_ipv6_hdr) + - sizeof(struct ipv6_extension_fragment); + sizeof(struct rte_ipv6_fragment_ext); frag_bytes_remaining = frag_size; out_seg_prev = out_pkt; @@ -184,7 +184,7 @@ rte_ipv6_fragment_packet(struct rte_mbuf *pkt_in, fragment_offset = (uint16_t)(fragment_offset + out_pkt->pkt_len - sizeof(struct rte_ipv6_hdr) - - sizeof(struct ipv6_extension_fragment)); + - sizeof(struct rte_ipv6_fragment_ext)); /* Write the fragment to the output list */ pkts_out[out_pkt_pos] = out_pkt; diff --git a/lib/ip_frag/rte_ipv6_reassembly.c b/lib/ip_frag/rte_ipv6_reassembly.c index 6bc0bf792a..d4019e87e6 100644 --- a/lib/ip_frag/rte_ipv6_reassembly.c +++ b/lib/ip_frag/rte_ipv6_reassembly.c @@ -33,7 +33,7 @@ struct rte_mbuf * ipv6_frag_reassemble(struct ip_frag_pkt *fp) { struct rte_ipv6_hdr *ip_hdr; - struct ipv6_extension_fragment *frag_hdr; + struct rte_ipv6_fragment_ext *frag_hdr; struct rte_mbuf *m, *prev; uint32_t i, n, ofs, first_len; uint32_t last_len, move_len, payload_len; @@ -102,7 +102,7 @@ ipv6_frag_reassemble(struct ip_frag_pkt *fp) * the main IPv6 header instead. */ move_len = m->l2_len + m->l3_len - sizeof(*frag_hdr); - frag_hdr = (struct ipv6_extension_fragment *) (ip_hdr + 1); + frag_hdr = (struct rte_ipv6_fragment_ext *) (ip_hdr + 1); ip_hdr->proto = frag_hdr->next_header; ip_frag_memmove(rte_pktmbuf_mtod_offset(m, char *, sizeof(*frag_hdr)), @@ -136,7 +136,7 @@ ipv6_frag_reassemble(struct ip_frag_pkt *fp) struct rte_mbuf * rte_ipv6_frag_reassemble_packet(struct rte_ip_frag_tbl *tbl, struct rte_ip_frag_death_row *dr, struct rte_mbuf *mb, uint64_t tms, - struct rte_ipv6_hdr *ip_hdr, struct ipv6_extension_fragment *frag_hdr) + struct rte_ipv6_hdr *ip_hdr, struct rte_ipv6_fragment_ext *frag_hdr) { struct ip_frag_pkt *fp; struct ip_frag_key key; diff --git a/lib/ip_frag/version.map b/lib/ip_frag/version.map index 33f231fb31..e537224293 100644 --- a/lib/ip_frag/version.map +++ b/lib/ip_frag/version.map @@ -16,5 +16,5 @@ DPDK_22 { EXPERIMENTAL { global: - rte_frag_table_del_expired_entries; + rte_ip_frag_table_del_expired_entries; }; diff --git a/lib/port/rte_port_ras.c b/lib/port/rte_port_ras.c index 403028f8d6..8508814bb2 100644 --- a/lib/port/rte_port_ras.c +++ b/lib/port/rte_port_ras.c @@ -186,7 +186,7 @@ process_ipv6(struct rte_port_ring_writer_ras *p, struct rte_mbuf *pkt) struct rte_ipv6_hdr *pkt_hdr = rte_pktmbuf_mtod(pkt, struct rte_ipv6_hdr *); - struct ipv6_extension_fragment *frag_hdr; + struct rte_ipv6_fragment_ext *frag_hdr; uint16_t frag_data = 0; frag_hdr = rte_ipv6_frag_get_ipv6_fragment_header(pkt_hdr); if (frag_hdr != NULL) -- 2.25.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v5] ip_frag: add namespace 2021-11-09 12:32 ` [dpdk-dev] [PATCH v5] " Konstantin Ananyev @ 2021-11-17 9:25 ` Thomas Monjalon 0 siblings, 0 replies; 11+ messages in thread From: Thomas Monjalon @ 2021-11-17 9:25 UTC (permalink / raw) To: Konstantin Ananyev; +Cc: dev, bruce.richardson 09/11/2021 13:32, Konstantin Ananyev: > Update public macros to have RTE_IP_FRAG_ prefix. > Update DPDK components to use new names. > Keep obsolete macro for compatibility reasons. > Renamed experimental function ``rte_frag_table_del_expired_entries``to > ``rte_ip_frag_table_del_expired_entries`` to comply with other public > API naming convention. > > Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Applied, thanks. I've fixed few doxygen formatting. Note: we still have some config macros with a different namespace: config/rte_config.h:#define RTE_LIBRTE_IP_FRAG_MAX_FRAG 8 config/rte_config.h:#undef RTE_LIBRTE_IP_FRAG_TBL_STAT ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2021-11-17 9:25 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-11-01 12:24 [dpdk-dev] [PATCH] ip_frag: hide internal structures Konstantin Ananyev 2021-11-01 12:49 ` [dpdk-dev] [PATCH v2] " Konstantin Ananyev 2021-11-04 18:30 ` Thomas Monjalon 2021-11-08 11:51 ` [dpdk-dev] [PATCH v3] " Konstantin Ananyev 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 0/2] ip_frag cleanup patches Konstantin Ananyev 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 1/2] ip_frag: hide internal structures Konstantin Ananyev 2021-11-08 21:39 ` Thomas Monjalon 2021-11-08 13:55 ` [dpdk-dev] [PATCH v4 2/2] ip_frag: add namespace Konstantin Ananyev 2021-11-08 21:36 ` Thomas Monjalon 2021-11-09 12:32 ` [dpdk-dev] [PATCH v5] " Konstantin Ananyev 2021-11-17 9:25 ` Thomas Monjalon
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).