Thread (39 messages) 39 messages, 3 authors, 2017-03-30

Re: [PATCH v2 1/4] net/i40e: rework tunnel filter functions

From: Xing, Beilei <hidden>
Date: 2017-03-27 10:34:00

-----Original Message-----
From: Wu, Jingjing
Sent: Monday, March 27, 2017 5:47 PM
To: Xing, Beilei <redacted>
Cc: Zhang, Helin <redacted>; dev@dpdk.org; Iremonger,
Bernard [off-list ref]
Subject: RE: [PATCH v2 1/4] net/i40e: rework tunnel filter functions


quoted
-----Original Message-----
From: Xing, Beilei
Sent: Thursday, March 23, 2017 6:46 PM
To: Wu, Jingjing <redacted>
Cc: Zhang, Helin <redacted>; dev@dpdk.org
Subject: [PATCH v2 1/4] net/i40e: rework tunnel filter functions

Rework tunnel filter functions to align with the new command buffer
for add/remove cloud filter.

Signed-off-by: Beilei Xing <redacted>
---
 drivers/net/i40e/i40e_ethdev.c | 100
+++++++++++++++++++++++++++----------
----
 drivers/net/i40e/i40e_ethdev.h |   1 +
 drivers/net/i40e/i40e_flow.c   |  28 +++++++-----
 3 files changed, 86 insertions(+), 43 deletions(-)
quoted
@@ -10289,13 +10307,29 @@ i40e_tunnel_filter_restore(struct i40e_pf *pf)
 	struct i40e_tunnel_filter_list
 		*tunnel_list = &pf->tunnel.tunnel_list;
 	struct i40e_tunnel_filter *f;
-	struct i40e_aqc_add_remove_cloud_filters_element_data cld_filter;
+	struct i40e_aqc_add_rm_cloud_filt_elem_ext cld_filter;
+	bool big_buffer = 0;

 	TAILQ_FOREACH(f, tunnel_list, rules) {
 		memset(&cld_filter, 0, sizeof(cld_filter));
-		rte_memcpy(&cld_filter, &f->input, sizeof(f->input));
-		cld_filter.queue_number = f->queue;
-		i40e_aq_add_cloud_filters(hw, vsi->seid, &cld_filter, 1);
+		ether_addr_copy((struct ether_addr *)&f->input.outer_mac,
+			(struct ether_addr *)&cld_filter.element.outer_mac);
+		ether_addr_copy((struct ether_addr *)&f->input.inner_mac,
+			(struct ether_addr *)&cld_filter.element.inner_mac);
+		cld_filter.element.inner_vlan = f->input.inner_vlan;
+		cld_filter.element.flags = f->input.flags;
+		cld_filter.element.tenant_id = f->input.tenant_id;
+		cld_filter.element.queue_number = f->queue;
+		rte_memcpy(cld_filter.general_fields,
+			   f->input.general_fields,
+			   sizeof(f->input.general_fields));
+
+		if (big_buffer)
+			i40e_aq_add_cloud_filters_big_buffer(hw, vsi->seid,
+							     &cld_filter, 1);
+		else
+			i40e_aq_add_cloud_filters(hw, vsi->seid,
+						  &cld_filter.element, 1);
 	}
Big_buffer is always 0, why we need to check it?
Big_buffer will be 1 if the filter_type is MPLSoGRE/MPLSoUDP. But MPLS enabling in the next patchset. Will update in next version.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help