From: Eddie Wai Date: Wed, 27 Jun 2012 15:08:20 +0000 (+0000) Subject: cnic: Read bnx2x function number from internal register X-Git-Tag: v2.6.39-400.9.0~338^2~123 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=09625c440c33e959a83ebb2b33dd2023ff3d0d6d;p=users%2Fjedix%2Flinux-maple.git cnic: Read bnx2x function number from internal register so that it will work on any hypervisor. (cherry picked from commit 78ea22e8042b8a55c5a047869ed1fd9b3711340c) Signed-off-by: Eddie Wai Signed-off-by: Michael Chan Signed-off-by: David S. Miller Signed-off-by: Joe Jin --- diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c index 5d7129d049bd..53bd5c58844e 100644 --- a/drivers/net/cnic.c +++ b/drivers/net/cnic.c @@ -4981,8 +4981,14 @@ static int cnic_start_bnx2x_hw(struct cnic_dev *dev) cp->port_mode = CHIP_PORT_MODE_NONE; if (BNX2X_CHIP_IS_E2_PLUS(cp->chip_id)) { - u32 val = CNIC_RD(dev, MISC_REG_PORT4MODE_EN_OVWR); + u32 val; + + pci_read_config_dword(dev->pcidev, PCICFG_ME_REGISTER, &val); + cp->func = (u8) ((val & ME_REG_ABS_PF_NUM) >> + ME_REG_ABS_PF_NUM_SHIFT); + func = CNIC_FUNC(cp); + val = CNIC_RD(dev, MISC_REG_PORT4MODE_EN_OVWR); if (!(val & 1)) val = CNIC_RD(dev, MISC_REG_PORT4MODE_EN); else