Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56845d78 authored by David S. Miller's avatar David S. Miller
Browse files


Conflicts:
	drivers/net/ethernet/atheros/atlx/atl1.c
	drivers/net/ethernet/atheros/atlx/atl1.h

Resolved a conflict between a DMA error bug fix and NAPI
support changes in the atl1 driver.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents df8ef8f3 8a9a0ea6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -7572,8 +7572,8 @@ F: Documentation/filesystems/xfs.txt
F:	fs/xfs/

XILINX AXI ETHERNET DRIVER
M:	Ariane Keller <ariane.keller@tik.ee.ethz.ch>
M:	Daniel Borkmann <daniel.borkmann@tik.ee.ethz.ch>
M:	Anirudha Sarangi <anirudh@xilinx.com>
M:	John Linn <John.Linn@xilinx.com>
S:	Maintained
F:	drivers/net/ethernet/xilinx/xilinx_axienet*

+5 −7
Original line number Diff line number Diff line
@@ -2528,7 +2528,7 @@ static irqreturn_t atl1_intr(int irq, void *data)
				"pcie phy link down %x\n", status);
		if (netif_running(adapter->netdev)) {	/* reset MAC */
			atlx_irq_disable(adapter);
			schedule_work(&adapter->pcie_dma_to_rst_task);
			schedule_work(&adapter->reset_dev_task);
			return IRQ_HANDLED;
		}
	}
@@ -2540,7 +2540,7 @@ static irqreturn_t atl1_intr(int irq, void *data)
				"pcie DMA r/w error (status = 0x%x)\n",
				status);
		atlx_irq_disable(adapter);
		schedule_work(&adapter->pcie_dma_to_rst_task);
		schedule_work(&adapter->reset_dev_task);
		return IRQ_HANDLED;
	}

@@ -2681,10 +2681,10 @@ static void atl1_down(struct atl1_adapter *adapter)
	atl1_clean_rx_ring(adapter);
}

static void atl1_tx_timeout_task(struct work_struct *work)
static void atl1_reset_dev_task(struct work_struct *work)
{
	struct atl1_adapter *adapter =
		container_of(work, struct atl1_adapter, tx_timeout_task);
		container_of(work, struct atl1_adapter, reset_dev_task);
	struct net_device *netdev = adapter->netdev;

	netif_device_detach(netdev);
@@ -3087,12 +3087,10 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
		    (unsigned long)adapter);
	adapter->phy_timer_pending = false;

	INIT_WORK(&adapter->tx_timeout_task, atl1_tx_timeout_task);
	INIT_WORK(&adapter->reset_dev_task, atl1_reset_dev_task);

	INIT_WORK(&adapter->link_chg_task, atlx_link_chg_task);

	INIT_WORK(&adapter->pcie_dma_to_rst_task, atl1_tx_timeout_task);

	err = register_netdev(netdev);
	if (err)
		goto err_common;
+1 −1
Original line number Diff line number Diff line
@@ -764,8 +764,8 @@ struct atl1_adapter {
	spinlock_t lock;
	struct napi_struct napi;
	struct work_struct tx_timeout_task;
	struct work_struct reset_dev_task;
	struct work_struct link_chg_task;
	struct work_struct pcie_dma_to_rst_task;

	struct timer_list phy_config_timer;
	bool phy_timer_pending;
+1 −1
Original line number Diff line number Diff line
@@ -201,7 +201,7 @@ static void atlx_tx_timeout(struct net_device *netdev)
{
	struct atlx_adapter *adapter = netdev_priv(netdev);
	/* Do the reset outside of interrupt context */
	schedule_work(&adapter->tx_timeout_task);
	schedule_work(&adapter->reset_dev_task);
}

/*
+10 −5
Original line number Diff line number Diff line
@@ -1310,10 +1310,6 @@ static s32 e1000_oem_bits_config_ich8lan(struct e1000_hw *hw, bool d0_state)

		if (mac_reg & E1000_PHY_CTRL_D0A_LPLU)
			oem_reg |= HV_OEM_BITS_LPLU;

		/* Set Restart auto-neg to activate the bits */
		if (!hw->phy.ops.check_reset_block(hw))
			oem_reg |= HV_OEM_BITS_RESTART_AN;
	} else {
		if (mac_reg & (E1000_PHY_CTRL_GBE_DISABLE |
			       E1000_PHY_CTRL_NOND0A_GBE_DISABLE))
@@ -1324,6 +1320,11 @@ static s32 e1000_oem_bits_config_ich8lan(struct e1000_hw *hw, bool d0_state)
			oem_reg |= HV_OEM_BITS_LPLU;
	}

	/* Set Restart auto-neg to activate the bits */
	if ((d0_state || (hw->mac.type != e1000_pchlan)) &&
	    !hw->phy.ops.check_reset_block(hw))
		oem_reg |= HV_OEM_BITS_RESTART_AN;

	ret_val = hw->phy.ops.write_reg_locked(hw, HV_OEM_BITS, oem_reg);

release:
@@ -3682,7 +3683,11 @@ void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw)

	if (hw->mac.type >= e1000_pchlan) {
		e1000_oem_bits_config_ich8lan(hw, false);
		e1000_phy_hw_reset_ich8lan(hw);

		/* Reset PHY to activate OEM bits on 82577/8 */
		if (hw->mac.type == e1000_pchlan)
			e1000e_phy_hw_reset_generic(hw);

		ret_val = hw->phy.ops.acquire(hw);
		if (ret_val)
			return;
Loading