Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
authorDavid S. Miller <davem@davemloft.net>
Mon, 12 Sep 2016 22:52:44 +0000 (15:52 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Sep 2016 22:52:44 +0000 (15:52 -0700)
Conflicts:
drivers/net/ethernet/mediatek/mtk_eth_soc.c
drivers/net/ethernet/qlogic/qed/qed_dcbx.c
drivers/net/phy/Kconfig

All conflicts were cases of overlapping commits.

Signed-off-by: David S. Miller <davem@davemloft.net>
40 files changed:
1  2 
MAINTAINERS
drivers/infiniband/hw/mlx5/cq.c
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/mlx5/mlx5_ib.h
drivers/infiniband/hw/mlx5/qp.c
drivers/net/bonding/bond_main.c
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
drivers/net/ethernet/cadence/macb.c
drivers/net/ethernet/cavium/thunder/nic.h
drivers/net/ethernet/cavium/thunder/nic_main.c
drivers/net/ethernet/cavium/thunder/nicvf_main.c
drivers/net/ethernet/cavium/thunder/nicvf_queues.c
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/mediatek/mtk_eth_soc.c
drivers/net/ethernet/mediatek/mtk_eth_soc.h
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
drivers/net/ethernet/qlogic/qed/qed_dcbx.c
drivers/net/ethernet/qlogic/qede/qede_main.c
drivers/net/ethernet/renesas/sh_eth.c
drivers/net/ethernet/smsc/smsc911x.c
drivers/net/ethernet/synopsys/dwc_eth_qos.c
drivers/net/phy/Kconfig
drivers/net/vxlan.c
include/linux/mlx5/mlx5_ifc.h
include/linux/netdevice.h
net/bridge/br_input.c
net/core/dev.c
net/core/flow_dissector.c
net/ipv4/fib_frontend.c
net/ipv4/fib_semantics.c
net/ipv4/xfrm4_policy.c
net/ipv6/ip6_tunnel.c
net/ipv6/xfrm6_policy.c
net/kcm/kcmsock.c
net/xfrm/xfrm_policy.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -278,22 -248,19 +278,27 @@@ static int nic_update_hw_frs(struct nic
  /* Set minimum transmit packet size */
  static void nic_set_tx_pkt_pad(struct nicpf *nic, int size)
  {
 -      int lmac;
 +      int lmac, max_lmac;
 +      u16 sdevid;
        u64 lmac_cfg;
  
-       /* Max value that can be set is 60 */
-       if (size > 60)
-               size = 60;
+       /* There is a issue in HW where-in while sending GSO sized
+        * pkts as part of TSO, if pkt len falls below this size
+        * NIC will zero PAD packet and also updates IP total length.
+        * Hence set this value to lessthan min pkt size of MAC+IP+TCP
+        * headers, BGX will do the padding to transmit 64 byte pkt.
+        */
+       if (size > 52)
+               size = 52;
  
 -      for (lmac = 0; lmac < (MAX_BGX_PER_CN88XX * MAX_LMAC_PER_BGX); lmac++) {
 +      pci_read_config_word(nic->pdev, PCI_SUBSYSTEM_ID, &sdevid);
 +      /* 81xx's RGX has only one LMAC */
 +      if (sdevid == PCI_SUBSYS_DEVID_81XX_NIC_PF)
 +              max_lmac = ((nic->hw->bgx_cnt - 1) * MAX_LMAC_PER_BGX) + 1;
 +      else
 +              max_lmac = nic->hw->bgx_cnt * MAX_LMAC_PER_BGX;
 +
 +      for (lmac = 0; lmac < max_lmac; lmac++) {
                lmac_cfg = nic_reg_read(nic, NIC_PF_LMAC_0_7_CFG | (lmac << 3));
                lmac_cfg &= ~(0xF << 2);
                lmac_cfg |= ((size / 4) << 2);
@@@ -536,17 -528,21 +537,21 @@@ static void nicvf_snd_pkt_handler(struc
  
        nicvf_check_cqe_tx_errs(nic, cq, cqe_tx);
        skb = (struct sk_buff *)sq->skbuff[cqe_tx->sqe_ptr];
-       /* For TSO offloaded packets only one SQE will have a valid SKB */
        if (skb) {
+               /* Check for dummy descriptor used for HW TSO offload on 88xx */
+               if (hdr->dont_send) {
+                       /* Get actual TSO descriptors and free them */
+                       tso_sqe =
+                        (struct sq_hdr_subdesc *)GET_SQ_DESC(sq, hdr->rsvd2);
+                       nicvf_put_sq_desc(sq, tso_sqe->subdesc_cnt + 1);
+               }
                nicvf_put_sq_desc(sq, hdr->subdesc_cnt + 1);
                prefetch(skb);
 -              dev_consume_skb_any(skb);
 +              napi_consume_skb(skb, budget);
                sq->skbuff[cqe_tx->sqe_ptr] = (u64)NULL;
        } else {
-               /* In case of HW TSO, HW sends a CQE for each segment of a TSO
-                * packet instead of a single CQE for the whole TSO packet
-                * transmitted. Each of this CQE points to the same SQE, so
-                * avoid freeing same SQE multiple times.
+               /* In case of SW TSO on 88xx, only last segment will have
+                * a SKB attached, so just free SQEs here.
                 */
                if (!nic->hw_tso)
                        nicvf_put_sq_desc(sq, hdr->subdesc_cnt + 1);
@@@ -338,12 -334,9 +334,10 @@@ static void mtk_mdio_cleanup(struct mtk
                return;
  
        mdiobus_unregister(eth->mii_bus);
-       of_node_put(eth->mii_bus->dev.of_node);
-       mdiobus_free(eth->mii_bus);
  }
  
 -static inline void mtk_irq_disable(struct mtk_eth *eth, u32 mask)
 +static inline void mtk_irq_disable(struct mtk_eth *eth,
 +                                 unsigned reg, u32 mask)
  {
        unsigned long flags;
        u32 val;
@@@ -257,38 -251,9 +251,37 @@@ int mlxsw_sp_vport_flood_set(struct mlx
         * the start of the vFIDs range.
         */
        vfid = mlxsw_sp_fid_to_vfid(fid);
-       return __mlxsw_sp_port_flood_set(mlxsw_sp_vport, vfid, vfid, set,
-                                        false);
+       return __mlxsw_sp_port_flood_set(mlxsw_sp_vport, vfid, vfid, set, set);
  }
  
 +static int mlxsw_sp_port_learning_set(struct mlxsw_sp_port *mlxsw_sp_port,
 +                                    bool set)
 +{
 +      u16 vid;
 +      int err;
 +
 +      if (mlxsw_sp_port_is_vport(mlxsw_sp_port)) {
 +              vid = mlxsw_sp_vport_vid_get(mlxsw_sp_port);
 +
 +              return __mlxsw_sp_port_vid_learning_set(mlxsw_sp_port, vid, vid,
 +                                                      set);
 +      }
 +
 +      for_each_set_bit(vid, mlxsw_sp_port->active_vlans, VLAN_N_VID) {
 +              err = __mlxsw_sp_port_vid_learning_set(mlxsw_sp_port, vid, vid,
 +                                                     set);
 +              if (err)
 +                      goto err_port_vid_learning_set;
 +      }
 +
 +      return 0;
 +
 +err_port_vid_learning_set:
 +      for_each_set_bit(vid, mlxsw_sp_port->active_vlans, VLAN_N_VID)
 +              __mlxsw_sp_port_vid_learning_set(mlxsw_sp_port, vid, vid, !set);
 +      return err;
 +}
 +
  static int mlxsw_sp_port_attr_br_flags_set(struct mlxsw_sp_port *mlxsw_sp_port,
                                           struct switchdev_trans *trans,
                                           unsigned long brport_flags)
@@@ -1172,9 -1189,11 +1186,9 @@@ int qed_dcbx_get_config_params(struct q
                return 0;
        }
  
-       dcbx_info = kmalloc(sizeof(*dcbx_info), GFP_KERNEL);
+       dcbx_info = kzalloc(sizeof(*dcbx_info), GFP_KERNEL);
 -      if (!dcbx_info) {
 -              DP_ERR(p_hwfn, "Failed to allocate struct qed_dcbx_info\n");
 +      if (!dcbx_info)
                return -ENOMEM;
 -      }
  
        rc = qed_dcbx_query_params(p_hwfn, dcbx_info, QED_DCBX_OPERATIONAL_MIB);
        if (rc) {
@@@ -1207,9 -1226,11 +1221,9 @@@ static struct qed_dcbx_get *qed_dcbnl_g
  {
        struct qed_dcbx_get *dcbx_info;
  
-       dcbx_info = kmalloc(sizeof(*dcbx_info), GFP_KERNEL);
+       dcbx_info = kzalloc(sizeof(*dcbx_info), GFP_KERNEL);
 -      if (!dcbx_info) {
 -              DP_ERR(hwfn->cdev, "Failed to allocate memory for dcbx_info\n");
 +      if (!dcbx_info)
                return NULL;
 -      }
  
        if (qed_dcbx_query_params(hwfn, dcbx_info, type)) {
                kfree(dcbx_info);
Simple merge
Simple merge
@@@ -235,91 -169,145 +235,98 @@@ config FIXED_PH
  
          Currently tested with mpc866ads and mpc8349e-mitx.
  
 -config MDIO_BITBANG
 -      tristate "Support for bitbanged MDIO buses"
 -      help
 -        This module implements the MDIO bus protocol in software,
 -        for use by low level drivers that export the ability to
 -        drive the relevant pins.
 -
 -        If in doubt, say N.
 -
 -config MDIO_GPIO
 -      tristate "Support for GPIO lib-based bitbanged MDIO buses"
 -      depends on MDIO_BITBANG && GPIOLIB
 +config ICPLUS_PHY
 +      tristate "ICPlus PHYs"
        ---help---
 -        Supports GPIO lib-based MDIO busses.
 +        Currently supports the IP175C and IP1001 PHYs.
  
 -        To compile this driver as a module, choose M here: the module
 -        will be called mdio-gpio.
 +config INTEL_XWAY_PHY
 +      tristate "Intel XWAY PHYs"
 +      ---help---
 +        Supports the Intel XWAY (former Lantiq) 11G and 22E PHYs.
 +        These PHYs are marked as standalone chips under the names
 +        PEF 7061, PEF 7071 and PEF 7072 or integrated into the Intel
 +        SoCs xRX200, xRX300, xRX330, xRX350 and xRX550.
  
 -config MDIO_CAVIUM
 -      tristate
 +config LSI_ET1011C_PHY
 +      tristate "LSI ET1011C PHY"
 +      ---help---
 +        Supports the LSI ET1011C PHY.
  
 -config MDIO_OCTEON
 -      tristate "Support for MDIO buses on Octeon and some ThunderX SOCs"
 -      depends on 64BIT
 -      depends on HAS_IOMEM
 -      select MDIO_CAVIUM
 -      help
 -        This module provides a driver for the Octeon and ThunderX MDIO
 -        buses. It is required by the Octeon and ThunderX ethernet device
 -        drivers on some systems.
 +config LXT_PHY
 +      tristate "Intel LXT PHYs"
 +      ---help---
 +        Currently supports the lxt970, lxt971
  
 -config MDIO_THUNDER
 -      tristate "Support for MDIO buses on ThunderX SOCs"
 -      depends on 64BIT
 -      depends on PCI
 -      select MDIO_CAVIUM
 -      help
 -        This driver supports the MDIO interfaces found on Cavium
 -        ThunderX SoCs when the MDIO bus device appears as a PCI
 -        device.
 +config MARVELL_PHY
 +      tristate "Marvell PHYs"
 +      ---help---
 +        Currently has a driver for the 88E1011S
  
 +config MICREL_PHY
 +      tristate "Micrel PHYs"
 +      ---help---
 +        Supports the KSZ9021, VSC8201, KS8001 PHYs.
  
 -config MDIO_SUN4I
 -      tristate "Allwinner sun4i MDIO interface support"
 -      depends on ARCH_SUNXI
 +config MICROCHIP_PHY
 +      tristate "Microchip PHYs"
        help
 -        This driver supports the MDIO interface found in the network
 -        interface units of the Allwinner SoC that have an EMAC (A10,
 -        A12, A10s, etc.)
 -
 -config MDIO_MOXART
 -        tristate "MOXA ART MDIO interface support"
 -        depends on ARCH_MOXART
 -        help
 -          This driver supports the MDIO interface found in the network
 -          interface units of the MOXA ART SoC
 +        Supports the LAN88XX PHYs.
  
 -config MDIO_BUS_MUX
 -      tristate
 -      depends on OF_MDIO
 -      help
 -        This module provides a driver framework for MDIO bus
 -        multiplexers which connect one of several child MDIO busses
 -        to a parent bus.  Switching between child busses is done by
 -        device specific drivers.
 +config MICROSEMI_PHY
 +      tristate "Microsemi PHYs"
 +      ---help---
 +        Currently supports the VSC8531 and VSC8541 PHYs
  
 -config MDIO_BUS_MUX_GPIO
 -      tristate "Support for GPIO controlled MDIO bus multiplexers"
 -      depends on OF_GPIO && OF_MDIO
 -      select MDIO_BUS_MUX
 -      help
 -        This module provides a driver for MDIO bus multiplexers that
 -        are controlled via GPIO lines.  The multiplexer connects one of
 -        several child MDIO busses to a parent bus.  Child bus
 -        selection is under the control of GPIO lines.
 +config NATIONAL_PHY
 +      tristate "National Semiconductor PHYs"
 +      ---help---
 +        Currently supports the DP83865 PHY.
  
 -config MDIO_BUS_MUX_MMIOREG
 -      tristate "Support for MMIO device-controlled MDIO bus multiplexers"
 -      depends on OF_MDIO && HAS_IOMEM
 -      select MDIO_BUS_MUX
 -      help
 -        This module provides a driver for MDIO bus multiplexers that
 -        are controlled via a simple memory-mapped device, like an FPGA.
 -        The multiplexer connects one of several child MDIO busses to a
 -        parent bus.  Child bus selection is under the control of one of
 -        the FPGA's registers.
 +config QSEMI_PHY
 +      tristate "Quality Semiconductor PHYs"
 +      ---help---
 +        Currently supports the qs6612
  
 -        Currently, only 8-bit registers are supported.
 +config REALTEK_PHY
 +      tristate "Realtek PHYs"
 +      ---help---
 +        Supports the Realtek 821x PHY.
  
 -config MDIO_BUS_MUX_BCM_IPROC
 -      tristate "Support for iProc based MDIO bus multiplexers"
 -      depends on OF && OF_MDIO && (ARCH_BCM_IPROC || COMPILE_TEST)
 -      select MDIO_BUS_MUX
 -      default ARCH_BCM_IPROC
 -      help
 -        This module provides a driver for MDIO bus multiplexers found in
 -        iProc based Broadcom SoCs. This multiplexer connects one of several
 -        child MDIO bus to a parent bus. Buses could be internal as well as
 -        external and selection logic lies inside the same multiplexer.
 +config SMSC_PHY
 +      tristate "SMSC PHYs"
 +      ---help---
 +        Currently supports the LAN83C185, LAN8187 and LAN8700 PHYs
  
 -config MDIO_BCM_UNIMAC
 -      tristate "Broadcom UniMAC MDIO bus controller"
 -      depends on HAS_IOMEM
 -      help
 -        This module provides a driver for the Broadcom UniMAC MDIO busses.
 -        This hardware can be found in the Broadcom GENET Ethernet MAC
 -        controllers as well as some Broadcom Ethernet switches such as the
 -        Starfighter 2 switches.
 +config STE10XP
 +      tristate "STMicroelectronics STe10Xp PHYs"
 +      ---help---
 +        This is the driver for the STe100p and STe101p PHYs.
  
 -config MDIO_BCM_IPROC
 -      tristate "Broadcom iProc MDIO bus controller"
 -      depends on ARCH_BCM_IPROC || COMPILE_TEST
 -      depends on HAS_IOMEM && OF_MDIO
 -      help
 -        This module provides a driver for the MDIO busses found in the
 -        Broadcom iProc SoC's.
 +config TERANETICS_PHY
 +        tristate "Teranetics PHYs"
 +        ---help---
 +          Currently supports the Teranetics TN2020
  
 -config INTEL_XWAY_PHY
 -      tristate "Driver for Intel XWAY PHYs"
 -      ---help---
 -        Supports the Intel XWAY (former Lantiq) 11G and 22E PHYs.
 -        These PHYs are marked as standalone chips under the names
 -        PEF 7061, PEF 7071 and PEF 7072 or integrated into the Intel
 -        SoCs xRX200, xRX300, xRX330, xRX350 and xRX550.
 +config VITESSE_PHY
 +        tristate "Vitesse PHYs"
 +        ---help---
 +          Currently supports the vsc8244
  
 -config MDIO_HISI_FEMAC
 -      tristate "Hisilicon FEMAC MDIO bus controller"
 -      depends on HAS_IOMEM && OF_MDIO
 -      help
 -        This module provides a driver for the MDIO busses found in the
 -        Hisilicon SoC that have an Fast Ethernet MAC.
 +config XILINX_GMII2RGMII
 +       tristate "Xilinx GMII2RGMII converter driver"
 +       ---help---
 +         This driver support xilinx GMII to RGMII IP core it provides
 +         the Reduced Gigabit Media Independent Interface(RGMII) between
 +         Ethernet physical media devices and the Gigabit Ethernet controller.
  
+ config MDIO_XGENE
+       tristate "APM X-Gene SoC MDIO bus controller"
+       depends on ARCH_XGENE || COMPILE_TEST
+       help
+         This module provides a driver for the MDIO busses found in the
+         APM X-Gene SoC's.
  endif # PHYLIB
  
  config MICREL_KS8995MA
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge