From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
To: davem@davemloft.net
Cc: Mitch Williams <mitch.a.williams@intel.com>,
netdev@vger.kernel.org, gospo@redhat.com, sassmann@redhat.com,
Catherine Sullivan <catherine.sullivan@intel.com>,
Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Subject: [net-next 02/16] i40evf: correctly program RSS HLUT table
Date: Mon, 17 Mar 2014 05:45:02 -0700 [thread overview]
Message-ID: <1395060316-16897-3-git-send-email-jeffrey.t.kirsher@intel.com> (raw)
In-Reply-To: <1395060316-16897-1-git-send-email-jeffrey.t.kirsher@intel.com>
From: Mitch Williams <mitch.a.williams@intel.com>
The HLUT programming loop in in i40evf_configure_rss was a) overly-
complicated, and b) just plain broken. Most of the entries ended up being
not written at all, so most of the flows ended up at queue zero.
Refactor the HLUT programming loop to simply walk through the registers
and write four values to each one, incrementing through the number of
available queues.
Change-ID: I75766179bc67e4e997187794f3144e28c83fd00d
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/i40evf/i40evf_main.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index d62e27f..7cb0cda 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1414,6 +1414,7 @@ restart_watchdog:
schedule_work(&adapter->adminq_task);
}
+#define NEXT_QUEUE(_j) (++_j >= adapter->vsi_res->num_queue_pairs ? _j = 0 : _j)
/**
* i40evf_configure_rss - Prepare for RSS if used
* @adapter: board private structure
@@ -1444,15 +1445,13 @@ static void i40evf_configure_rss(struct i40evf_adapter *adapter)
wr32(hw, I40E_VFQF_HENA(1), (u32)(hena >> 32));
/* Populate the LUT with max no. of queues in round robin fashion */
- for (i = 0, j = 0; i < I40E_VFQF_HLUT_MAX_INDEX; i++, j++) {
- if (j == adapter->vsi_res->num_queue_pairs)
- j = 0;
- /* lut = 4-byte sliding window of 4 lut entries */
- lut = (lut << 8) | (j &
- ((0x1 << 8) - 1));
- /* On i = 3, we have 4 entries in lut; write to the register */
- if ((i & 3) == 3)
- wr32(hw, I40E_VFQF_HLUT(i >> 2), lut);
+ j = adapter->vsi_res->num_queue_pairs;
+ for (i = 0; i <= I40E_VFQF_HLUT_MAX_INDEX; i++) {
+ lut = NEXT_QUEUE(j);
+ lut |= NEXT_QUEUE(j) << 8;
+ lut |= NEXT_QUEUE(j) << 16;
+ lut |= NEXT_QUEUE(j) << 24;
+ wr32(hw, I40E_VFQF_HLUT(i), lut);
}
i40e_flush(hw);
}
--
1.8.3.1
next prev parent reply other threads:[~2014-03-17 12:45 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-17 12:45 [net-next 00/16][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2014-03-17 12:45 ` [net-next 01/16] i40e: support VF link state ndo Jeff Kirsher
2014-03-17 21:24 ` Or Gerlitz
2014-03-17 21:40 ` Williams, Mitch A
2014-03-17 12:45 ` Jeff Kirsher [this message]
2014-03-17 12:45 ` [net-next 03/16] i40evf: Support RSS option in ethtool Jeff Kirsher
2014-03-17 14:40 ` Or Gerlitz
2014-03-17 18:55 ` Williams, Mitch A
2014-03-17 21:19 ` Or Gerlitz
2014-03-17 18:53 ` Ben Hutchings
2014-03-17 18:55 ` Williams, Mitch A
2014-03-26 19:21 ` Williams, Mitch A
2014-03-28 0:14 ` Ben Hutchings
2014-03-28 17:05 ` Williams, Mitch A
2014-03-17 12:45 ` [net-next 04/16] i40evf: use min_t Jeff Kirsher
2014-03-17 12:45 ` [net-next 05/16] i40e: Patch to enable Ethtool/netdev feature flag for NTUPLE control Jeff Kirsher
2014-03-17 12:45 ` [net-next 06/16] i40e: Refactor and cleanup i40e_open(), adding i40e_vsi_open() Jeff Kirsher
2014-03-17 12:45 ` [net-next 07/16] i40e/i40evf: enable hardware feature head write back Jeff Kirsher
2014-03-17 12:45 ` [net-next 08/16] i40e/i40evf: reduce context descriptors Jeff Kirsher
2014-03-17 12:45 ` [net-next 09/16] i40e: potential array underflow in i40e_vc_process_vf_msg() Jeff Kirsher
2014-03-17 12:45 ` [net-next 10/16] i40e/i40evf: Bump build versions Jeff Kirsher
2014-03-17 12:45 ` [net-next 11/16] e1000e: Fix Hardware Unit Hang Jeff Kirsher
2014-03-17 12:45 ` [net-next 12/16] e1000e: Fix Explicitly set Transmit Control Register Jeff Kirsher
2014-03-17 12:45 ` [net-next 13/16] igb: Add register defines needed for time sync functions Jeff Kirsher
2014-03-17 12:45 ` [net-next 14/16] ixgbe: add ixgbe_write_pci_cfg_word with ixgbe_removed check Jeff Kirsher
2014-03-17 12:45 ` [net-next 15/16] ixgbevf: Indicate removal state explicitly Jeff Kirsher
2014-03-17 12:45 ` [net-next 16/16] ixgbevf: Protect ixgbevf_down with __IXGBEVF_DOWN bit Jeff Kirsher
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=1395060316-16897-3-git-send-email-jeffrey.t.kirsher@intel.com \
--to=jeffrey.t.kirsher@intel.com \
--cc=catherine.sullivan@intel.com \
--cc=davem@davemloft.net \
--cc=gospo@redhat.com \
--cc=mitch.a.williams@intel.com \
--cc=netdev@vger.kernel.org \
--cc=sassmann@redhat.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).