diff mbox

[ovs-dev,V2] tc: Add SCTP support

Message ID 1500982791-2651-1-git-send-email-roid@mellanox.com
State Accepted
Headers show

Commit Message

Roi Dayan July 25, 2017, 11:39 a.m. UTC
From: Vlad Buslov <vladbu@mellanox.com>

Implement SCTP source and destination ports support for flower.

Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Reviewed-by: Paul Blakey <paulb@mellanox.com>
Acked-by: Roi Dayan <roid@mellanox.com>
---

V1->V2
    - Fix typo in commit message.


 lib/netdev-tc-offloads.c |  4 +++-
 lib/tc.c                 | 26 ++++++++++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

Comments

Joe Stringer July 26, 2017, 9:35 p.m. UTC | #1
On 25 July 2017 at 04:39, Roi Dayan <roid@mellanox.com> wrote:
> From: Vlad Buslov <vladbu@mellanox.com>
>
> Implement SCTP source and destination ports support for flower.
>
> Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
> Reviewed-by: Paul Blakey <paulb@mellanox.com>
> Acked-by: Roi Dayan <roid@mellanox.com>
> ---

Acked-by: Joe Stringer <joe@ovn.org>
Simon Horman July 27, 2017, 8:17 a.m. UTC | #2
On Wed, Jul 26, 2017 at 02:35:51PM -0700, Joe Stringer wrote:
> On 25 July 2017 at 04:39, Roi Dayan <roid@mellanox.com> wrote:
> > From: Vlad Buslov <vladbu@mellanox.com>
> >
> > Implement SCTP source and destination ports support for flower.
> >
> > Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
> > Reviewed-by: Paul Blakey <paulb@mellanox.com>
> > Acked-by: Roi Dayan <roid@mellanox.com>
> > ---
> 
> Acked-by: Joe Stringer <joe@ovn.org>

Thanks, applied to master.
Flavio Leitner Aug. 15, 2017, 9:19 p.m. UTC | #3
On Thu, 27 Jul 2017 10:17:23 +0200
Simon Horman <simon.horman@netronome.com> wrote:

> On Wed, Jul 26, 2017 at 02:35:51PM -0700, Joe Stringer wrote:
> > On 25 July 2017 at 04:39, Roi Dayan <roid@mellanox.com> wrote:  
> > > From: Vlad Buslov <vladbu@mellanox.com>
> > >
> > > Implement SCTP source and destination ports support for flower.
> > >
> > > Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
> > > Reviewed-by: Paul Blakey <paulb@mellanox.com>
> > > Acked-by: Roi Dayan <roid@mellanox.com>
> > > ---  
> > 
> > Acked-by: Joe Stringer <joe@ovn.org>  
> 
> Thanks, applied to master.

I know it's applied, but still wanted to review.
ACK and thanks for following up with this.
diff mbox

Patch

diff --git a/lib/netdev-tc-offloads.c b/lib/netdev-tc-offloads.c
index c98c259..318e030 100644
--- a/lib/netdev-tc-offloads.c
+++ b/lib/netdev-tc-offloads.c
@@ -748,7 +748,9 @@  netdev_tc_flow_put(struct netdev *netdev, struct match *match,
         flower.key.ip_proto = key->nw_proto;
         flower.mask.ip_proto = mask->nw_proto;
 
-        if (key->nw_proto == IPPROTO_TCP || key->nw_proto == IPPROTO_UDP) {
+        if (key->nw_proto == IPPROTO_TCP
+            || key->nw_proto == IPPROTO_UDP
+            || key->nw_proto == IPPROTO_SCTP) {
             flower.key.dst_port = key->tp_dst;
             flower.mask.dst_port = mask->tp_dst;
             flower.key.src_port = key->tp_src;
diff --git a/lib/tc.c b/lib/tc.c
index 401690e..82c5ee7 100644
--- a/lib/tc.c
+++ b/lib/tc.c
@@ -167,6 +167,10 @@  static const struct nl_policy tca_flower_policy[] = {
     [TCA_FLOWER_KEY_UDP_DST] = { .type = NL_A_U16, .optional = true, },
     [TCA_FLOWER_KEY_UDP_SRC_MASK] = { .type = NL_A_U16, .optional = true, },
     [TCA_FLOWER_KEY_UDP_DST_MASK] = { .type = NL_A_U16, .optional = true, },
+    [TCA_FLOWER_KEY_SCTP_SRC] = { .type = NL_A_U16, .optional = true, },
+    [TCA_FLOWER_KEY_SCTP_DST] = { .type = NL_A_U16, .optional = true, },
+    [TCA_FLOWER_KEY_SCTP_SRC_MASK] = { .type = NL_A_U16, .optional = true, },
+    [TCA_FLOWER_KEY_SCTP_DST_MASK] = { .type = NL_A_U16, .optional = true, },
     [TCA_FLOWER_KEY_VLAN_ID] = { .type = NL_A_U16, .optional = true, },
     [TCA_FLOWER_KEY_VLAN_PRIO] = { .type = NL_A_U8, .optional = true, },
     [TCA_FLOWER_KEY_VLAN_ETH_TYPE] = { .type = NL_A_U16, .optional = true, },
@@ -327,6 +331,17 @@  nl_parse_flower_ip(struct nlattr **attrs, struct tc_flower *flower) {
             mask->dst_port =
                 nl_attr_get_be16(attrs[TCA_FLOWER_KEY_UDP_DST_MASK]);
         }
+    } else if (ip_proto == IPPROTO_SCTP) {
+        if (attrs[TCA_FLOWER_KEY_SCTP_SRC_MASK]) {
+            key->src_port = nl_attr_get_be16(attrs[TCA_FLOWER_KEY_SCTP_SRC]);
+            mask->src_port =
+                nl_attr_get_be16(attrs[TCA_FLOWER_KEY_SCTP_SRC_MASK]);
+        }
+        if (attrs[TCA_FLOWER_KEY_SCTP_DST_MASK]) {
+            key->dst_port = nl_attr_get_be16(attrs[TCA_FLOWER_KEY_SCTP_DST]);
+            mask->dst_port =
+                nl_attr_get_be16(attrs[TCA_FLOWER_KEY_SCTP_DST_MASK]);
+        }
     }
 }
 
@@ -1020,6 +1035,17 @@  nl_msg_put_flower_options(struct ofpbuf *request, struct tc_flower *flower)
                                     TCA_FLOWER_KEY_TCP_DST_MASK,
                                     &flower->key.dst_port,
                                     &flower->mask.dst_port, 2);
+        } else if (flower->key.ip_proto == IPPROTO_SCTP) {
+            nl_msg_put_masked_value(request,
+                                    TCA_FLOWER_KEY_SCTP_SRC,
+                                    TCA_FLOWER_KEY_SCTP_SRC_MASK,
+                                    &flower->key.src_port,
+                                    &flower->mask.src_port, 2);
+            nl_msg_put_masked_value(request,
+                                    TCA_FLOWER_KEY_SCTP_DST,
+                                    TCA_FLOWER_KEY_SCTP_DST_MASK,
+                                    &flower->key.dst_port,
+                                    &flower->mask.dst_port, 2);
         }
     }