netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
To: davem@davemloft.net
Cc: Shannon Nelson <shannon.nelson@intel.com>,
	netdev@vger.kernel.org, nhorman@redhat.com, sassmann@redhat.com,
	jogreene@redhat.com, Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Subject: [net-next 16/17] i40e: get pf_id from HW rather than PCI function
Date: Fri, 21 Nov 2014 21:55:07 -0800	[thread overview]
Message-ID: <1416635708-4765-18-git-send-email-jeffrey.t.kirsher@intel.com> (raw)
In-Reply-To: <1416635708-4765-1-git-send-email-jeffrey.t.kirsher@intel.com>

From: Shannon Nelson <shannon.nelson@intel.com>

Getting the pf_id from the function number was a good place to start,
but when the PF was setup in passthru mode, the PCI bus/device/function
was virtualized and the number in the VM is different from the number in
the bare metal.  This caused HW configuration issues when the wrong pf_id
was used to set up the HMC and other structures.  The PF_FUNC_RID register
has the real bus/device/function information as configured by the BIOS,
so use that for a better number.  This works in NPAR mode as well.

Change-ID: I65e3dd6c97594890c2bad566b83cc670b1dae534
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Acked-by: Greg Rose <gregory.v.rose@intel.com>
Acked-by: Kevin Scott <kevin.c.scott@intel.com>
Tested-by: Jim Young <jamesx.m.young@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_common.c | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index ec63bcb..3d741ee 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -550,7 +550,7 @@ struct i40e_rx_ptype_decoded i40e_ptype_lookup[] = {
 i40e_status i40e_init_shared_code(struct i40e_hw *hw)
 {
 	i40e_status status = 0;
-	u32 reg;
+	u32 port, ari, func_rid;
 
 	i40e_set_mac_type(hw);
 
@@ -563,18 +563,17 @@ i40e_status i40e_init_shared_code(struct i40e_hw *hw)
 
 	hw->phy.get_link_info = true;
 
-	/* Determine port number */
-	reg = rd32(hw, I40E_PFGEN_PORTNUM);
-	reg = ((reg & I40E_PFGEN_PORTNUM_PORT_NUM_MASK) >>
-	       I40E_PFGEN_PORTNUM_PORT_NUM_SHIFT);
-	hw->port = (u8)reg;
-
-	/* Determine the PF number based on the PCI fn */
-	reg = rd32(hw, I40E_GLPCI_CAPSUP);
-	if (reg & I40E_GLPCI_CAPSUP_ARI_EN_MASK)
-		hw->pf_id = (u8)((hw->bus.device << 3) | hw->bus.func);
+	/* Determine port number and PF number*/
+	port = (rd32(hw, I40E_PFGEN_PORTNUM) & I40E_PFGEN_PORTNUM_PORT_NUM_MASK)
+					   >> I40E_PFGEN_PORTNUM_PORT_NUM_SHIFT;
+	hw->port = (u8)port;
+	ari = (rd32(hw, I40E_GLPCI_CAPSUP) & I40E_GLPCI_CAPSUP_ARI_EN_MASK) >>
+						 I40E_GLPCI_CAPSUP_ARI_EN_SHIFT;
+	func_rid = rd32(hw, I40E_PF_FUNC_RID);
+	if (ari)
+		hw->pf_id = (u8)(func_rid & 0xff);
 	else
-		hw->pf_id = (u8)hw->bus.func;
+		hw->pf_id = (u8)(func_rid & 0x7);
 
 	status = i40e_init_nvm(hw);
 	return status;
-- 
1.9.3

  parent reply	other threads:[~2014-11-22  5:55 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-22  5:54 [net-next 00/17][pull request] Intel Wired LAN Driver Updates 2014-11-21 Jeff Kirsher
2014-11-22  5:54 ` [net-next 01/17] i40e: Remove unneeded break statement Jeff Kirsher
2014-11-22  5:58   ` Jeff Kirsher
2014-11-22  5:54 ` Jeff Kirsher
2014-11-22  5:54 ` [net-next 02/17] i40e: remove useless debug noise Jeff Kirsher
2014-11-22  5:54 ` [net-next 03/17] i40e: allow various base numbers in debugfs aq commands Jeff Kirsher
2014-11-24 16:50   ` David Laight
2014-11-24 17:26     ` Nelson, Shannon
2014-11-22  5:54 ` [net-next 04/17] i40e: Add description to misc and fd interrupts Jeff Kirsher
2014-11-22  5:54 ` [net-next 05/17] i40e: don't enable PTP support on more than one PF per port Jeff Kirsher
2014-11-22  5:54 ` [net-next 06/17] i40e: Add a virtual channel op to config RSS Jeff Kirsher
2014-11-22  5:54 ` [net-next 07/17] i40e: Define and use i40e_is_vf macro Jeff Kirsher
2014-11-22  5:54 ` [net-next 08/17] i40e: fix netdev_stat macro definition Jeff Kirsher
2014-11-22  5:55 ` [net-next 09/17] i40evf: make early init sequence even more robust Jeff Kirsher
2014-11-22  5:55 ` [net-next 10/17] i40e: Increase reset delay Jeff Kirsher
2014-11-22  5:55 ` [net-next 11/17] i40e: Add new update VSI flow to accommodate FW fix with VSI Loopback mode Jeff Kirsher
2014-11-22  5:55 ` [net-next 12/17] i40e: Re enable Main VSI loopback setting in the reset path Jeff Kirsher
2014-11-22  5:55 ` [net-next 13/17] i40evf: refactor ethtool RSS handling Jeff Kirsher
2014-11-23  3:44   ` Ben Hutchings
2014-11-22  5:55 ` [net-next 14/17] i40e: implement ethtool RSS config Jeff Kirsher
2014-11-22 18:22   ` Eric Dumazet
2014-11-23  3:52     ` Ben Hutchings
2014-11-23  3:53   ` Ben Hutchings
2014-11-22  5:55 ` [net-next 15/17] i40e: increase ARQ size Jeff Kirsher
2014-11-22  5:55 ` Jeff Kirsher [this message]
2014-11-22  5:55 ` [net-next 17/17] i40e: Bump i40e version to 1.2.2 and i40evf version to 1.0.6 Jeff Kirsher
2014-11-23 19:22 ` [net-next 00/17][pull request] Intel Wired LAN Driver Updates 2014-11-21 David Miller

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=1416635708-4765-18-git-send-email-jeffrey.t.kirsher@intel.com \
    --to=jeffrey.t.kirsher@intel.com \
    --cc=davem@davemloft.net \
    --cc=jogreene@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@redhat.com \
    --cc=sassmann@redhat.com \
    --cc=shannon.nelson@intel.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).