From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id B068E2C4B for ; Thu, 27 Apr 2017 06:53:16 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP; 26 Apr 2017 21:53:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.37,257,1488873600"; d="scan'208";a="1123941573" Received: from fyigit-mobl1.ger.corp.intel.com (HELO [10.106.152.59]) ([10.106.152.59]) by orsmga001.jf.intel.com with ESMTP; 26 Apr 2017 21:53:11 -0700 To: Wei Zhao , dev@dpdk.org References: <1493262879-47696-1-git-send-email-wei.zhao1@intel.com> From: Ferruh Yigit Message-ID: Date: Thu, 27 Apr 2017 05:53:10 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.0.1 MIME-Version: 1.0 In-Reply-To: <1493262879-47696-1-git-send-email-wei.zhao1@intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH] net/ixgbe: fix ntuple filter support for sctp X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 Apr 2017 04:53:18 -0000 On 4/27/2017 4:14 AM, Wei Zhao wrote: > Add the support of RTE_FLOW_ITEM_TYPE_SCTP type packet for > ixgbe ntuple filter. The function comment also should be updated for this pattern type. And is this a fix or adding new type support? If this is not fixing something existing, lets postpone this to next release. > > Fixes: 672be56d76a ("net/ixgbe: parse n-tuple filter") > > Signed-off-by: Wei Zhao > --- > drivers/net/ixgbe/ixgbe_flow.c | 27 ++++++++++++++++++++++++++- > 1 file changed, 26 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ixgbe/ixgbe_flow.c b/drivers/net/ixgbe/ixgbe_flow.c > index e2ba9c2..2c18bcd 100644 > --- a/drivers/net/ixgbe/ixgbe_flow.c > +++ b/drivers/net/ixgbe/ixgbe_flow.c > @@ -142,6 +142,8 @@ cons_parse_ntuple_filter(const struct rte_flow_attr *attr, > const struct rte_flow_item_tcp *tcp_mask; > const struct rte_flow_item_udp *udp_spec; > const struct rte_flow_item_udp *udp_mask; > + const struct rte_flow_item_sctp *sctp_spec; > + const struct rte_flow_item_sctp *sctp_mask; > uint32_t index; > > if (!pattern) { > @@ -319,7 +321,7 @@ cons_parse_ntuple_filter(const struct rte_flow_attr *attr, > filter->dst_port = tcp_spec->hdr.dst_port; > filter->src_port = tcp_spec->hdr.src_port; > filter->tcp_flags = tcp_spec->hdr.tcp_flags; > - } else { > + } else if (item->type == RTE_FLOW_ITEM_TYPE_UDP) { > udp_mask = (const struct rte_flow_item_udp *)item->mask; > > /** > @@ -342,6 +344,29 @@ cons_parse_ntuple_filter(const struct rte_flow_attr *attr, > udp_spec = (const struct rte_flow_item_udp *)item->spec; > filter->dst_port = udp_spec->hdr.dst_port; > filter->src_port = udp_spec->hdr.src_port; > + } else { There is a check for this item if it is TCP or UDP, else it returns an error (in line 255), so it should not be hitting this else at all, am I missing something? > + sctp_mask = (const struct rte_flow_item_sctp *)item->mask; > + > + /** > + * Only support src & dst ports, > + * others should be masked. > + */ > + if (sctp_mask->hdr.tag || > + sctp_mask->hdr.cksum) { > + memset(filter, 0, > + sizeof(struct rte_eth_ntuple_filter)); > + rte_flow_error_set(error, EINVAL, > + RTE_FLOW_ERROR_TYPE_ITEM, > + item, "Not supported by ntuple filter"); > + return -rte_errno; > + } > + > + filter->dst_port_mask = sctp_mask->hdr.dst_port; > + filter->src_port_mask = sctp_mask->hdr.src_port; > + > + sctp_spec = (const struct rte_flow_item_sctp *)item->spec; > + filter->dst_port = sctp_spec->hdr.dst_port; > + filter->src_port = sctp_spec->hdr.src_port; > } > > /* check if the next not void item is END */ >