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

Commit 7391daf2 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull networking fixes from David Miller:
 "Some straggler bug fixes:

   1) Batman-adv DAT must consider VLAN IDs when choosing candidate
      nodes, from Antonio Quartulli.

   2) Fix botched reference counting of vlan objects and neigh nodes in
      batman-adv, from Sven Eckelmann.

   3) netem can crash when it sees GSO packets, the fix is to segment
      then upon ->enqueue.  Fix from Neil Horman with help from Eric
      Dumazet.

   4) Fix VXLAN dependencies in mlx5 driver Kconfig, from Matthew
      Finlay.

   5) Handle VXLAN ops outside of rcu lock, via a workqueue, in mlx5,
      since it can sleep.  Fix also from Matthew Finlay.

   6) Check mdiobus_scan() return values properly in pxa168_eth and macb
      drivers.  From Sergei Shtylyov.

   7) If the netdevice doesn't support checksumming, disable
      segmentation.  From Alexandery Duyck.

   8) Fix races between RDS tcp accept and sending, from Sowmini
      Varadhan.

   9) In macb driver, probe MDIO bus before we register the netdev,
      otherwise we can try to open the device before it is really ready
      for that.  Fix from Florian Fainelli.

  10) Netlink attribute size for ILA "tunnels" not calculated properly,
      fix from Nicolas Dichtel"

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
  ipv6/ila: fix nlsize calculation for lwtunnel
  net: macb: Probe MDIO bus before registering netdev
  RDS: TCP: Synchronize accept() and connect() paths on t_conn_lock.
  RDS:TCP: Synchronize rds_tcp_accept_one with rds_send_xmit when resetting t_sock
  vxlan: Add checksum check to the features check function
  net: Disable segmentation if checksumming is not supported
  net: mvneta: Remove superfluous SMP function call
  macb: fix mdiobus_scan() error check
  pxa168_eth: fix mdiobus_scan() error check
  net/mlx5e: Use workqueue for vxlan ops
  net/mlx5e: Implement a mlx5e workqueue
  net/mlx5: Kconfig: Fix MLX5_EN/VXLAN build issue
  net/mlx5: Unmap only the relevant IO memory mapping
  netem: Segment GSO packets on enqueue
  batman-adv: Fix reference counting of hardif_neigh_node object for neigh_node
  batman-adv: Fix reference counting of vlan object for tt_local_entry
  batman-adv: B.A.T.M.A.N V - make sure iface is reactivated upon NETDEV_UP event
  batman-adv: fix DAT candidate selection (must use vid)
parents 610603a5 79e8dc8b
Loading
Loading
Loading
Loading
+21 −13
Original line number Original line Diff line number Diff line
@@ -441,7 +441,7 @@ static int macb_mii_init(struct macb *bp)
	snprintf(bp->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
	snprintf(bp->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
		bp->pdev->name, bp->pdev->id);
		bp->pdev->name, bp->pdev->id);
	bp->mii_bus->priv = bp;
	bp->mii_bus->priv = bp;
	bp->mii_bus->parent = &bp->dev->dev;
	bp->mii_bus->parent = &bp->pdev->dev;
	pdata = dev_get_platdata(&bp->pdev->dev);
	pdata = dev_get_platdata(&bp->pdev->dev);


	dev_set_drvdata(&bp->dev->dev, bp->mii_bus);
	dev_set_drvdata(&bp->dev->dev, bp->mii_bus);
@@ -458,7 +458,8 @@ static int macb_mii_init(struct macb *bp)
				struct phy_device *phydev;
				struct phy_device *phydev;


				phydev = mdiobus_scan(bp->mii_bus, i);
				phydev = mdiobus_scan(bp->mii_bus, i);
				if (IS_ERR(phydev)) {
				if (IS_ERR(phydev) &&
				    PTR_ERR(phydev) != -ENODEV) {
					err = PTR_ERR(phydev);
					err = PTR_ERR(phydev);
					break;
					break;
				}
				}
@@ -3019,29 +3020,36 @@ static int macb_probe(struct platform_device *pdev)
	if (err)
	if (err)
		goto err_out_free_netdev;
		goto err_out_free_netdev;


	err = macb_mii_init(bp);
	if (err)
		goto err_out_free_netdev;

	phydev = bp->phy_dev;

	netif_carrier_off(dev);

	err = register_netdev(dev);
	err = register_netdev(dev);
	if (err) {
	if (err) {
		dev_err(&pdev->dev, "Cannot register net device, aborting.\n");
		dev_err(&pdev->dev, "Cannot register net device, aborting.\n");
		goto err_out_unregister_netdev;
		goto err_out_unregister_mdio;
	}
	}


	err = macb_mii_init(bp);
	phy_attached_info(phydev);
	if (err)
		goto err_out_unregister_netdev;

	netif_carrier_off(dev);


	netdev_info(dev, "Cadence %s rev 0x%08x at 0x%08lx irq %d (%pM)\n",
	netdev_info(dev, "Cadence %s rev 0x%08x at 0x%08lx irq %d (%pM)\n",
		    macb_is_gem(bp) ? "GEM" : "MACB", macb_readl(bp, MID),
		    macb_is_gem(bp) ? "GEM" : "MACB", macb_readl(bp, MID),
		    dev->base_addr, dev->irq, dev->dev_addr);
		    dev->base_addr, dev->irq, dev->dev_addr);


	phydev = bp->phy_dev;
	phy_attached_info(phydev);

	return 0;
	return 0;


err_out_unregister_netdev:
err_out_unregister_mdio:
	unregister_netdev(dev);
	phy_disconnect(bp->phy_dev);
	mdiobus_unregister(bp->mii_bus);
	mdiobus_free(bp->mii_bus);

	/* Shutdown the PHY if there is a GPIO reset */
	if (bp->reset_gpio)
		gpiod_set_value(bp->reset_gpio, 0);


err_out_free_netdev:
err_out_free_netdev:
	free_netdev(dev);
	free_netdev(dev);
+2 −4
Original line number Original line Diff line number Diff line
@@ -3354,8 +3354,7 @@ static int mvneta_percpu_notifier(struct notifier_block *nfb,
		/* Enable per-CPU interrupts on the CPU that is
		/* Enable per-CPU interrupts on the CPU that is
		 * brought up.
		 * brought up.
		 */
		 */
		smp_call_function_single(cpu, mvneta_percpu_enable,
		mvneta_percpu_enable(pp);
					 pp, true);


		/* Enable per-CPU interrupt on the one CPU we care
		/* Enable per-CPU interrupt on the one CPU we care
		 * about.
		 * about.
@@ -3387,8 +3386,7 @@ static int mvneta_percpu_notifier(struct notifier_block *nfb,
		/* Disable per-CPU interrupts on the CPU that is
		/* Disable per-CPU interrupts on the CPU that is
		 * brought down.
		 * brought down.
		 */
		 */
		smp_call_function_single(cpu, mvneta_percpu_disable,
		mvneta_percpu_disable(pp);
					 pp, true);


		break;
		break;
	case CPU_DEAD:
	case CPU_DEAD:
+2 −0
Original line number Original line Diff line number Diff line
@@ -979,6 +979,8 @@ static int pxa168_init_phy(struct net_device *dev)
		return 0;
		return 0;


	pep->phy = mdiobus_scan(pep->smi_bus, pep->phy_addr);
	pep->phy = mdiobus_scan(pep->smi_bus, pep->phy_addr);
	if (IS_ERR(pep->phy))
		return PTR_ERR(pep->phy);
	if (!pep->phy)
	if (!pep->phy)
		return -ENODEV;
		return -ENODEV;


+1 −0
Original line number Original line Diff line number Diff line
@@ -14,6 +14,7 @@ config MLX5_CORE_EN
	bool "Mellanox Technologies ConnectX-4 Ethernet support"
	bool "Mellanox Technologies ConnectX-4 Ethernet support"
	depends on NETDEVICES && ETHERNET && PCI && MLX5_CORE
	depends on NETDEVICES && ETHERNET && PCI && MLX5_CORE
	select PTP_1588_CLOCK
	select PTP_1588_CLOCK
	select VXLAN if MLX5_CORE=y
	default n
	default n
	---help---
	---help---
	  Ethernet support in Mellanox Technologies ConnectX-4 NIC.
	  Ethernet support in Mellanox Technologies ConnectX-4 NIC.
+1 −0
Original line number Original line Diff line number Diff line
@@ -567,6 +567,7 @@ struct mlx5e_priv {
	struct mlx5e_vxlan_db      vxlan;
	struct mlx5e_vxlan_db      vxlan;


	struct mlx5e_params        params;
	struct mlx5e_params        params;
	struct workqueue_struct    *wq;
	struct work_struct         update_carrier_work;
	struct work_struct         update_carrier_work;
	struct work_struct         set_rx_mode_work;
	struct work_struct         set_rx_mode_work;
	struct delayed_work        update_stats_work;
	struct delayed_work        update_stats_work;
Loading