Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Feb 2016 21:58:14 +0000 (UTC)
From:      Eric Joyner <erj@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r295826 - head/sys/dev/ixl
Message-ID:  <201602192158.u1JLwEZg051556@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: erj
Date: Fri Feb 19 21:58:14 2016
New Revision: 295826
URL: https://svnweb.freebsd.org/changeset/base/295826

Log:
  ixl(4): Fix two important RSS bugs.
  
  - Change tc_mapping field to assign 64 queues instead of 16 to the PF's VSI;
    add comments to describe how this is done.
  
  - Set hash lut size to 512 when setting filter control; the lut size defaults
    to 128 if this isn't set.
  
  Differential Revision:	https://reviews.freebsd.org/D5203
  Reviewed by:	gallatin
  Tested by:	jeffrey.e.pieper@intel.com
  Sponsored by:	Intel Corporation

Modified:
  head/sys/dev/ixl/if_ixl.c

Modified: head/sys/dev/ixl/if_ixl.c
==============================================================================
--- head/sys/dev/ixl/if_ixl.c	Fri Feb 19 21:53:12 2016	(r295825)
+++ head/sys/dev/ixl/if_ixl.c	Fri Feb 19 21:58:14 2016	(r295826)
@@ -1175,6 +1175,7 @@ ixl_init_locked(struct ixl_pf *pf)
 #ifdef IXL_FDIR
 	filter.enable_fdir = TRUE;
 #endif
+	filter.hash_lut_size = I40E_HASH_LUT_SIZE_512;
 	if (i40e_set_filter_control(hw, &filter))
 		device_printf(dev, "set_filter_control() failed\n");
 
@@ -2758,8 +2759,17 @@ ixl_initialize_vsi(struct ixl_vsi *vsi)
 	*/
 	ctxt.info.valid_sections = I40E_AQ_VSI_PROP_QUEUE_MAP_VALID;
 	ctxt.info.mapping_flags |= I40E_AQ_VSI_QUE_MAP_CONTIG;
-	ctxt.info.queue_mapping[0] = 0; 
-	ctxt.info.tc_mapping[0] = 0x0800; 
+	/* In contig mode, que_mapping[0] is first queue index used by this VSI */
+	ctxt.info.queue_mapping[0] = 0;
+	/*
+	 * This VSI will only use traffic class 0; start traffic class 0's
+	 * queue allocation at queue 0, and assign it 64 (2^6) queues (though
+	 * the driver may not use all of them).
+	 */
+	ctxt.info.tc_mapping[0] = ((0 << I40E_AQ_VSI_TC_QUE_OFFSET_SHIFT)
+	    & I40E_AQ_VSI_TC_QUE_OFFSET_MASK) |
+	    ((6 << I40E_AQ_VSI_TC_QUE_NUMBER_SHIFT)
+	    & I40E_AQ_VSI_TC_QUE_NUMBER_MASK);
 
 	/* Set VLAN receive stripping mode */
 	ctxt.info.valid_sections |= I40E_AQ_VSI_PROP_VLAN_VALID;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201602192158.u1JLwEZg051556>