diff options
author | Greg Rose | 2010-01-22 23:46:22 +0100 |
---|---|---|
committer | David S. Miller | 2010-01-23 10:13:55 +0100 |
commit | c9205697c7527173c8f8bfa9f8c9dabdbced3c49 (patch) | |
tree | bee9e69b62c7373fd050fed926d2116f8a097dd8 /drivers/net/ixgbe/ixgbe_main.c | |
parent | ixgbe: Remove unused emulation MAC storage from the per VF data structure. (diff) | |
download | kernel-qcow2-linux-c9205697c7527173c8f8bfa9f8c9dabdbced3c49.tar.gz kernel-qcow2-linux-c9205697c7527173c8f8bfa9f8c9dabdbced3c49.tar.xz kernel-qcow2-linux-c9205697c7527173c8f8bfa9f8c9dabdbced3c49.zip |
ixgbe: Allow the VF driver to be loaded before the PF driver
The PF Reset Done bit should not be set in the extended control register
until the PF has actually completed the bring up process. It is a mis-
interpretation of the purpose of this bit to assume it should be set
when the physical reset of the device is done. Instead it should be used
to indicate to the VFs when the PF is ready to provide them with required
services. This is not until after the PF is finished coming up and ready
to process mailbox events.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index b8fd81748602..b96afd98fa3d 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c @@ -2826,6 +2826,7 @@ static int ixgbe_up_complete(struct ixgbe_adapter *adapter) u32 txdctl, rxdctl, mhadd; u32 dmatxctl; u32 gpie; + u32 ctrl_ext; ixgbe_get_hw_control(adapter); @@ -3015,6 +3016,12 @@ static int ixgbe_up_complete(struct ixgbe_adapter *adapter) adapter->flags |= IXGBE_FLAG_NEED_LINK_UPDATE; adapter->link_check_timeout = jiffies; mod_timer(&adapter->watchdog_timer, jiffies); + + /* Set PF Reset Done bit so PF/VF Mail Ops can work */ + ctrl_ext = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT); + ctrl_ext |= IXGBE_CTRL_EXT_PFRSTD; + IXGBE_WRITE_REG(hw, IXGBE_CTRL_EXT, ctrl_ext); + return 0; } |