ixgbe: enable multicast on shutdown for WOL
Previously we only enabled the reception of multicast packets when wake on multicast is set, but we also need this to allow waking with IPv6 magic packets. Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
Родитель
f4803f1b73
Коммит
d9d11eb36f
|
@ -6791,7 +6791,7 @@ static int __ixgbe_shutdown(struct pci_dev *pdev, bool *enable_wake)
|
|||
struct ixgbe_adapter *adapter = pci_get_drvdata(pdev);
|
||||
struct net_device *netdev = adapter->netdev;
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
u32 ctrl, fctrl;
|
||||
u32 ctrl;
|
||||
u32 wufc = adapter->wol;
|
||||
#ifdef CONFIG_PM
|
||||
int retval = 0;
|
||||
|
@ -6816,18 +6816,18 @@ static int __ixgbe_shutdown(struct pci_dev *pdev, bool *enable_wake)
|
|||
hw->mac.ops.stop_link_on_d3(hw);
|
||||
|
||||
if (wufc) {
|
||||
u32 fctrl;
|
||||
|
||||
ixgbe_set_rx_mode(netdev);
|
||||
|
||||
/* enable the optics for 82599 SFP+ fiber as we can WoL */
|
||||
if (hw->mac.ops.enable_tx_laser)
|
||||
hw->mac.ops.enable_tx_laser(hw);
|
||||
|
||||
/* turn on all-multi mode if wake on multicast is enabled */
|
||||
if (wufc & IXGBE_WUFC_MC) {
|
||||
fctrl = IXGBE_READ_REG(hw, IXGBE_FCTRL);
|
||||
fctrl |= IXGBE_FCTRL_MPE;
|
||||
IXGBE_WRITE_REG(hw, IXGBE_FCTRL, fctrl);
|
||||
}
|
||||
/* enable the reception of multicast packets */
|
||||
fctrl = IXGBE_READ_REG(hw, IXGBE_FCTRL);
|
||||
fctrl |= IXGBE_FCTRL_MPE;
|
||||
IXGBE_WRITE_REG(hw, IXGBE_FCTRL, fctrl);
|
||||
|
||||
ctrl = IXGBE_READ_REG(hw, IXGBE_CTRL);
|
||||
ctrl |= IXGBE_CTRL_GIO_DIS;
|
||||
|
|
Загрузка…
Ссылка в новой задаче