diff options
author | jfv <jfv@FreeBSD.org> | 2015-01-16 19:11:58 +0000 |
---|---|---|
committer | jfv <jfv@FreeBSD.org> | 2015-01-16 19:11:58 +0000 |
commit | ce3bcc13cb3cd244fe97f19d5801ee86bc57f41e (patch) | |
tree | 2327f058634c6069027e96daaec69f817134eafb | |
parent | 5961fde4f1f3a419fe90af39fe7eb55223c8c0da (diff) | |
download | FreeBSD-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-x | sys/dev/ixl/if_ixl.c | 6 | ||||
-rw-r--r-- | sys/dev/ixl/if_ixlv.c | 12 | ||||
-rwxr-xr-x | sys/dev/ixl/ixl_txrx.c | 8 |
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) |