From: Rasesh Mody <rasesh.mody@cavium.com>
To: <dev@dpdk.org>
Cc: Harish Patil <harish.patil@qlogic.com>, <Dept-EngDPDKDev@cavium.com>
Subject: [dpdk-dev] [PATCH 06/11] net/qede: remove IPV4/IPV6 as valid ntuple flows
Date: Tue, 25 Apr 2017 00:28:41 -0700 [thread overview]
Message-ID: <1493105326-31984-6-git-send-email-rasesh.mody@cavium.com> (raw)
In-Reply-To: <1493105326-31984-1-git-send-email-rasesh.mody@cavium.com>
From: Harish Patil <harish.patil@qlogic.com>
Firmware supports ntuple configuration which is always based on 4-tuples.
So remove RTE_ETH_FLOW_FRAG_IPV4 and RTE_ETH_FLOW_FRAG_IPV6 as valid flows.
Also merge the two switch statements into one.
Fixes: 622075356e8f ("net/qede: support ntuple and flow director filter")
Signed-off-by: Harish Patil <harish.patil@qlogic.com>
---
drivers/net/qede/qede_fdir.c | 93 +++++++++++++++++++-----------------------
1 file changed, 41 insertions(+), 52 deletions(-)
diff --git a/drivers/net/qede/qede_fdir.c b/drivers/net/qede/qede_fdir.c
index f0dc73a..18fb8d6 100644
--- a/drivers/net/qede/qede_fdir.c
+++ b/drivers/net/qede/qede_fdir.c
@@ -31,10 +31,8 @@
#endif
#define QEDE_VALID_FLOW(flow_type) \
- ((flow_type) == RTE_ETH_FLOW_FRAG_IPV4 || \
- (flow_type) == RTE_ETH_FLOW_NONFRAG_IPV4_TCP || \
+ ((flow_type) == RTE_ETH_FLOW_NONFRAG_IPV4_TCP || \
(flow_type) == RTE_ETH_FLOW_NONFRAG_IPV4_UDP || \
- (flow_type) == RTE_ETH_FLOW_FRAG_IPV6 || \
(flow_type) == RTE_ETH_FLOW_NONFRAG_IPV6_TCP || \
(flow_type) == RTE_ETH_FLOW_NONFRAG_IPV6_UDP)
@@ -274,10 +272,8 @@ void qede_fdir_dealloc_resc(struct rte_eth_dev *eth_dev)
uint8_t size, dst = 0;
uint16_t len;
static const uint8_t next_proto[] = {
- [RTE_ETH_FLOW_FRAG_IPV4] = IPPROTO_IP,
[RTE_ETH_FLOW_NONFRAG_IPV4_TCP] = IPPROTO_TCP,
[RTE_ETH_FLOW_NONFRAG_IPV4_UDP] = IPPROTO_UDP,
- [RTE_ETH_FLOW_FRAG_IPV6] = IPPROTO_NONE,
[RTE_ETH_FLOW_NONFRAG_IPV6_TCP] = IPPROTO_TCP,
[RTE_ETH_FLOW_NONFRAG_IPV6_UDP] = IPPROTO_UDP,
};
@@ -300,11 +296,10 @@ void qede_fdir_dealloc_resc(struct rte_eth_dev *eth_dev)
raw_pkt += sizeof(uint16_t);
len += sizeof(uint16_t);
- /* fill the common ip header */
switch (input->flow_type) {
case RTE_ETH_FLOW_NONFRAG_IPV4_TCP:
case RTE_ETH_FLOW_NONFRAG_IPV4_UDP:
- case RTE_ETH_FLOW_FRAG_IPV4:
+ /* fill the common ip header */
ip = (struct ipv4_hdr *)raw_pkt;
*ether_type = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
ip->version_ihl = QEDE_FDIR_IP_DEFAULT_VERSION_IHL;
@@ -320,10 +315,31 @@ void qede_fdir_dealloc_resc(struct rte_eth_dev *eth_dev)
ip->src_addr = input->flow.ip4_flow.src_ip;
len += sizeof(struct ipv4_hdr);
params->ipv4 = true;
+
+ raw_pkt = (uint8_t *)buff;
+ /* UDP */
+ if (input->flow_type == RTE_ETH_FLOW_NONFRAG_IPV4_UDP) {
+ udp = (struct udp_hdr *)(raw_pkt + len);
+ udp->dst_port = input->flow.udp4_flow.dst_port;
+ udp->src_port = input->flow.udp4_flow.src_port;
+ udp->dgram_len = sizeof(struct udp_hdr);
+ len += sizeof(struct udp_hdr);
+ /* adjust ip total_length */
+ ip->total_length += sizeof(struct udp_hdr);
+ params->udp = true;
+ } else { /* TCP */
+ tcp = (struct tcp_hdr *)(raw_pkt + len);
+ tcp->src_port = input->flow.tcp4_flow.src_port;
+ tcp->dst_port = input->flow.tcp4_flow.dst_port;
+ tcp->data_off = QEDE_FDIR_TCP_DEFAULT_DATAOFF;
+ len += sizeof(struct tcp_hdr);
+ /* adjust ip total_length */
+ ip->total_length += sizeof(struct tcp_hdr);
+ params->tcp = true;
+ }
break;
case RTE_ETH_FLOW_NONFRAG_IPV6_TCP:
case RTE_ETH_FLOW_NONFRAG_IPV6_UDP:
- case RTE_ETH_FLOW_FRAG_IPV6:
ip6 = (struct ipv6_hdr *)raw_pkt;
*ether_type = rte_cpu_to_be_16(ETHER_TYPE_IPv6);
ip6->proto = input->flow.ipv6_flow.proto ?
@@ -334,6 +350,23 @@ void qede_fdir_dealloc_resc(struct rte_eth_dev *eth_dev)
rte_memcpy(&ip6->dst_addr, &input->flow.ipv6_flow.src_ip,
IPV6_ADDR_LEN);
len += sizeof(struct ipv6_hdr);
+
+ raw_pkt = (uint8_t *)buff;
+ /* UDP */
+ if (input->flow_type == RTE_ETH_FLOW_NONFRAG_IPV6_UDP) {
+ udp = (struct udp_hdr *)(raw_pkt + len);
+ udp->src_port = input->flow.udp6_flow.dst_port;
+ udp->dst_port = input->flow.udp6_flow.src_port;
+ len += sizeof(struct udp_hdr);
+ params->udp = true;
+ } else { /* TCP */
+ tcp = (struct tcp_hdr *)(raw_pkt + len);
+ tcp->src_port = input->flow.tcp4_flow.src_port;
+ tcp->dst_port = input->flow.tcp4_flow.dst_port;
+ tcp->data_off = QEDE_FDIR_TCP_DEFAULT_DATAOFF;
+ len += sizeof(struct tcp_hdr);
+ params->tcp = true;
+ }
break;
default:
DP_ERR(edev, "Unsupported flow_type %u\n",
@@ -341,50 +374,6 @@ void qede_fdir_dealloc_resc(struct rte_eth_dev *eth_dev)
return 0;
}
- /* fill the L4 header */
- raw_pkt = (uint8_t *)buff;
- switch (input->flow_type) {
- case RTE_ETH_FLOW_NONFRAG_IPV4_UDP:
- udp = (struct udp_hdr *)(raw_pkt + len);
- udp->dst_port = input->flow.udp4_flow.dst_port;
- udp->src_port = input->flow.udp4_flow.src_port;
- udp->dgram_len = sizeof(struct udp_hdr);
- len += sizeof(struct udp_hdr);
- /* adjust ip total_length */
- ip->total_length += sizeof(struct udp_hdr);
- params->udp = true;
- break;
- case RTE_ETH_FLOW_NONFRAG_IPV4_TCP:
- tcp = (struct tcp_hdr *)(raw_pkt + len);
- tcp->src_port = input->flow.tcp4_flow.src_port;
- tcp->dst_port = input->flow.tcp4_flow.dst_port;
- tcp->data_off = QEDE_FDIR_TCP_DEFAULT_DATAOFF;
- len += sizeof(struct tcp_hdr);
- /* adjust ip total_length */
- ip->total_length += sizeof(struct tcp_hdr);
- params->tcp = true;
- break;
- case RTE_ETH_FLOW_NONFRAG_IPV6_TCP:
- tcp = (struct tcp_hdr *)(raw_pkt + len);
- tcp->data_off = QEDE_FDIR_TCP_DEFAULT_DATAOFF;
- tcp->src_port = input->flow.udp6_flow.src_port;
- tcp->dst_port = input->flow.udp6_flow.dst_port;
- /* adjust ip total_length */
- len += sizeof(struct tcp_hdr);
- params->tcp = true;
- break;
- case RTE_ETH_FLOW_NONFRAG_IPV6_UDP:
- udp = (struct udp_hdr *)(raw_pkt + len);
- udp->src_port = input->flow.udp6_flow.dst_port;
- udp->dst_port = input->flow.udp6_flow.src_port;
- /* adjust ip total_length */
- len += sizeof(struct udp_hdr);
- params->udp = true;
- break;
- default:
- DP_ERR(edev, "Unsupported flow_type %d\n", input->flow_type);
- return 0;
- }
return len;
}
--
1.7.10.3
next prev parent reply other threads:[~2017-04-25 7:29 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-25 7:28 [dpdk-dev] [PATCH 01/11] net/qede: fix default MAC address handling Rasesh Mody
2017-04-25 7:28 ` [dpdk-dev] [PATCH 02/11] net/qede: fix reset of fastpath rings after port stop Rasesh Mody
2017-04-25 7:28 ` [dpdk-dev] [PATCH 03/11] net/qede: fix LRO handling issue Rasesh Mody
2017-04-25 7:28 ` [dpdk-dev] [PATCH 04/11] net/qede: fix coverity detected defects Rasesh Mody
2017-04-25 7:28 ` [dpdk-dev] [PATCH 05/11] net/qede: use new stripped VLAN mbuf flags Rasesh Mody
2017-04-25 7:28 ` Rasesh Mody [this message]
2017-04-25 7:28 ` [dpdk-dev] [PATCH 07/11] net/qede: fix FW version string display for SRIOV Rasesh Mody
2017-04-25 7:28 ` [dpdk-dev] [PATCH 08/11] net/qede/base: fix coverity issues Rasesh Mody
2017-04-25 7:28 ` [dpdk-dev] [PATCH 09/11] net/qede/base: fix macro ecore mfw set field Rasesh Mody
2017-04-25 7:28 ` [dpdk-dev] [PATCH 10/11] net/qede/base: fix find zero bit macro Rasesh Mody
2017-04-25 7:28 ` [dpdk-dev] [PATCH 11/11] net/qede: fix to limit CFLAGS to base files Rasesh Mody
2017-05-02 6:15 ` [dpdk-dev] [dpdk-stable] " Yuanhan Liu
2017-05-04 0:14 ` Mody, Rasesh
2017-05-04 2:11 ` Yuanhan Liu
2017-05-07 5:15 ` Mody, Rasesh
2017-04-26 8:15 ` [dpdk-dev] [dpdk-stable] [PATCH 01/11] net/qede: fix default MAC address handling Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1493105326-31984-6-git-send-email-rasesh.mody@cavium.com \
--to=rasesh.mody@cavium.com \
--cc=Dept-EngDPDKDev@cavium.com \
--cc=dev@dpdk.org \
--cc=harish.patil@qlogic.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).