diff options
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index b96afd98fa3d..ee41d331a35f 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -3203,6 +3203,17 @@ void ixgbe_down(struct ixgbe_adapter *adapter) | |||
3203 | /* signal that we are down to the interrupt handler */ | 3203 | /* signal that we are down to the interrupt handler */ |
3204 | set_bit(__IXGBE_DOWN, &adapter->state); | 3204 | set_bit(__IXGBE_DOWN, &adapter->state); |
3205 | 3205 | ||
3206 | /* disable receive for all VFs and wait one second */ | ||
3207 | if (adapter->num_vfs) { | ||
3208 | for (i = 0 ; i < adapter->num_vfs; i++) | ||
3209 | adapter->vfinfo[i].clear_to_send = 0; | ||
3210 | |||
3211 | /* ping all the active vfs to let them know we are going down */ | ||
3212 | ixgbe_ping_all_vfs(adapter); | ||
3213 | /* Disable all VFTE/VFRE TX/RX */ | ||
3214 | ixgbe_disable_tx_rx(adapter); | ||
3215 | } | ||
3216 | |||
3206 | /* disable receives */ | 3217 | /* disable receives */ |
3207 | rxctrl = IXGBE_READ_REG(hw, IXGBE_RXCTRL); | 3218 | rxctrl = IXGBE_READ_REG(hw, IXGBE_RXCTRL); |
3208 | IXGBE_WRITE_REG(hw, IXGBE_RXCTRL, rxctrl & ~IXGBE_RXCTRL_RXEN); | 3219 | IXGBE_WRITE_REG(hw, IXGBE_RXCTRL, rxctrl & ~IXGBE_RXCTRL_RXEN); |