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

Commit 6c722e90 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (42 commits)
  r8169: extraneous Cmd{Tx/Rx}Enb write
  forcedeth: modified comment header
  NetXen: Reducing ring sizes for IOMMU issue.
  NetXen: Fix for PPC machines.
  NetXen: work queue fixes.
  NetXen: Link status message correction for quad port cards.
  NetXen: Multiple adapter fix.
  NetXen: Using correct CHECKSUM flag.
  NetXen: driver reload fix for newer firmware.
  NetXen: Adding new device ids.
  PHY probe not working properly for ibm_emac (PPC4xx)
  ep93xx: some minor cleanups to the ep93xx eth driver
  sky2: phy power down needs PCI config write enabled
  sky2: power management/MSI workaround
  sky2: dual port NAPI problem
  via-velocity uses INET interfaces
  e1000: Do not truncate TSO TCP header with 82544 workaround
  myri10ge: handle failures in suspend and resume
  myri10ge: no need to save MSI and PCIe state in the driver
  myri10ge: make msi configurable at runtime through sysfs
  ...
parents 007fb598 81f4e6c1
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -617,13 +617,15 @@ rx_next:
	 * this round of polling
	 * this round of polling
	 */
	 */
	if (rx_work) {
	if (rx_work) {
		unsigned long flags;

		if (cpr16(IntrStatus) & cp_rx_intr_mask)
		if (cpr16(IntrStatus) & cp_rx_intr_mask)
			goto rx_status_loop;
			goto rx_status_loop;


		local_irq_disable();
		local_irq_save(flags);
		cpw16_f(IntrMask, cp_intr_mask);
		cpw16_f(IntrMask, cp_intr_mask);
		__netif_rx_complete(dev);
		__netif_rx_complete(dev);
		local_irq_enable();
		local_irq_restore(flags);


		return 0;	/* done */
		return 0;	/* done */
	}
	}
+1 −3
Original line number Original line Diff line number Diff line
@@ -780,12 +780,10 @@ static struct ethtool_ops ep93xx_ethtool_ops = {
struct net_device *ep93xx_dev_alloc(struct ep93xx_eth_data *data)
struct net_device *ep93xx_dev_alloc(struct ep93xx_eth_data *data)
{
{
	struct net_device *dev;
	struct net_device *dev;
	struct ep93xx_priv *ep;


	dev = alloc_etherdev(sizeof(struct ep93xx_priv));
	dev = alloc_etherdev(sizeof(struct ep93xx_priv));
	if (dev == NULL)
	if (dev == NULL)
		return NULL;
		return NULL;
	ep = netdev_priv(dev);


	memcpy(dev->dev_addr, data->dev_addr, ETH_ALEN);
	memcpy(dev->dev_addr, data->dev_addr, ETH_ALEN);


@@ -840,9 +838,9 @@ static int ep93xx_eth_probe(struct platform_device *pdev)
	struct ep93xx_priv *ep;
	struct ep93xx_priv *ep;
	int err;
	int err;


	data = pdev->dev.platform_data;
	if (pdev == NULL)
	if (pdev == NULL)
		return -ENODEV;
		return -ENODEV;
	data = pdev->dev.platform_data;


	dev = ep93xx_dev_alloc(data);
	dev = ep93xx_dev_alloc(data);
	if (dev == NULL) {
	if (dev == NULL) {
+4 −2
Original line number Original line Diff line number Diff line
@@ -879,12 +879,14 @@ static int b44_poll(struct net_device *netdev, int *budget)
	}
	}


	if (bp->istat & ISTAT_ERRORS) {
	if (bp->istat & ISTAT_ERRORS) {
		spin_lock_irq(&bp->lock);
		unsigned long flags;

		spin_lock_irqsave(&bp->lock, flags);
		b44_halt(bp);
		b44_halt(bp);
		b44_init_rings(bp);
		b44_init_rings(bp);
		b44_init_hw(bp, 1);
		b44_init_hw(bp, 1);
		netif_wake_queue(bp->dev);
		netif_wake_queue(bp->dev);
		spin_unlock_irq(&bp->lock);
		spin_unlock_irqrestore(&bp->lock, flags);
		done = 1;
		done = 1;
	}
	}


+3 −0
Original line number Original line Diff line number Diff line
@@ -100,6 +100,9 @@ static const struct e1000_stats e1000_gstrings_stats[] = {
	{ "rx_csum_offload_errors", E1000_STAT(hw_csum_err) },
	{ "rx_csum_offload_errors", E1000_STAT(hw_csum_err) },
	{ "rx_header_split", E1000_STAT(rx_hdr_split) },
	{ "rx_header_split", E1000_STAT(rx_hdr_split) },
	{ "alloc_rx_buff_failed", E1000_STAT(alloc_rx_buff_failed) },
	{ "alloc_rx_buff_failed", E1000_STAT(alloc_rx_buff_failed) },
	{ "tx_smbus", E1000_STAT(stats.mgptc) },
	{ "rx_smbus", E1000_STAT(stats.mgprc) },
	{ "dropped_smbus", E1000_STAT(stats.mgpdc) },
};
};


#define E1000_QUEUE_STATS_LEN 0
#define E1000_QUEUE_STATS_LEN 0
+157 −139
Original line number Original line Diff line number Diff line
@@ -442,6 +442,25 @@ e1000_set_mac_type(struct e1000_hw *hw)
		break;
		break;
	}
	}


	/* The 82543 chip does not count tx_carrier_errors properly in
	 * FD mode
	 */
	if (hw->mac_type == e1000_82543)
		hw->bad_tx_carr_stats_fd = TRUE;

	/* capable of receiving management packets to the host */
	if (hw->mac_type >= e1000_82571)
		hw->has_manc2h = TRUE;

	/* In rare occasions, ESB2 systems would end up started without
	 * the RX unit being turned on.
	 */
	if (hw->mac_type == e1000_80003es2lan)
		hw->rx_needs_kicking = TRUE;

	if (hw->mac_type > e1000_82544)
		hw->has_smbus = TRUE;

	return E1000_SUCCESS;
	return E1000_SUCCESS;
}
}


@@ -6575,7 +6594,7 @@ e1000_get_bus_info(struct e1000_hw *hw)
    switch (hw->mac_type) {
    switch (hw->mac_type) {
    case e1000_82542_rev2_0:
    case e1000_82542_rev2_0:
    case e1000_82542_rev2_1:
    case e1000_82542_rev2_1:
        hw->bus_type = e1000_bus_type_unknown;
        hw->bus_type = e1000_bus_type_pci;
        hw->bus_speed = e1000_bus_speed_unknown;
        hw->bus_speed = e1000_bus_speed_unknown;
        hw->bus_width = e1000_bus_width_unknown;
        hw->bus_width = e1000_bus_width_unknown;
        break;
        break;
@@ -7817,9 +7836,8 @@ e1000_enable_mng_pass_thru(struct e1000_hw *hw)
            fwsm = E1000_READ_REG(hw, FWSM);
            fwsm = E1000_READ_REG(hw, FWSM);
            factps = E1000_READ_REG(hw, FACTPS);
            factps = E1000_READ_REG(hw, FACTPS);


            if (((fwsm & E1000_FWSM_MODE_MASK) ==
            if ((((fwsm & E1000_FWSM_MODE_MASK) >> E1000_FWSM_MODE_SHIFT) ==
                (e1000_mng_mode_pt << E1000_FWSM_MODE_SHIFT)) &&
                   e1000_mng_mode_pt) && !(factps & E1000_FACTPS_MNGCG))
                (factps & E1000_FACTPS_MNGCG))
                return TRUE;
                return TRUE;
        } else
        } else
            if ((manc & E1000_MANC_SMBUS_EN) && !(manc & E1000_MANC_ASF_EN))
            if ((manc & E1000_MANC_SMBUS_EN) && !(manc & E1000_MANC_ASF_EN))
Loading