DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] ixgbe: fix x550 flow director issue
@ 2015-06-15  5:59 Wenzhuo Lu
  2015-06-15  7:19 ` Wu, Jingjing
  0 siblings, 1 reply; 3+ messages in thread
From: Wenzhuo Lu @ 2015-06-15  5:59 UTC (permalink / raw)
  To: dev

On x550, flow director doesn't support other IP packets directly.
If we want to monitor IP other packets, the L4 protocol and ports must
be masked. It means, on x550, if we want to add a flow director filter
for other IP packets, a flow director mask must have been configed to
mask L4 protocol and ports.

Return err when the user try to config a flow director filter for other
IP packets without flow director mask configed before. And print err log
for it.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
---
 drivers/net/ixgbe/ixgbe_fdir.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ixgbe/ixgbe_fdir.c b/drivers/net/ixgbe/ixgbe_fdir.c
index db48817..40824ba 100644
--- a/drivers/net/ixgbe/ixgbe_fdir.c
+++ b/drivers/net/ixgbe/ixgbe_fdir.c
@@ -334,9 +334,10 @@ fdir_set_input_mask_82599(struct rte_eth_dev *dev,
 	fdirtcpm = reverse_fdir_bitmasks(input_mask->dst_port_mask,
 					 input_mask->src_port_mask);
 
-	/* write both the same so that UDP and TCP use the same mask */
+	/* write all the same so that UDP, TCP and SCTP use the same mask */
 	IXGBE_WRITE_REG(hw, IXGBE_FDIRTCPM, ~fdirtcpm);
 	IXGBE_WRITE_REG(hw, IXGBE_FDIRUDPM, ~fdirtcpm);
+	IXGBE_WRITE_REG(hw, IXGBE_FDIRSCTPM, ~fdirtcpm);
 	info->mask.src_port_mask = input_mask->src_port_mask;
 	info->mask.dst_port_mask = input_mask->dst_port_mask;
 
@@ -899,10 +900,31 @@ ixgbe_add_del_fdir_filter(struct rte_eth_dev *dev,
 	uint8_t queue;
 	bool is_perfect = FALSE;
 	int err;
+	struct ixgbe_hw_fdir_info *info =
+			IXGBE_DEV_PRIVATE_TO_FDIR_INFO(dev->data->dev_private);
 
 	if (dev->data->dev_conf.fdir_conf.mode == RTE_FDIR_MODE_NONE)
 		return -ENOTSUP;
 
+	/*
+	 * Sanity check for x550.
+	 * When adding a new filter with flow type set to IPv4-other,
+	 * the flow director mask should be configed before,
+	 * and the L4 protocol and ports are masked.
+	 */
+	if ((!del) &&
+	    (hw->mac.type == ixgbe_mac_X550 ||
+	     hw->mac.type == ixgbe_mac_X550EM_x) &&
+	    (fdir_filter->input.flow_type ==
+	       RTE_ETH_FLOW_NONFRAG_IPV4_OTHER) &&
+	    (info->mask.src_port_mask != 0 ||
+	     info->mask.dst_port_mask != 0)) {
+		PMD_DRV_LOG(ERR, "By this device,"
+				 " IPv4-other is not supported without"
+				 " L4 protocol and ports masked!");
+		return -ENOTSUP;
+	}
+
 	if (dev->data->dev_conf.fdir_conf.mode == RTE_FDIR_MODE_PERFECT)
 		is_perfect = TRUE;
 
-- 
1.9.3

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-06-15 21:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-15  5:59 [dpdk-dev] [PATCH] ixgbe: fix x550 flow director issue Wenzhuo Lu
2015-06-15  7:19 ` Wu, Jingjing
2015-06-15 20:59   ` Thomas Monjalon

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).