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

Commit 00ab2f3d authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

parents 4cf808eb f5e2a7b2
Loading
Loading
Loading
Loading
+2 −3
Original line number Original line Diff line number Diff line
@@ -2020,8 +2020,8 @@ config SIS190
	  will be called sis190.  This is recommended.
	  will be called sis190.  This is recommended.


config SKGE
config SKGE
	tristate "New SysKonnect GigaEthernet support (EXPERIMENTAL)"
	tristate "New SysKonnect GigaEthernet support"
	depends on PCI && EXPERIMENTAL
	depends on PCI
	select CRC32
	select CRC32
	---help---
	---help---
	  This driver support the Marvell Yukon or SysKonnect SK-98xx/SK-95xx
	  This driver support the Marvell Yukon or SysKonnect SK-98xx/SK-95xx
@@ -2082,7 +2082,6 @@ config SK98LIN
	    - Allied Telesyn AT-2971SX Gigabit Ethernet Adapter
	    - Allied Telesyn AT-2971SX Gigabit Ethernet Adapter
	    - Allied Telesyn AT-2971T Gigabit Ethernet Adapter
	    - Allied Telesyn AT-2971T Gigabit Ethernet Adapter
	    - Belkin Gigabit Desktop Card 10/100/1000Base-T Adapter, Copper RJ-45
	    - Belkin Gigabit Desktop Card 10/100/1000Base-T Adapter, Copper RJ-45
	    - DGE-530T Gigabit Ethernet Adapter
	    - EG1032 v2 Instant Gigabit Network Adapter
	    - EG1032 v2 Instant Gigabit Network Adapter
	    - EG1064 v2 Instant Gigabit Network Adapter
	    - EG1064 v2 Instant Gigabit Network Adapter
	    - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Abit)
	    - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Abit)
+1 −0
Original line number Original line Diff line number Diff line
@@ -1581,6 +1581,7 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev)
		printk(KERN_INFO DRV_NAME
		printk(KERN_INFO DRV_NAME
		       ": %s: %s not enslaved\n",
		       ": %s: %s not enslaved\n",
		       bond_dev->name, slave_dev->name);
		       bond_dev->name, slave_dev->name);
		write_unlock_bh(&bond->lock);
		return -EINVAL;
		return -EINVAL;
	}
	}


+2 −2
Original line number Original line Diff line number Diff line
@@ -1791,6 +1791,8 @@ static int __devinit sis190_init_one(struct pci_dev *pdev,
		goto out;
		goto out;
	}
	}


	pci_set_drvdata(pdev, dev);

	tp = netdev_priv(dev);
	tp = netdev_priv(dev);
	ioaddr = tp->mmio_addr;
	ioaddr = tp->mmio_addr;


@@ -1827,8 +1829,6 @@ static int __devinit sis190_init_one(struct pci_dev *pdev,
	if (rc < 0)
	if (rc < 0)
		goto err_remove_mii;
		goto err_remove_mii;


	pci_set_drvdata(pdev, dev);

	net_probe(tp, KERN_INFO "%s: %s at %p (IRQ: %d), "
	net_probe(tp, KERN_INFO "%s: %s at %p (IRQ: %d), "
	       "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n",
	       "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n",
	       pci_name(pdev), sis_chip_info[ent->driver_data].name,
	       pci_name(pdev), sis_chip_info[ent->driver_data].name,
+9 −1
Original line number Original line Diff line number Diff line
@@ -1697,6 +1697,7 @@ static void yukon_mac_init(struct skge_hw *hw, int port)
	skge_write32(hw, SK_REG(port, GPHY_CTRL), reg | GPC_RST_SET);
	skge_write32(hw, SK_REG(port, GPHY_CTRL), reg | GPC_RST_SET);
	skge_write32(hw, SK_REG(port, GPHY_CTRL), reg | GPC_RST_CLR);
	skge_write32(hw, SK_REG(port, GPHY_CTRL), reg | GPC_RST_CLR);
	skge_write32(hw, SK_REG(port, GMAC_CTRL), GMC_PAUSE_ON | GMC_RST_CLR);
	skge_write32(hw, SK_REG(port, GMAC_CTRL), GMC_PAUSE_ON | GMC_RST_CLR);

	if (skge->autoneg == AUTONEG_DISABLE) {
	if (skge->autoneg == AUTONEG_DISABLE) {
		reg = GM_GPCR_AU_ALL_DIS;
		reg = GM_GPCR_AU_ALL_DIS;
		gma_write16(hw, port, GM_GP_CTRL,
		gma_write16(hw, port, GM_GP_CTRL,
@@ -1704,16 +1705,23 @@ static void yukon_mac_init(struct skge_hw *hw, int port)


		switch (skge->speed) {
		switch (skge->speed) {
		case SPEED_1000:
		case SPEED_1000:
			reg &= ~GM_GPCR_SPEED_100;
			reg |= GM_GPCR_SPEED_1000;
			reg |= GM_GPCR_SPEED_1000;
			/* fallthru */
			break;
		case SPEED_100:
		case SPEED_100:
			reg &= ~GM_GPCR_SPEED_1000;
			reg |= GM_GPCR_SPEED_100;
			reg |= GM_GPCR_SPEED_100;
			break;
		case SPEED_10:
			reg &= ~(GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100);
			break;
		}
		}


		if (skge->duplex == DUPLEX_FULL)
		if (skge->duplex == DUPLEX_FULL)
			reg |= GM_GPCR_DUP_FULL;
			reg |= GM_GPCR_DUP_FULL;
	} else
	} else
		reg = GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100 | GM_GPCR_DUP_FULL;
		reg = GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100 | GM_GPCR_DUP_FULL;

	switch (skge->flow_control) {
	switch (skge->flow_control) {
	case FLOW_MODE_NONE:
	case FLOW_MODE_NONE:
		skge_write32(hw, SK_REG(port, GMAC_CTRL), GMC_PAUSE_OFF);
		skge_write32(hw, SK_REG(port, GMAC_CTRL), GMC_PAUSE_OFF);
+30 −1
Original line number Original line Diff line number Diff line
@@ -520,10 +520,16 @@ static void sky2_mac_init(struct sky2_hw *hw, unsigned port)


		switch (sky2->speed) {
		switch (sky2->speed) {
		case SPEED_1000:
		case SPEED_1000:
			reg &= ~GM_GPCR_SPEED_100;
			reg |= GM_GPCR_SPEED_1000;
			reg |= GM_GPCR_SPEED_1000;
			/* fallthru */
			break;
		case SPEED_100:
		case SPEED_100:
			reg &= ~GM_GPCR_SPEED_1000;
			reg |= GM_GPCR_SPEED_100;
			reg |= GM_GPCR_SPEED_100;
			break;
		case SPEED_10:
			reg &= ~(GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100);
			break;
		}
		}


		if (sky2->duplex == DUPLEX_FULL)
		if (sky2->duplex == DUPLEX_FULL)
@@ -1446,6 +1452,29 @@ static void sky2_link_up(struct sky2_port *sky2)
	sky2_write8(hw, SK_REG(port, GMAC_IRQ_MSK), GMAC_DEF_MSK);
	sky2_write8(hw, SK_REG(port, GMAC_IRQ_MSK), GMAC_DEF_MSK);


	reg = gma_read16(hw, port, GM_GP_CTRL);
	reg = gma_read16(hw, port, GM_GP_CTRL);
	if (sky2->autoneg == AUTONEG_DISABLE) {
		reg |= GM_GPCR_AU_ALL_DIS;

		/* Is write/read necessary?  Copied from sky2_mac_init */
		gma_write16(hw, port, GM_GP_CTRL, reg);
		gma_read16(hw, port, GM_GP_CTRL);

		switch (sky2->speed) {
		case SPEED_1000:
			reg &= ~GM_GPCR_SPEED_100;
			reg |= GM_GPCR_SPEED_1000;
			break;
		case SPEED_100:
			reg &= ~GM_GPCR_SPEED_1000;
			reg |= GM_GPCR_SPEED_100;
			break;
		case SPEED_10:
			reg &= ~(GM_GPCR_SPEED_1000 | GM_GPCR_SPEED_100);
			break;
		}
	} else
		reg &= ~GM_GPCR_AU_ALL_DIS;

	if (sky2->duplex == DUPLEX_FULL || sky2->autoneg == AUTONEG_ENABLE)
	if (sky2->duplex == DUPLEX_FULL || sky2->autoneg == AUTONEG_ENABLE)
		reg |= GM_GPCR_DUP_FULL;
		reg |= GM_GPCR_DUP_FULL;


Loading