summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsongyanchao <[email protected]>2024-01-04 09:50:41 +0000
committersongyanchao <[email protected]>2024-01-05 02:28:26 +0000
commita741b3aef7b737a6651bd8223e02bbb75ae20102 (patch)
tree40a68ef5272218a9b3ea946c6146ae2d2f81479d
parentc356a0486ef1beba97bc2954e1f4a0bdafc74941 (diff)
🎈 perf(TSG-17959): Rename the VLAN couple to vlan_ingress and vlan_egress.
Rename the VLAN couple to vlan_ingress and vlan_egress.
-rw-r--r--service/src/node_tera.c46
-rw-r--r--test/classifier_test.py3
-rw-r--r--test/tera_test.py54
3 files changed, 66 insertions, 37 deletions
diff --git a/service/src/node_tera.c b/service/src/node_tera.c
index 4be558b..aac841a 100644
--- a/service/src/node_tera.c
+++ b/service/src/node_tera.c
@@ -30,7 +30,8 @@ struct tera_adapter
{
uint8_t mac_flipping;
uint16_t tera_id;
- uint16_t vlan_couple[2];
+ uint16_t vlan_ingress;
+ uint16_t vlan_egress;
struct mr_dev_desc * listen_device;
};
@@ -109,13 +110,20 @@ int tera_config_parse(struct sc_main * sc, struct node_tera_main * tera_main)
{
snprintf(str_conf_section, sizeof(str_conf_section), "tera_adapter:%d", index);
- /* Get vlan couple */
- uint32_t vlan_couple[2];
- ret = MESA_load_profile_uint_range(sc->local_cfgfile, str_conf_section, "vlan_couple", RTE_DIM(vlan_couple),
- vlan_couple);
+ /* Get vlan conf */
+ uint32_t vlan_ingress;
+ ret = MESA_load_profile_uint_nodef(sc->local_cfgfile, str_conf_section, "vlan_ingress", &vlan_ingress);
if (ret < 0)
continue;
+ uint32_t vlan_egress;
+ ret = MESA_load_profile_uint_nodef(sc->local_cfgfile, str_conf_section, "vlan_egress", &vlan_egress);
+ if (ret < 0)
+ {
+ MR_ERROR("The : %s ,No config the 'vlan_egress'.", str_conf_section);
+ return RT_ERR;
+ }
+
/* Get mac flipping */
uint32_t mac_flipping;
MESA_load_profile_uint_def(sc->local_cfgfile, str_conf_section, "mac_flipping", &mac_flipping, 0);
@@ -141,8 +149,8 @@ int tera_config_parse(struct sc_main * sc, struct node_tera_main * tera_main)
/* Save the adapter */
struct tera_adapter * adapter = &tera_main->adapters[nr_adapters];
- adapter->vlan_couple[0] = htons((uint16_t)vlan_couple[0]);
- adapter->vlan_couple[1] = htons((uint16_t)vlan_couple[1]);
+ adapter->vlan_ingress = htons((uint16_t)vlan_ingress);
+ adapter->vlan_egress = htons((uint16_t)vlan_egress);
adapter->mac_flipping = (uint8_t)mac_flipping;
adapter->listen_device = dev_desc;
adapter->tera_id = nr_adapters;
@@ -180,10 +188,9 @@ void tera_info_dump(struct node_tera_main * tera_main)
for (int index = 0; index < tera_main->nr_adapters; index++)
{
struct tera_adapter * adapter = &tera_main->adapters[index];
- MR_INFO(
- "Tera adapter, config id: %u, listen device: %s, vlan_couple: [internal: %u,external: %u], mac_flipping:%u",
- index, adapter->listen_device->symbol, ntohs(adapter->vlan_couple[0]), ntohs(adapter->vlan_couple[1]),
- adapter->mac_flipping);
+ MR_INFO("Tera adapter, config id: %u, listen device: %s, vlan_ingress: %u, vlan_egress: %u, mac_flipping:%u",
+ index, adapter->listen_device->symbol, ntohs(adapter->vlan_ingress), ntohs(adapter->vlan_egress),
+ adapter->mac_flipping);
}
}
@@ -234,9 +241,9 @@ int tera_init(struct sc_main * sc)
}
/* Tera adapter match */
-static inline __rte_always_inline struct tera_adapter * tera_adapter_match(struct node_tera_main * tera_main,
- uint16_t port_id, uint16_t pkt_vlan_id,
- uint8_t * out_dir)
+static inline struct tera_adapter * tera_adapter_match(const struct node_tera_main * tera_main, uint16_t port_id,
+ uint16_t pkt_vlan_id, uint8_t * out_dir,
+ uint16_t * out_vlan_couple)
{
for (int index = 0; index < tera_main->nr_adapters; index++)
{
@@ -246,16 +253,18 @@ static inline __rte_always_inline struct tera_adapter * tera_adapter_match(struc
continue;
}
- if (adapter->vlan_couple[0] == pkt_vlan_id)
+ if (adapter->vlan_ingress == pkt_vlan_id)
{
/* i to e */
*out_dir = 0;
+ *out_vlan_couple = adapter->vlan_egress;
return adapter;
}
- else if (adapter->vlan_couple[1] == pkt_vlan_id)
+ else if (adapter->vlan_egress == pkt_vlan_id)
{
/* e to i */
*out_dir = 1;
+ *out_vlan_couple = adapter->vlan_ingress;
return adapter;
}
}
@@ -277,6 +286,7 @@ static __rte_always_inline uint16_t tera_ingress_node_process(struct rte_graph *
uint8_t prev_dir = UINT8_MAX;
uint16_t prev_port_id = UINT16_MAX;
uint16_t prev_vlan_id = UINT16_MAX;
+ uint16_t prev_vlan_couple = UINT16_MAX;
struct tera_adapter * prev_adapter = NULL;
struct tera_ingress_stats stats = {0};
@@ -308,7 +318,7 @@ static __rte_always_inline uint16_t tera_ingress_node_process(struct rte_graph *
{
prev_port_id = mrb_meta->port_ingress;
prev_vlan_id = vlan_id;
- prev_adapter = tera_adapter_match(g_tera_main, prev_port_id, prev_vlan_id, &prev_dir);
+ prev_adapter = tera_adapter_match(g_tera_main, prev_port_id, prev_vlan_id, &prev_dir, &prev_vlan_couple);
}
uint16_t next_node_index;
@@ -331,7 +341,7 @@ static __rte_always_inline uint16_t tera_ingress_node_process(struct rte_graph *
}
/* Update the vlan id */
- vlan_hdr->vlan_tci = ((vlan_hdr->vlan_tci & 0x00F0) | prev_adapter->vlan_couple[(prev_dir + 1) % 2]);
+ vlan_hdr->vlan_tci = ((vlan_hdr->vlan_tci & 0x00F0) | prev_vlan_couple);
/* Traffic link id match */
uint16_t traffic_link_id;
diff --git a/test/classifier_test.py b/test/classifier_test.py
index e31d162..9e358da 100644
--- a/test/classifier_test.py
+++ b/test/classifier_test.py
@@ -798,7 +798,8 @@ max_rules=64
[tera_adapter:0]
listen_device=veth0
-vlan_couple=110,111
+vlan_ingress=110
+vlan_egress=111
mac_flipping=0
[service_lb]
diff --git a/test/tera_test.py b/test/tera_test.py
index dc2de8c..bc7b586 100644
--- a/test/tera_test.py
+++ b/test/tera_test.py
@@ -75,7 +75,8 @@ sid_end=2000
[tera_adapter:0]
listen_device=veth0
-vlan_couple=110,111
+vlan_ingress=110
+vlan_egress=111
mac_flipping=0
"""
@@ -170,7 +171,8 @@ sid_end=2000
[tera_adapter:0]
listen_device=veth1
-vlan_couple=110,111
+vlan_ingress=110
+vlan_egress=111
mac_flipping=1
"""
@@ -271,82 +273,98 @@ sid_end=2000
[tera_adapter:0]
listen_device=veth0
-vlan_couple=110,111
+vlan_ingress=110
+vlan_egress=111
mac_flipping=1
[tera_adapter:1]
listen_device=veth0
-vlan_couple=112,113
+vlan_ingress=112
+vlan_egress=113
mac_flipping=1
[tera_adapter:2]
listen_device=veth0
-vlan_couple=114,115
+vlan_ingress=114
+vlan_egress=115
mac_flipping=1
[tera_adapter:3]
listen_device=veth0
-vlan_couple=116,117
+vlan_ingress=116
+vlan_egress=117
mac_flipping=1
[tera_adapter:4]
listen_device=veth0
-vlan_couple=118,119
+vlan_ingress=118
+vlan_egress=119
mac_flipping=1
[tera_adapter:5]
listen_device=veth0
-vlan_couple=120,121
+vlan_ingress=120
+vlan_egress=121
mac_flipping=1
[tera_adapter:6]
listen_device=veth0
-vlan_couple=122,123
+vlan_ingress=122
+vlan_egress=123
mac_flipping=1
[tera_adapter:7]
listen_device=veth0
-vlan_couple=124,125
+vlan_ingress=124
+vlan_egress=125
mac_flipping=1
[tera_adapter:8]
listen_device=veth0
-vlan_couple=126,127
+vlan_ingress=126
+vlan_egress=127
mac_flipping=1
[tera_adapter:9]
listen_device=veth0
-vlan_couple=128,129
+vlan_ingress=128
+vlan_egress=129
mac_flipping=1
[tera_adapter:10]
listen_device=veth0
-vlan_couple=130,131
+vlan_ingress=130
+vlan_egress=131
mac_flipping=1
[tera_adapter:11]
listen_device=veth0
-vlan_couple=132,133
+vlan_ingress=132
+vlan_egress=133
mac_flipping=1
[tera_adapter:12]
listen_device=veth0
-vlan_couple=134,135
+vlan_ingress=134
+vlan_egress=135
mac_flipping=1
[tera_adapter:13]
listen_device=veth0
-vlan_couple=136,137
+vlan_ingress=136
+vlan_egress=137
mac_flipping=1
[tera_adapter:14]
listen_device=veth0
-vlan_couple=138,139
+vlan_ingress=138
+vlan_egress=139
mac_flipping=1
[tera_adapter:15]
listen_device=veth0
-vlan_couple=140,141
+vlan_ingress=140
+vlan_egress=141
mac_flipping=1
"""
@group("tera_base_test")