summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
author陆秋文 <[email protected]>2023-02-03 03:20:37 +0000
committer陆秋文 <[email protected]>2023-02-03 03:20:37 +0000
commit8c9965b2e803f453e498b1e8d9a655c7a55f86f4 (patch)
treeab2f0dfdda6d437284f63c4ec605f12057c704ae /include
parente188bc30f37e132d6d285a76fa12e0a643263221 (diff)
TSG-13437 增加读写ROUTE-CTX和SIDLIST的接口、示例程序并修正vxlan头部校验和错误的问题。
Diffstat (limited to 'include')
-rw-r--r--include/external/marsio.h22
-rw-r--r--include/internal/mrb_define.h35
-rw-r--r--include/internal/protect.h2
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)