diff options
| author | 陆秋文 <[email protected]> | 2023-02-03 03:20:37 +0000 |
|---|---|---|
| committer | 陆秋文 <[email protected]> | 2023-02-03 03:20:37 +0000 |
| commit | 8c9965b2e803f453e498b1e8d9a655c7a55f86f4 (patch) | |
| tree | ab2f0dfdda6d437284f63c4ec605f12057c704ae /include | |
| parent | e188bc30f37e132d6d285a76fa12e0a643263221 (diff) | |
TSG-13437 增加读写ROUTE-CTX和SIDLIST的接口、示例程序并修正vxlan头部校验和错误的问题。
Diffstat (limited to 'include')
| -rw-r--r-- | include/external/marsio.h | 22 | ||||
| -rw-r--r-- | include/internal/mrb_define.h | 35 | ||||
| -rw-r--r-- | include/internal/protect.h | 2 |
3 files changed, 44 insertions, 15 deletions
diff --git a/include/external/marsio.h b/include/external/marsio.h index 8ecd844..f61c5a3 100644 --- a/include/external/marsio.h +++ b/include/external/marsio.h @@ -99,10 +99,16 @@ enum mr_timestamp_type enum mr_buff_metadata_type { - /* 分流哈希值,会根据该值计算分流队列 */ + /* Rehash Index */ MR_BUFF_REHASH_INDEX = 0, - /* 网卡剥离的VLAN标签 */ + /* VLAN TCI */ MR_BUFF_METADATA_VLAN_TCI = 1, + /* dispatch ctx */ + MR_BUFF_ROUTE_CTX = 2, + /* session id */ + MR_BUFF_SESSION_ID = 3, + /* dir, internal->external or external->internal */ + MR_BUFF_DIR = 4 }; #ifdef __cplusplus @@ -244,7 +250,6 @@ void marsio_buff_free(struct mr_instance * instance, marsio_buff_t * marsio_buff int socket_id, int thread_id); int marsio_buff_is_ctrlbuf(marsio_buff_t * m); - void marsio_buff_set_ctrlbuf(marsio_buff_t * m); marsio_buff_t * marsio_buff_malloc_smartoffload(struct mr_vdev * vdev, const char * pkt, unsigned int pkt_len); @@ -260,8 +265,15 @@ int marsio_buff_get_metadata(marsio_buff_t * m, enum mr_buff_metadata_type type, int marsio_buff_set_metadata(marsio_buff_t * m, enum mr_buff_metadata_type type, void * data, unsigned int sz_data); int marsio_buff_unset_metadata(marsio_buff_t * m, enum mr_buff_metadata_type type); -void * marsio_shared_mem_alloc(struct mr_instance * instance, size_t len); -void marsio_shared_mem_free(struct mr_instance * instance, void * mem); +/* sid */ +typedef uint16_t sid_t; +#define MR_SID_LIST_MAXLEN 8 + +int marsio_buff_get_sid_list(marsio_buff_t * m, sid_t * out_slist, uint8_t sz_out_slist); +int marsio_buff_set_sid_list(marsio_buff_t * m, sid_t * slist, uint8_t sz_slist); +int marsio_buff_append_sid_list(marsio_buff_t * m, sid_t * slist, uint8_t sz_slist); +int marsio_buff_prepend_sid_list(marsio_buff_t * m, sid_t * slist, uint8_t sz_slist); +int marsio_buff_get_current_sid(marsio_buff_t *m, sid_t * sid); #ifdef __cplusplus } diff --git a/include/internal/mrb_define.h b/include/internal/mrb_define.h index 6d49776..69890c4 100644 --- a/include/internal/mrb_define.h +++ b/include/internal/mrb_define.h @@ -1,6 +1,7 @@ #pragma once #include <stdint.h> #include <common.h> +#include <ldbc.h> #ifndef MRB_MAX_CTRLZONE_NUM #define MRB_MAX_CTRLZONE_NUM 16 @@ -12,21 +13,37 @@ struct mrb_zone_idx uint8_t size; }; -/* Private Zone for DEBUG */ -struct mrb_zone_ts +/* mbuf common metadata */ +struct mrb_metadata { - struct timespec ts_srv_rx_or_alloc; - struct timespec ts_app_rx_or_alloc; -}; + /* status */ + uint8_t dir : 1; + uint8_t packet_create_from_nf : 1; + + /* for sid forwarder */ + uint8_t start_sid; + uint8_t nr_sid; + uint16_t cur_sid; + uint16_t sids[8]; + + /* ingress, egress */ + uint16_t port_ingress; + uint16_t port_egress; + + /* for EF service */ + uint16_t link_db_index; + + /* pkt_parser result */ + struct pkt_parser_result pkt_parser_result; +} __rte_cache_aligned; + +#define MR_NODE_CTRLZONE_ID 1 struct mrb_priv_zone { - struct rte_mbuf * next; - struct mrb_zone_ts ts; - uint8_t cz_num; struct mrb_zone_idx idx[MRB_MAX_CTRLZONE_NUM]; -}__rte_packed; +}; struct mrb_zone_info { diff --git a/include/internal/protect.h b/include/internal/protect.h index ec23b4c..6dff4e7 100644 --- a/include/internal/protect.h +++ b/include/internal/protect.h @@ -42,7 +42,7 @@ if(g_in_protect_mode) \ static inline void PROTECT_rte_mempool_unpoison(struct rte_mempool *pool)
{
MR_ASAN_UNPOISON_MEMORY_REGION(pool, sizeof(struct rte_mempool));
- MR_ASAN_UNPOISON_MEMORY_REGION(pool, MEMPOOL_HEADER_SIZE(pool, pool->cache_size));
+ MR_ASAN_UNPOISON_MEMORY_REGION(pool, RTE_MEMPOOL_HEADER_SIZE(pool, pool->cache_size));
}
static inline void PROTECT_rte_mbuf_unpoison_meta(struct rte_mbuf *mbuf)
|
