summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjfv <jfv@FreeBSD.org>2015-01-16 19:11:58 +0000
committerjfv <jfv@FreeBSD.org>2015-01-16 19:11:58 +0000
commitce3bcc13cb3cd244fe97f19d5801ee86bc57f41e (patch)
tree2327f058634c6069027e96daaec69f817134eafb
parent5961fde4f1f3a419fe90af39fe7eb55223c8c0da (diff)
downloadFreeBSD-src-ce3bcc13cb3cd244fe97f19d5801ee86bc57f41e.zip
FreeBSD-src-ce3bcc13cb3cd244fe97f19d5801ee86bc57f41e.tar.gz
Some RSS issues discovered by Adrian, missing header, variable
names fat fingered, incorrect hash config setup. Thanks :) MFC after: 1 week
-rwxr-xr-xsys/dev/ixl/if_ixl.c6
-rw-r--r--sys/dev/ixl/if_ixlv.c12
-rwxr-xr-xsys/dev/ixl/ixl_txrx.c8
3 files changed, 19 insertions, 7 deletions
diff --git a/sys/dev/ixl/if_ixl.c b/sys/dev/ixl/if_ixl.c
index 146c866..da3b38b 100755
--- a/sys/dev/ixl/if_ixl.c
+++ b/sys/dev/ixl/if_ixl.c
@@ -38,6 +38,10 @@
#include "ixl.h"
#include "ixl_pf.h"
+#ifdef RSS
+#include <net/rss_config.h>
+#endif
+
/*********************************************************************
* Driver version
*********************************************************************/
@@ -3249,7 +3253,7 @@ static void ixl_config_rss(struct ixl_vsi *vsi)
* num_queues.)
*/
que_id = rss_get_indirection_to_bucket(i);
- que_id = que_id % adapter->num_queues;
+ que_id = que_id % vsi->num_queues;
#else
que_id = j;
#endif
diff --git a/sys/dev/ixl/if_ixlv.c b/sys/dev/ixl/if_ixlv.c
index 1a8e23a..523c7ce 100644
--- a/sys/dev/ixl/if_ixlv.c
+++ b/sys/dev/ixl/if_ixlv.c
@@ -38,10 +38,14 @@
#include "ixl.h"
#include "ixlv.h"
+#ifdef RSS
+#include <net/rss_config.h>
+#endif
+
/*********************************************************************
* Driver version
*********************************************************************/
-char ixlv_driver_version[] = "1.2.0";
+char ixlv_driver_version[] = "1.2.1";
/*********************************************************************
* PCI Device ID Table
@@ -2596,12 +2600,12 @@ ixlv_config_rss(struct ixlv_sc *sc)
set_hena |= ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_UDP);
if (rss_hash_config & RSS_HASHTYPE_RSS_IPV6)
set_hena |= ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_OTHER);
+ if (rss_hash_config & RSS_HASHTYPE_RSS_IPV6_EX)
+ set_hena |= ((u64)1 << I40E_FILTER_PCTYPE_FRAG_IPV6);
if (rss_hash_config & RSS_HASHTYPE_RSS_TCP_IPV6)
set_hena |= ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_TCP);
if (rss_hash_config & RSS_HASHTYPE_RSS_UDP_IPV6)
set_hena |= ((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV6_UDP);
- if (rss_hash_config & RSS_HASHTYPE_RSS_UDP_IPV6_EX)
- set_hena |= IXGBE_MRQC_RSS_FIELD_IPV6_EX_UDP;
#else
set_hena =
((u64)1 << I40E_FILTER_PCTYPE_NONF_IPV4_UDP) |
@@ -2633,7 +2637,7 @@ ixlv_config_rss(struct ixlv_sc *sc)
* num_queues.)
*/
que_id = rss_get_indirection_to_bucket(i);
- que_id = que_id % adapter->num_queues;
+ que_id = que_id % vsi->num_queues;
#else
que_id = j;
#endif
diff --git a/sys/dev/ixl/ixl_txrx.c b/sys/dev/ixl/ixl_txrx.c
index a93ffdb..0ba9685 100755
--- a/sys/dev/ixl/ixl_txrx.c
+++ b/sys/dev/ixl/ixl_txrx.c
@@ -43,6 +43,10 @@
#include "opt_rss.h"
#include "ixl.h"
+#ifdef RSS
+#include <net/rss_config.h>
+#endif
+
/* Local Prototypes */
static void ixl_rx_checksum(struct mbuf *, u32, u32, u8);
static void ixl_refresh_mbufs(struct ixl_queue *, int);
@@ -1367,7 +1371,7 @@ ixl_rx_discard(struct rx_ring *rxr, int i)
#ifdef RSS
/*
-** i40e_ptype_to_hash: parse the packet type
+** ixl_ptype_to_hash: parse the packet type
** to determine the appropriate hash.
*/
static inline int
@@ -1376,7 +1380,7 @@ ixl_ptype_to_hash(u8 ptype)
struct i40e_rx_ptype_decoded decoded;
u8 ex = 0
- decode = decode_rx_desc_ptype(ptype);
+ decoded = decode_rx_desc_ptype(ptype);
ex = decoded.outer_frag;
if (!decoded.known)
OpenPOWER on IntegriCloud