[ovs-dev] [PATCH 13/62] netdev-offload-dpdk: work around for vhost type port trans to rte_flow

Tao YunXiang taoyunxiang at cmss.chinamobile.com
Mon Dec 28 09:24:31 UTC 2020


From: Liuchang <liuchang at cmss.chinamobile.com>

Code Source From: Self Code

Description:

    work around for vhost type port trans to rte_flow
Jira:  #[Optional]
市场项目编号(名称):[Optional]
---
 lib/netdev-offload-dpdk.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
index befc1d6..7e59d51 100644
--- a/lib/netdev-offload-dpdk.c
+++ b/lib/netdev-offload-dpdk.c
@@ -891,8 +891,10 @@ add_output_action(struct netdev *netdev,
         VLOG_DBG_RL(&rl, "Cannot find netdev for odp port %"PRIu32, port);
         return -1;
     }
+    /* work around: to enable vhost type port tans rte_flow 
     if (!netdev_flow_api_equals(netdev, outdev) ||
-        add_port_id_action(actions, outdev)) {
+        add_port_id_action(actions, outdev)) { */
+    if (add_port_id_action(actions, outdev)) {
         VLOG_DBG_RL(&rl, "%s: Output to port \'%s\' cannot be offloaded.",
                     netdev_get_name(netdev), netdev_get_name(outdev));
         ret = -1;
@@ -1044,7 +1046,7 @@ add_vxlan_encap_action(struct flow_actions *actions,
     const void *l4;
     int field;
 
-    VLOG_DBG_RL(&rl, "TIMO DBG: in add_vxlan_encap_action");
+    VLOG_DBG("TIMO DBG: in add_vxlan_encap_action");
     vxlan_data = xzalloc(sizeof *vxlan_data +
                          sizeof(struct rte_flow_item) *
                          ACTION_VXLAN_ENCAP_ITEMS_NUM);
@@ -1120,11 +1122,12 @@ parse_clone_actions(struct netdev *netdev,
 {
     const struct nlattr *ca;
     unsigned int cleft;
+    u_int8_t i = 0;
 
     NL_ATTR_FOR_EACH_UNSAFE (ca, cleft, clone_actions, clone_actions_len) {
         int clone_type = nl_attr_type(ca);
 
-        VLOG_DBG_RL(&rl, "TIMO DBG: in parse_clone_action");
+        VLOG_DBG("TIMO DBG: in parse_clone_action %0d:%d",i++,clone_type);
 
         if (clone_type == OVS_ACTION_ATTR_TUNNEL_PUSH) {
             const struct ovs_action_push_tnl *tnl_push = nl_attr_get(ca);
@@ -1146,6 +1149,9 @@ parse_clone_actions(struct netdev *netdev,
             if (add_output_action(netdev, actions, ca,info)) {
                 return -1;
             }
+        /* work around: tmp bypass vlan push action*/
+        } else if (clone_type == OVS_ACTION_ATTR_PUSH_VLAN) {
+            continue;
         } else {
             VLOG_DBG_RL(&rl,
                         "Unsupported nested action inside clone(), "
@@ -1166,9 +1172,11 @@ parse_flow_actions(struct netdev *netdev,
 {
     struct nlattr *nla;
     size_t left;
+    uint8_t i = 0;
 
     add_count_action(actions);
     NL_ATTR_FOR_EACH_UNSAFE (nla, left, nl_actions, nl_actions_len) {
+        VLOG_DBG("TIMO:action type %0d:%d",i++,nl_attr_type(nla));
         if (nl_attr_type(nla) == OVS_ACTION_ATTR_OUTPUT) {
             if (add_output_action(netdev, actions, nla, info)) {
                 return -1;
-- 
1.8.3.1





More information about the dev mailing list