[ovs-dev] [PATCH] dpif-netdev: Fix crash when PACKET_OUT is metered

2021-08-15 Thread Tony van der Peet
When a PACKET_OUT has output port of OFPP_TABLE, and the rule
table includes a meter and this causes the packet to be deleted,
execute with a clone of the packet, restoring the original packet
if it is changed by the execution.

Add tests to verify the original issue is fixed, and that the fix
doesn't break tunnel processing.

Reported-by: Tony van der Peet 
Signed-off-by: Tony van der Peet 
---
 lib/dp-packet.h  | 13 ++
 lib/dpif-netdev.c| 19 +-
 tests/ofproto-dpif.at| 21 +++
 tests/tunnel-push-pop.at | 56 
 4 files changed, 108 insertions(+), 1 deletion(-)

diff --git a/lib/dp-packet.h b/lib/dp-packet.h
index 08d93c277..3dc582fbf 100644
--- a/lib/dp-packet.h
+++ b/lib/dp-packet.h
@@ -199,6 +199,7 @@ struct dp_packet *dp_packet_clone_data_with_headroom(const 
void *, size_t,
 void dp_packet_resize(struct dp_packet *b, size_t new_headroom,
   size_t new_tailroom);
 static inline void dp_packet_delete(struct dp_packet *);
+static inline void dp_packet_swap(struct dp_packet *, struct dp_packet *);
 
 static inline void *dp_packet_at(const struct dp_packet *, size_t offset,
  size_t size);
@@ -256,6 +257,18 @@ dp_packet_delete(struct dp_packet *b)
 }
 }
 
+/* Swaps content of two packets. */
+static inline void
+dp_packet_swap(struct dp_packet *a, struct dp_packet *b)
+{
+ovs_assert(a->source == DPBUF_MALLOC || a->source == DPBUF_STUB);
+ovs_assert(b->source == DPBUF_MALLOC || b->source == DPBUF_STUB);
+struct dp_packet c = *a;
+
+*a = *b;
+*b = c;
+}
+
 /* If 'b' contains at least 'offset + size' bytes of data, returns a pointer to
  * byte 'offset'.  Otherwise, returns a null pointer. */
 static inline void *
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 03f460c7d..4733c3a06 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -4077,7 +4077,10 @@ dpif_netdev_execute(struct dpif *dpif, struct 
dpif_execute *execute)
flow_hash_5tuple(execute->flow, 0));
 }
 
-dp_packet_batch_init_packet(, execute->packet);
+/* Making a copy because the packet might be stolen during the execution
+ * and caller might still need it.  */
+struct dp_packet *packet_clone = dp_packet_clone(execute->packet);
+dp_packet_batch_init_packet(, packet_clone);
 dp_netdev_execute_actions(pmd, , false, execute->flow,
   execute->actions, execute->actions_len);
 dp_netdev_pmd_flush_output_packets(pmd, true);
@@ -4087,6 +4090,20 @@ dpif_netdev_execute(struct dpif *dpif, struct 
dpif_execute *execute)
 dp_netdev_pmd_unref(pmd);
 }
 
+if (dp_packet_batch_size()) {
+/* Packet wasn't dropped during the execution.  Swapping content with
+ * the original packet, because the caller might expect actions to
+ * modify it. */
+dp_packet_swap(execute->packet, packet_clone);
+dp_packet_delete_batch(, true);
+} else {
+/* Packet was stolen during the execution due to some error.  We need
+ * to flag that for the caller, so it will not proceed with other
+ * actions on this packet.  Returning EAGAIN because we just don't
+ * know what execlty happened. */
+return EAGAIN;
+}
+
 return 0;
 }
 
diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
index ed3b141b3..70f9cb89f 100644
--- a/tests/ofproto-dpif.at
+++ b/tests/ofproto-dpif.at
@@ -9723,6 +9723,27 @@ OFPST_TABLE reply (OF1.3) (xid=0x2):
 OVS_VSWITCHD_STOP
 AT_CLEANUP
 
+AT_SETUP([ofproto-dpif packet-out table meter drop])
+OVS_VSWITCHD_START
+add_of_ports br0 1 2
+
+AT_CHECK([ovs-ofctl -O OpenFlow13 add-meter br0 'meter=1 pktps bands=type=drop 
rate=1'])
+AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 'in_port=1 
action=meter:1,output:2'])
+
+ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 
packet=5054000a505400090800451c0011a4cd0a0101010a010102000100040008
 actions=resubmit(,0)"
+ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 
packet=5054000a505400090800451c0011a4cd0a0101010a010102000100040008
 actions=resubmit(,0)"
+
+# Check that vswitchd hasn't crashed by dumping the meter added above
+AT_CHECK([ovs-ofctl -O OpenFlow13 dump-meters br0 | ofctl_strip], [0], [dnl
+OFPST_METER_CONFIG reply (OF1.3):
+meter=1 pktps bands=
+type=drop rate=1
+])
+OVS_WAIT_UNTIL([grep 'execute meter(0),2 failed' ovs-vswitchd.log])
+
+OVS_VSWITCHD_STOP(["/execute meter(0),2 failed/d"])
+AT_CLEANUP
+
 AT_SETUP([ofproto-dpif - ICMPv6])
 OVS_VSWITCHD_START
 add_of_ports br0 1
diff --git a/tests/tunnel-push-pop.at b/tests/tunnel-push-pop.at
index 48c5de9d1..12fc1ef91 100644
--- a/tests/tunnel-push-pop.at
+++ b/tests/tunnel-push-pop.at
@@ -595,6 +595,62 @@ OVS_WAIT_UNTIL([test `ovs-pcap p0.pcap | grep 
5054000a505400091235 | wc
 OVS_VSWITCHD_STOP
 AT_CLEANUP
 
+AT_SETUP([tunnel_push_pop 

Re: [ovs-dev] [PATCH v2] conntrack: fix incorrect check nat_action_info in check_orig_tuple

2021-08-15 Thread ze wang
We tested the patch and it works. After NATed, the packet already
carries the CS_SRC_NAT or CS_DST_NAT flag, there is no need to check
nat_action_info, and the original check logic is incorrect.
Reviewed-by: wangze 

 于2021年8月6日周五 下午4:38写道:
>
> From: wenxu 
>
> A case for client A 10.0.0.2 snat to 1.1.1.2 with following flows.
>
> rule1: ovs-ofctl add-flow manbr "table=0,ct_state=-trk,ip,in_port=dpdk2, 
> actions=ct(table=1, nat)"
> rule2: ovs-ofctl add-flow manbr 
> "table=0,table=1,ct_state=+trk+new,ip,in_port=dpdk2, actions=ct(commit, 
> nat(src=1.1.1.2)),dpdk3"
>
> When client A tcp connect to a non-exist server 1.1.1.3
>
> The first syn packet will create the following conntrack 1
> But the second syn packet will wrongly create the conntrack 2
>
> tcp,orig=(src=10.0.0.2,dst=1.1.1.3,sport=15690,dport=5001),reply=(src=1.1.1.3,dst=1.1.1.2,sport=5001,dport=15690),protoinfo=(state=SYN_SENT)
>#conntrack 1
> tcp,orig=(src=1.1.1.2,dst=1.1.1.3,sport=15690,dport=5001),reply=(src=1.1.1.3,dst=1.1.1.2,sport=5001,dport=1024),protoinfo=(state=SYN_SENT)
>  #conntrack 2
>
> The second syn packet gothrough rule1 and find the conntrack1 and
> do nat. Then gothrough the rule2 will not find the only conntrack
> for packet nated in the rule1
> The check_orig_tuple is used to fix for this situation(packet
> nated in the first rule). But it should't check the nat_action_info
> in the rule2. It should only check the CS_SRC_NAT and CS_DST_NAT.
>
> Signed-off-by: wenxu 
> ---
>  lib/conntrack.c | 8 +++-
>  1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/lib/conntrack.c b/lib/conntrack.c
> index 2e803ca..ace3e9a 100644
> --- a/lib/conntrack.c
> +++ b/lib/conntrack.c
> @@ -1156,15 +1156,13 @@ handle_nat(struct dp_packet *pkt, struct conn *conn,
>  static bool
>  check_orig_tuple(struct conntrack *ct, struct dp_packet *pkt,
>   struct conn_lookup_ctx *ctx_in, long long now,
> - struct conn **conn,
> - const struct nat_action_info_t *nat_action_info)
> + struct conn **conn)
>  {
>  if (!(pkt->md.ct_state & (CS_SRC_NAT | CS_DST_NAT)) ||
>  (ctx_in->key.dl_type == htons(ETH_TYPE_IP) &&
>   !pkt->md.ct_orig_tuple.ipv4.ipv4_proto) ||
>  (ctx_in->key.dl_type == htons(ETH_TYPE_IPV6) &&
> - !pkt->md.ct_orig_tuple.ipv6.ipv6_proto) ||
> -nat_action_info) {
> + !pkt->md.ct_orig_tuple.ipv6.ipv6_proto)) {
>  return false;
>  }
>
> @@ -1343,7 +1341,7 @@ process_one(struct conntrack *ct, struct dp_packet *pkt,
>  handle_nat(pkt, conn, zone, ctx->reply, ctx->icmp_related);
>  }
>
> -} else if (check_orig_tuple(ct, pkt, ctx, now, , nat_action_info)) {
> +} else if (check_orig_tuple(ct, pkt, ctx, now, )) {
>  create_new_conn = conn_update_state(ct, pkt, ctx, conn, now);
>  } else {
>  if (ctx->icmp_related) {
> --
> 1.8.3.1
>
> ___
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


Re: [ovs-dev] [PATCH] dpif-netdev: Fix crash when PACKET_OUT is metered

2021-08-15 Thread 0-day Robot
Bleep bloop.  Greetings Tony van der Peet, I am a robot and I have tried out 
your patch.
Thanks for your contribution.

I encountered some error that I wasn't expecting.  See the details below.


checkpatch:
WARNING: Unexpected sign-offs from developers who are not authors or co-authors 
or committers: Ilya Maximets 
Lines checked: 193, Warnings: 1, Errors: 0


Please check this out.  If you feel there has been an error, please email 
acon...@redhat.com

Thanks,
0-day Robot
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH] dpif-netdev: Fix crash when PACKET_OUT is metered

2021-08-15 Thread Tony van der Peet
When a PACKET_OUT has output port of OFPP_TABLE, and the rule
table includes a meter and this causes the packet to be deleted,
execute with a clone of the packet, restoring the original packet
if it is changed by the execution.

Add tests to verify the original issue is fixed, and that the fix
doesn't break tunnel processing.

Reported-by: Tony van der Peet 
Signed-off-by: Ilya Maximets 
Signed-off-by: Tony van der Peet 
---
 lib/dp-packet.h  | 13 ++
 lib/dpif-netdev.c| 19 +-
 tests/ofproto-dpif.at| 21 +++
 tests/tunnel-push-pop.at | 56 
 4 files changed, 108 insertions(+), 1 deletion(-)

diff --git a/lib/dp-packet.h b/lib/dp-packet.h
index 08d93c277..3dc582fbf 100644
--- a/lib/dp-packet.h
+++ b/lib/dp-packet.h
@@ -199,6 +199,7 @@ struct dp_packet *dp_packet_clone_data_with_headroom(const 
void *, size_t,
 void dp_packet_resize(struct dp_packet *b, size_t new_headroom,
   size_t new_tailroom);
 static inline void dp_packet_delete(struct dp_packet *);
+static inline void dp_packet_swap(struct dp_packet *, struct dp_packet *);
 
 static inline void *dp_packet_at(const struct dp_packet *, size_t offset,
  size_t size);
@@ -256,6 +257,18 @@ dp_packet_delete(struct dp_packet *b)
 }
 }
 
+/* Swaps content of two packets. */
+static inline void
+dp_packet_swap(struct dp_packet *a, struct dp_packet *b)
+{
+ovs_assert(a->source == DPBUF_MALLOC || a->source == DPBUF_STUB);
+ovs_assert(b->source == DPBUF_MALLOC || b->source == DPBUF_STUB);
+struct dp_packet c = *a;
+
+*a = *b;
+*b = c;
+}
+
 /* If 'b' contains at least 'offset + size' bytes of data, returns a pointer to
  * byte 'offset'.  Otherwise, returns a null pointer. */
 static inline void *
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 03f460c7d..4733c3a06 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -4077,7 +4077,10 @@ dpif_netdev_execute(struct dpif *dpif, struct 
dpif_execute *execute)
flow_hash_5tuple(execute->flow, 0));
 }
 
-dp_packet_batch_init_packet(, execute->packet);
+/* Making a copy because the packet might be stolen during the execution
+ * and caller might still need it.  */
+struct dp_packet *packet_clone = dp_packet_clone(execute->packet);
+dp_packet_batch_init_packet(, packet_clone);
 dp_netdev_execute_actions(pmd, , false, execute->flow,
   execute->actions, execute->actions_len);
 dp_netdev_pmd_flush_output_packets(pmd, true);
@@ -4087,6 +4090,20 @@ dpif_netdev_execute(struct dpif *dpif, struct 
dpif_execute *execute)
 dp_netdev_pmd_unref(pmd);
 }
 
+if (dp_packet_batch_size()) {
+/* Packet wasn't dropped during the execution.  Swapping content with
+ * the original packet, because the caller might expect actions to
+ * modify it. */
+dp_packet_swap(execute->packet, packet_clone);
+dp_packet_delete_batch(, true);
+} else {
+/* Packet was stolen during the execution due to some error.  We need
+ * to flag that for the caller, so it will not proceed with other
+ * actions on this packet.  Returning EAGAIN because we just don't
+ * know what execlty happened. */
+return EAGAIN;
+}
+
 return 0;
 }
 
diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
index ed3b141b3..70f9cb89f 100644
--- a/tests/ofproto-dpif.at
+++ b/tests/ofproto-dpif.at
@@ -9723,6 +9723,27 @@ OFPST_TABLE reply (OF1.3) (xid=0x2):
 OVS_VSWITCHD_STOP
 AT_CLEANUP
 
+AT_SETUP([ofproto-dpif packet-out table meter drop])
+OVS_VSWITCHD_START
+add_of_ports br0 1 2
+
+AT_CHECK([ovs-ofctl -O OpenFlow13 add-meter br0 'meter=1 pktps bands=type=drop 
rate=1'])
+AT_CHECK([ovs-ofctl -O OpenFlow13 add-flow br0 'in_port=1 
action=meter:1,output:2'])
+
+ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 
packet=5054000a505400090800451c0011a4cd0a0101010a010102000100040008
 actions=resubmit(,0)"
+ovs-ofctl -O OpenFlow13 packet-out br0 "in_port=1 
packet=5054000a505400090800451c0011a4cd0a0101010a010102000100040008
 actions=resubmit(,0)"
+
+# Check that vswitchd hasn't crashed by dumping the meter added above
+AT_CHECK([ovs-ofctl -O OpenFlow13 dump-meters br0 | ofctl_strip], [0], [dnl
+OFPST_METER_CONFIG reply (OF1.3):
+meter=1 pktps bands=
+type=drop rate=1
+])
+OVS_WAIT_UNTIL([grep 'execute meter(0),2 failed' ovs-vswitchd.log])
+
+OVS_VSWITCHD_STOP(["/execute meter(0),2 failed/d"])
+AT_CLEANUP
+
 AT_SETUP([ofproto-dpif - ICMPv6])
 OVS_VSWITCHD_START
 add_of_ports br0 1
diff --git a/tests/tunnel-push-pop.at b/tests/tunnel-push-pop.at
index 48c5de9d1..12fc1ef91 100644
--- a/tests/tunnel-push-pop.at
+++ b/tests/tunnel-push-pop.at
@@ -595,6 +595,62 @@ OVS_WAIT_UNTIL([test `ovs-pcap p0.pcap | grep 
5054000a505400091235 | wc
 OVS_VSWITCHD_STOP
 AT_CLEANUP

[ovs-dev] [PATCH branch-2.15] OVS: Update OVS 2.15 branch to use latest dpdk versions

2021-08-15 Thread Suneetha Kalahasthi
Modify ci linux build script to use the latest DPDK stable release 20.11.2.
Modify Documentation to use the latest DPDK stable release 20.11.2.
Update NEWS file to reflect the latest DPDK stable release 20.11.2.
FAQ is updated to reflect the latest DPDK for each OVS branch.

Signed-off-by: Suneetha Kalahasthi 
---
 .ci/linux-build.sh   | 2 +-
 Documentation/faq/releases.rst   | 6 +++---
 Documentation/intro/install/dpdk.rst | 8 
 NEWS | 3 +++
 4 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index 1acf5012d..24db5e058 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -201,7 +201,7 @@ fi
 
 if [ "$DPDK" ] || [ "$DPDK_SHARED" ]; then
 if [ -z "$DPDK_VER" ]; then
-DPDK_VER="20.11.1"
+DPDK_VER="20.11.2"
 fi
 install_dpdk $DPDK_VER
 if [ "$CC" = "clang" ]; then
diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst
index 3bc34c892..d03de5beb 100644
--- a/Documentation/faq/releases.rst
+++ b/Documentation/faq/releases.rst
@@ -204,9 +204,9 @@ Q: What DPDK version does each Open vSwitch release work 
with?
 2.10.x   17.11.10
 2.11.x   18.11.9
 2.12.x   18.11.9
-2.13.x   19.11.8
-2.14.x   19.11.8
-2.15.x   20.11.1
+2.13.x   19.11.9
+2.14.x   19.11.9
+2.15.x   20.11.2
  
 
 Q: Are all the DPDK releases that OVS versions work with maintained?
diff --git a/Documentation/intro/install/dpdk.rst 
b/Documentation/intro/install/dpdk.rst
index 612f2fdbc..7f0442271 100644
--- a/Documentation/intro/install/dpdk.rst
+++ b/Documentation/intro/install/dpdk.rst
@@ -42,7 +42,7 @@ Build requirements
 In addition to the requirements described in :doc:`general`, building Open
 vSwitch with DPDK will require the following:
 
-- DPDK 20.11.1
+- DPDK 20.11.2
 
 - A `DPDK supported NIC`_
 
@@ -73,9 +73,9 @@ Install DPDK
 #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``::
 
$ cd /usr/src/
-   $ wget https://fast.dpdk.org/rel/dpdk-20.11.1.tar.xz
-   $ tar xf dpdk-20.11.1.tar.xz
-   $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.1
+   $ wget https://fast.dpdk.org/rel/dpdk-20.11.2.tar.xz
+   $ tar xf dpdk-20.11.2.tar.xz
+   $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.2
$ cd $DPDK_DIR
 
 #. Configure and install DPDK using Meson
diff --git a/NEWS b/NEWS
index 154a299d9..e399dd0e0 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,9 @@ v2.15.2 - xx xxx 
- OVS now reports the datapath capability 'ct_zero_snat', which reflects
  whether the SNAT with all-zero IP address is supported.
  See ovs-vswitchd.conf.db(5) for details.
+   - DPDK:
+ * OVS validated with DPDK 20.11.2. It is recommended to use this version
+   until further releases.
 
 v2.15.1 - 01 Jul 2021
 -
-- 
2.17.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH branch-2.16] OVS: Update OVS 2.16 branch to use latest dpdk versions

2021-08-15 Thread Suneetha Kalahasthi
Modify ci linux build script to use the latest DPDK stable release 20.11.2.
Modify Documentation to use the latest DPDK stable release 20.11.2.
Update NEWS file to reflect the latest DPDK stable release 20.11.2.
FAQ is updated to reflect the latest DPDK for each OVS branch.

Signed-off-by: Suneetha Kalahasthi 
---
 .ci/linux-build.sh   | 2 +-
 Documentation/faq/releases.rst   | 8 
 Documentation/intro/install/dpdk.rst | 8 
 NEWS | 2 +-
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index 863f02388..ef6b5fd4b 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -216,7 +216,7 @@ fi
 
 if [ "$DPDK" ] || [ "$DPDK_SHARED" ]; then
 if [ -z "$DPDK_VER" ]; then
-DPDK_VER="20.11.1"
+DPDK_VER="20.11.2"
 fi
 install_dpdk $DPDK_VER
 if [ "$CC" = "clang" ]; then
diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst
index 68c9867b1..5d52446b9 100644
--- a/Documentation/faq/releases.rst
+++ b/Documentation/faq/releases.rst
@@ -205,10 +205,10 @@ Q: What DPDK version does each Open vSwitch release work 
with?
 2.10.x   17.11.10
 2.11.x   18.11.9
 2.12.x   18.11.9
-2.13.x   19.11.8
-2.14.x   19.11.8
-2.15.x   20.11.1
-2.16.x   20.11.1
+2.13.x   19.11.9
+2.14.x   19.11.9
+2.15.x   20.11.2
+2.16.x   20.11.2
  
 
 Q: Are all the DPDK releases that OVS versions work with maintained?
diff --git a/Documentation/intro/install/dpdk.rst 
b/Documentation/intro/install/dpdk.rst
index d8fa931fa..9d3b752c4 100644
--- a/Documentation/intro/install/dpdk.rst
+++ b/Documentation/intro/install/dpdk.rst
@@ -42,7 +42,7 @@ Build requirements
 In addition to the requirements described in :doc:`general`, building Open
 vSwitch with DPDK will require the following:
 
-- DPDK 20.11.1
+- DPDK 20.11.2
 
 - A `DPDK supported NIC`_
 
@@ -73,9 +73,9 @@ Install DPDK
 #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``::
 
$ cd /usr/src/
-   $ wget https://fast.dpdk.org/rel/dpdk-20.11.1.tar.xz
-   $ tar xf dpdk-20.11.1.tar.xz
-   $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.1
+   $ wget https://fast.dpdk.org/rel/dpdk-20.11.2.tar.xz
+   $ tar xf dpdk-20.11.2.tar.xz
+   $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.2
$ cd $DPDK_DIR
 
 #. Configure and install DPDK using Meson
diff --git a/NEWS b/NEWS
index 1064c4dfc..f5e37e0f3 100644
--- a/NEWS
+++ b/NEWS
@@ -61,7 +61,7 @@ v2.16.0 - xx xxx 
in ovsdb on startup.
  * New command 'record-hostname-if-not-set' to update hostname in ovsdb.
- DPDK:
- * OVS validated with DPDK 20.11.1. It is recommended to use this version
+ * OVS validated with DPDK 20.11.2. It is recommended to use this version
until further releases.
  * New debug appctl command 'dpdk/get-malloc-stats'.
  * Add hardware offload support for tunnel pop action (experimental).
-- 
2.17.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH branch-master] OVS: Update OVS master to use latest dpdk versions

2021-08-15 Thread Suneetha Kalahasthi
Modify ci linux build script to use the latest DPDK stable release 20.11.2.
Modify Documentation to use the latest DPDK stable release 20.11.2.
Update NEWS file to reflect the latest DPDK stable release 20.11.2.
FAQ is updated to reflect the latest DPDK for each OVS branch.

Signed-off-by: Suneetha Kalahasthi 
---
 .ci/linux-build.sh   | 2 +-
 Documentation/faq/releases.rst   | 8 
 Documentation/intro/install/dpdk.rst | 8 
 NEWS | 2 +-
 4 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index 863f02388..ef6b5fd4b 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -216,7 +216,7 @@ fi
 
 if [ "$DPDK" ] || [ "$DPDK_SHARED" ]; then
 if [ -z "$DPDK_VER" ]; then
-DPDK_VER="20.11.1"
+DPDK_VER="20.11.2"
 fi
 install_dpdk $DPDK_VER
 if [ "$CC" = "clang" ]; then
diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst
index 68c9867b1..5d52446b9 100644
--- a/Documentation/faq/releases.rst
+++ b/Documentation/faq/releases.rst
@@ -205,10 +205,10 @@ Q: What DPDK version does each Open vSwitch release work 
with?
 2.10.x   17.11.10
 2.11.x   18.11.9
 2.12.x   18.11.9
-2.13.x   19.11.8
-2.14.x   19.11.8
-2.15.x   20.11.1
-2.16.x   20.11.1
+2.13.x   19.11.9
+2.14.x   19.11.9
+2.15.x   20.11.2
+2.16.x   20.11.2
  
 
 Q: Are all the DPDK releases that OVS versions work with maintained?
diff --git a/Documentation/intro/install/dpdk.rst 
b/Documentation/intro/install/dpdk.rst
index 96843af73..d23a55c2c 100644
--- a/Documentation/intro/install/dpdk.rst
+++ b/Documentation/intro/install/dpdk.rst
@@ -42,7 +42,7 @@ Build requirements
 In addition to the requirements described in :doc:`general`, building Open
 vSwitch with DPDK will require the following:
 
-- DPDK 20.11.1
+- DPDK 20.11.2
 
 - A `DPDK supported NIC`_
 
@@ -73,9 +73,9 @@ Install DPDK
 #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``::
 
$ cd /usr/src/
-   $ wget https://fast.dpdk.org/rel/dpdk-20.11.1.tar.xz
-   $ tar xf dpdk-20.11.1.tar.xz
-   $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.1
+   $ wget https://fast.dpdk.org/rel/dpdk-20.11.2.tar.xz
+   $ tar xf dpdk-20.11.2.tar.xz
+   $ export DPDK_DIR=/usr/src/dpdk-stable-20.11.2
$ cd $DPDK_DIR
 
 #. Configure and install DPDK using Meson
diff --git a/NEWS b/NEWS
index 26920e215..53d8ce977 100644
--- a/NEWS
+++ b/NEWS
@@ -73,7 +73,7 @@ v2.16.0 - xx xxx 
in ovsdb on startup.
  * New command 'record-hostname-if-not-set' to update hostname in ovsdb.
- DPDK:
- * OVS validated with DPDK 20.11.1. It is recommended to use this version
+ * OVS validated with DPDK 20.11.2. It is recommended to use this version
until further releases.
  * New debug appctl command 'dpdk/get-malloc-stats'.
  * Add hardware offload support for tunnel pop action (experimental).
-- 
2.17.1

___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] tunnel info mask can unmasked when megaflow is with a recirc_id

2021-08-15 Thread 贺鹏
Hi,

One recirc_id can be viewed as a frozen state in the "xlate" process
and this frozen state stores tunnel info in it. So this recirc_id can also
be viewed as a packet tag, with this tag it means the packet has all
the tunnel metadata.

So I was wondering if the "xlate" process sees a packets with recirc id,
it can clear all the masks of tunnel info, as the recric_id itself represents
the tunnel info already.

With this optimization, the recircled packets do not have to matched against
tunnel info in the datapath, just recirc_id itself is enough, except
the openflow
rules clearly specify the tun_* fields.

Am I correct?


-- 
hepeng
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev