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

Commit 6672d90f authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull networking fixes from David S Miller:

 1) Netfilter xt_limit module can use uninitialized rules, from Jan
    Engelhardt.

 2) Wei Yongjun has found several more spots where error pointers were
    treated as NULL/non-NULL and vice versa.

 3) bnx2x was converted to pci_io{,un}map() but one remaining plain
    iounmap() got missed.  From Neil Horman.

 4) Due to a fence-post type error in initialization of inetpeer entries
    (which is where we store the ICMP rate limiting information), we can
    erroneously drop ICMPs if the inetpeer was created right around when
    jiffies wraps.

    Fix from Nicolas Dichtel.

 5) smsc75xx resume fix from Steve Glendinnig.

 6) LAN87xx smsc chips need an explicit hardware init, from Marek Vasut.

 7) qlcnic uses msleep() with locks held, fix from Narendra K.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
  netdev: octeon: fix return value check in octeon_mgmt_init_phy()
  inetpeer: fix token initialization
  qlcnic: Fix scheduling while atomic bug
  bnx2: Clean up remaining iounmap
  net: phy: smsc: Implement PHY config_init for LAN87xx
  smsc75xx: fix resume after device reset
  netdev: pasemi: fix return value check in pasemi_mac_phy_init()
  team: fix return value check
  l2tp: fix return value check
  netfilter: xt_limit: have r->cost != 0 case work
parents 7596824e df555b66
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -8564,7 +8564,7 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
	return 0;

error:
	iounmap(bp->regview);
	pci_iounmap(pdev, bp->regview);
	pci_release_regions(pdev);
	pci_disable_device(pdev);
	pci_set_drvdata(pdev, NULL);
+1 −3
Original line number Diff line number Diff line
@@ -722,10 +722,8 @@ static int octeon_mgmt_init_phy(struct net_device *netdev)
				   octeon_mgmt_adjust_link, 0,
				   PHY_INTERFACE_MODE_MII);

	if (IS_ERR(p->phydev)) {
		p->phydev = NULL;
	if (!p->phydev)
		return -1;
	}

	phy_start_aneg(p->phydev);

+2 −2
Original line number Diff line number Diff line
@@ -1101,9 +1101,9 @@ static int pasemi_mac_phy_init(struct net_device *dev)
	phydev = of_phy_connect(dev, phy_dn, &pasemi_adjust_link, 0,
				PHY_INTERFACE_MODE_SGMII);

	if (IS_ERR(phydev)) {
	if (!phydev) {
		printk(KERN_ERR "%s: Could not attach to phy\n", dev->name);
		return PTR_ERR(phydev);
		return -ENODEV;
	}

	mac->phydev = phydev;
+2 −2
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ qlcnic_poll_rsp(struct qlcnic_adapter *adapter)

	do {
		/* give atleast 1ms for firmware to respond */
		msleep(1);
		mdelay(1);

		if (++timeout > QLCNIC_OS_CRB_RETRY_COUNT)
			return QLCNIC_CDRP_RSP_TIMEOUT;
@@ -601,7 +601,7 @@ void qlcnic_fw_destroy_ctx(struct qlcnic_adapter *adapter)
		qlcnic_fw_cmd_destroy_tx_ctx(adapter);

		/* Allow dma queues to drain after context reset */
		msleep(20);
		mdelay(20);
	}
}

+27 −1
Original line number Diff line number Diff line
@@ -56,6 +56,32 @@ static int smsc_phy_config_init(struct phy_device *phydev)
	return smsc_phy_ack_interrupt (phydev);
}

static int lan87xx_config_init(struct phy_device *phydev)
{
	/*
	 * Make sure the EDPWRDOWN bit is NOT set. Setting this bit on
	 * LAN8710/LAN8720 PHY causes the PHY to misbehave, likely due
	 * to a bug on the chip.
	 *
	 * When the system is powered on with the network cable being
	 * disconnected all the way until after ifconfig ethX up is
	 * issued for the LAN port with this PHY, connecting the cable
	 * afterwards does not cause LINK change detection, while the
	 * expected behavior is the Link UP being detected.
	 */
	int rc = phy_read(phydev, MII_LAN83C185_CTRL_STATUS);
	if (rc < 0)
		return rc;

	rc &= ~MII_LAN83C185_EDPWRDOWN;

	rc = phy_write(phydev, MII_LAN83C185_CTRL_STATUS, rc);
	if (rc < 0)
		return rc;

	return smsc_phy_ack_interrupt(phydev);
}

static int lan911x_config_init(struct phy_device *phydev)
{
	return smsc_phy_ack_interrupt(phydev);
@@ -162,7 +188,7 @@ static struct phy_driver smsc_phy_driver[] = {
	/* basic functions */
	.config_aneg	= genphy_config_aneg,
	.read_status	= genphy_read_status,
	.config_init	= smsc_phy_config_init,
	.config_init	= lan87xx_config_init,

	/* IRQ related */
	.ack_interrupt	= smsc_phy_ack_interrupt,
Loading