Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
authorDavid S. Miller <davem@davemloft.net>
Wed, 15 Mar 2017 18:59:10 +0000 (11:59 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Mar 2017 18:59:10 +0000 (11:59 -0700)
Conflicts:
drivers/net/ethernet/broadcom/genet/bcmgenet.c
net/core/sock.c

Conflicts were overlapping changes in bcmgenet and the
lockdep handling of sockets.

Signed-off-by: David S. Miller <davem@davemloft.net>
26 files changed:
1  2 
MAINTAINERS
drivers/net/ethernet/broadcom/genet/bcmgenet.c
drivers/net/ethernet/broadcom/genet/bcmgenet.h
drivers/net/ethernet/cavium/liquidio/lio_main.c
drivers/net/ethernet/cavium/liquidio/octeon_droq.c
drivers/net/ethernet/mellanox/mlxsw/reg.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
drivers/net/ethernet/qlogic/qed/qed_cxt.c
drivers/net/ethernet/qlogic/qed/qed_dev.c
drivers/net/ethernet/qlogic/qed/qed_ll2.c
drivers/net/hyperv/hyperv_net.h
drivers/net/hyperv/netvsc.c
drivers/net/hyperv/netvsc_drv.c
drivers/net/tun.c
drivers/net/vxlan.c
drivers/scsi/qedf/qedf_io.c
drivers/scsi/qedi/qedi_fw.c
drivers/scsi/qedi/qedi_iscsi.c
include/net/sock.h
net/core/sock.c
net/decnet/af_decnet.c
net/ipv4/tcp_ipv4.c
net/ipv6/tcp_ipv6.c
net/mpls/af_mpls.c
net/rds/ib_cm.c
net/sctp/socket.c

diff --cc MAINTAINERS
Simple merge
index d848ac58189c31b3a83ff53ec9bde86352985410,69015fa50f2096c77999539179446e5ab38fa759..44f9c0a1f85d8b56fc955f785310230d2e869dac
@@@ -1235,15 -1285,10 +1301,10 @@@ static unsigned int __bcmgenet_tx_recla
        dev->stats.tx_packets += pkts_compl;
        dev->stats.tx_bytes += bytes_compl;
  
-       txq = netdev_get_tx_queue(dev, ring->queue);
-       netdev_tx_completed_queue(txq, pkts_compl, bytes_compl);
-       if (ring->free_bds > (MAX_SKB_FRAGS + 1)) {
-               if (netif_tx_queue_stopped(txq))
-                       netif_tx_wake_queue(txq);
-       }
+       netdev_tx_completed_queue(netdev_get_tx_queue(dev, ring->queue),
+                                 pkts_compl, bytes_compl);
  
 -      return pkts_compl;
 +      return txbds_processed;
  }
  
  static unsigned int bcmgenet_tx_reclaim(struct net_device *dev,
@@@ -2578,18 -2634,8 +2658,17 @@@ static irqreturn_t bcmgenet_isr0(int ir
                }
        }
  
 +      if (priv->irq0_stat & (UMAC_IRQ_PHY_DET_R |
 +                              UMAC_IRQ_PHY_DET_F |
 +                              UMAC_IRQ_LINK_EVENT |
 +                              UMAC_IRQ_HFB_SM |
 +                              UMAC_IRQ_HFB_MM)) {
 +              /* all other interested interrupts handled in bottom half */
 +              schedule_work(&priv->bcmgenet_irq_work);
 +      }
 +
        if ((priv->hw_params->flags & GENET_HAS_MDIO_INTR) &&
-           priv->irq0_stat & (UMAC_IRQ_MDIO_DONE | UMAC_IRQ_MDIO_ERROR)) {
-               priv->irq0_stat &= ~(UMAC_IRQ_MDIO_DONE | UMAC_IRQ_MDIO_ERROR);
+               status & (UMAC_IRQ_MDIO_DONE | UMAC_IRQ_MDIO_ERROR)) {
                wake_up(&priv->wq);
        }
  
@@@ -3210,25 -3253,19 +3303,25 @@@ static void bcmgenet_set_hw_params(stru
         */
        gphy_rev = reg & 0xffff;
  
 -      if (gphy_rev == 0 || gphy_rev == 0x01ff) {
 +      if (GENET_IS_V5(priv)) {
 +              /* The EPHY revision should come from the MDIO registers of
 +               * the PHY not from GENET.
 +               */
 +              if (gphy_rev != 0) {
 +                      pr_warn("GENET is reporting EPHY revision: 0x%04x\n",
 +                              gphy_rev);
 +              }
+       /* This is reserved so should require special treatment */
 -      }
 -
++      } else if (gphy_rev == 0 || gphy_rev == 0x01ff) {
+               pr_warn("Invalid GPHY revision detected: 0x%04x\n", gphy_rev);
+               return;
        /* This is the good old scheme, just GPHY major, no minor nor patch */
 -      if ((gphy_rev & 0xf0) != 0)
 +      } else if ((gphy_rev & 0xf0) != 0) {
                priv->gphy_rev = gphy_rev << 8;
 -
        /* This is the new scheme, GPHY major rolls over with 0x10 = rev G0 */
 -      else if ((gphy_rev & 0xff00) != 0)
 +      } else if ((gphy_rev & 0xff00) != 0) {
                priv->gphy_rev = gphy_rev;
-       /* This is reserved so should require special treatment */
-       } else if (gphy_rev == 0 || gphy_rev == 0x01ff) {
-               pr_warn("Invalid GPHY revision detected: 0x%04x\n", gphy_rev);
-               return;
 +      }
  
  #ifdef CONFIG_PHYS_ADDR_T_64BIT
        if (!(params->flags & GENET_HAS_40BITS))
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/sock.c
index 768aedf238f5b4dd4ca395e1320e9ca491233add,a96d5f7a5734a52dfd6a2df8490c7bd7f5f6599a..a83731c367619d55c8aa883c5583830c18533676
@@@ -207,117 -210,50 +210,104 @@@ static struct lock_class_key af_family_
   * strings build-time, so that runtime initialization of socket
   * locks is fast):
   */
+ #define _sock_locks(x)                                                  \
+   x "AF_UNSPEC",      x "AF_UNIX"     ,       x "AF_INET"     , \
+   x "AF_AX25"  ,      x "AF_IPX"      ,       x "AF_APPLETALK", \
+   x "AF_NETROM",      x "AF_BRIDGE"   ,       x "AF_ATMPVC"   , \
+   x "AF_X25"   ,      x "AF_INET6"    ,       x "AF_ROSE"     , \
+   x "AF_DECnet",      x "AF_NETBEUI"  ,       x "AF_SECURITY" , \
+   x "AF_KEY"   ,      x "AF_NETLINK"  ,       x "AF_PACKET"   , \
+   x "AF_ASH"   ,      x "AF_ECONET"   ,       x "AF_ATMSVC"   , \
+   x "AF_RDS"   ,      x "AF_SNA"      ,       x "AF_IRDA"     , \
+   x "AF_PPPOX" ,      x "AF_WANPIPE"  ,       x "AF_LLC"      , \
+   x "27"       ,      x "28"          ,       x "AF_CAN"      , \
+   x "AF_TIPC"  ,      x "AF_BLUETOOTH",       x "IUCV"        , \
+   x "AF_RXRPC" ,      x "AF_ISDN"     ,       x "AF_PHONET"   , \
+   x "AF_IEEE802154",  x "AF_CAIF"     ,       x "AF_ALG"      , \
+   x "AF_NFC"   ,      x "AF_VSOCK"    ,       x "AF_KCM"      , \
+   x "AF_QIPCRTR",     x "AF_SMC"      ,       x "AF_MAX"
  static const char *const af_family_key_strings[AF_MAX+1] = {
-   "sk_lock-AF_UNSPEC", "sk_lock-AF_UNIX"     , "sk_lock-AF_INET"     ,
-   "sk_lock-AF_AX25"  , "sk_lock-AF_IPX"      , "sk_lock-AF_APPLETALK",
-   "sk_lock-AF_NETROM", "sk_lock-AF_BRIDGE"   , "sk_lock-AF_ATMPVC"   ,
-   "sk_lock-AF_X25"   , "sk_lock-AF_INET6"    , "sk_lock-AF_ROSE"     ,
-   "sk_lock-AF_DECnet", "sk_lock-AF_NETBEUI"  , "sk_lock-AF_SECURITY" ,
-   "sk_lock-AF_KEY"   , "sk_lock-AF_NETLINK"  , "sk_lock-AF_PACKET"   ,
-   "sk_lock-AF_ASH"   , "sk_lock-AF_ECONET"   , "sk_lock-AF_ATMSVC"   ,
-   "sk_lock-AF_RDS"   , "sk_lock-AF_SNA"      , "sk_lock-AF_IRDA"     ,
-   "sk_lock-AF_PPPOX" , "sk_lock-AF_WANPIPE"  , "sk_lock-AF_LLC"      ,
-   "sk_lock-27"       , "sk_lock-28"          , "sk_lock-AF_CAN"      ,
-   "sk_lock-AF_TIPC"  , "sk_lock-AF_BLUETOOTH", "sk_lock-IUCV"        ,
-   "sk_lock-AF_RXRPC" , "sk_lock-AF_ISDN"     , "sk_lock-AF_PHONET"   ,
-   "sk_lock-AF_IEEE802154", "sk_lock-AF_CAIF" , "sk_lock-AF_ALG"      ,
-   "sk_lock-AF_NFC"   , "sk_lock-AF_VSOCK"    , "sk_lock-AF_KCM"      ,
-   "sk_lock-AF_QIPCRTR", "sk_lock-AF_SMC"     , "sk_lock-AF_MAX"
+       _sock_locks("sk_lock-")
  };
  static const char *const af_family_slock_key_strings[AF_MAX+1] = {
-   "slock-AF_UNSPEC", "slock-AF_UNIX"     , "slock-AF_INET"     ,
-   "slock-AF_AX25"  , "slock-AF_IPX"      , "slock-AF_APPLETALK",
-   "slock-AF_NETROM", "slock-AF_BRIDGE"   , "slock-AF_ATMPVC"   ,
-   "slock-AF_X25"   , "slock-AF_INET6"    , "slock-AF_ROSE"     ,
-   "slock-AF_DECnet", "slock-AF_NETBEUI"  , "slock-AF_SECURITY" ,
-   "slock-AF_KEY"   , "slock-AF_NETLINK"  , "slock-AF_PACKET"   ,
-   "slock-AF_ASH"   , "slock-AF_ECONET"   , "slock-AF_ATMSVC"   ,
-   "slock-AF_RDS"   , "slock-AF_SNA"      , "slock-AF_IRDA"     ,
-   "slock-AF_PPPOX" , "slock-AF_WANPIPE"  , "slock-AF_LLC"      ,
-   "slock-27"       , "slock-28"          , "slock-AF_CAN"      ,
-   "slock-AF_TIPC"  , "slock-AF_BLUETOOTH", "slock-AF_IUCV"     ,
-   "slock-AF_RXRPC" , "slock-AF_ISDN"     , "slock-AF_PHONET"   ,
-   "slock-AF_IEEE802154", "slock-AF_CAIF" , "slock-AF_ALG"      ,
-   "slock-AF_NFC"   , "slock-AF_VSOCK"    ,"slock-AF_KCM"       ,
-   "slock-AF_QIPCRTR", "slock-AF_SMC"     , "slock-AF_MAX"
+       _sock_locks("slock-")
  };
  static const char *const af_family_clock_key_strings[AF_MAX+1] = {
-   "clock-AF_UNSPEC", "clock-AF_UNIX"     , "clock-AF_INET"     ,
-   "clock-AF_AX25"  , "clock-AF_IPX"      , "clock-AF_APPLETALK",
-   "clock-AF_NETROM", "clock-AF_BRIDGE"   , "clock-AF_ATMPVC"   ,
-   "clock-AF_X25"   , "clock-AF_INET6"    , "clock-AF_ROSE"     ,
-   "clock-AF_DECnet", "clock-AF_NETBEUI"  , "clock-AF_SECURITY" ,
-   "clock-AF_KEY"   , "clock-AF_NETLINK"  , "clock-AF_PACKET"   ,
-   "clock-AF_ASH"   , "clock-AF_ECONET"   , "clock-AF_ATMSVC"   ,
-   "clock-AF_RDS"   , "clock-AF_SNA"      , "clock-AF_IRDA"     ,
-   "clock-AF_PPPOX" , "clock-AF_WANPIPE"  , "clock-AF_LLC"      ,
-   "clock-27"       , "clock-28"          , "clock-AF_CAN"      ,
-   "clock-AF_TIPC"  , "clock-AF_BLUETOOTH", "clock-AF_IUCV"     ,
-   "clock-AF_RXRPC" , "clock-AF_ISDN"     , "clock-AF_PHONET"   ,
-   "clock-AF_IEEE802154", "clock-AF_CAIF" , "clock-AF_ALG"      ,
-   "clock-AF_NFC"   , "clock-AF_VSOCK"    , "clock-AF_KCM"      ,
-   "clock-AF_QIPCRTR", "clock-AF_SMC"     , "clock-AF_MAX"
+       _sock_locks("clock-")
+ };
+ static const char *const af_family_kern_key_strings[AF_MAX+1] = {
+       _sock_locks("k-sk_lock-")
+ };
+ static const char *const af_family_kern_slock_key_strings[AF_MAX+1] = {
+       _sock_locks("k-slock-")
+ };
+ static const char *const af_family_kern_clock_key_strings[AF_MAX+1] = {
+       _sock_locks("k-clock-")
  };
 +static const char *const af_family_rlock_key_strings[AF_MAX+1] = {
 +  "rlock-AF_UNSPEC", "rlock-AF_UNIX"     , "rlock-AF_INET"     ,
 +  "rlock-AF_AX25"  , "rlock-AF_IPX"      , "rlock-AF_APPLETALK",
 +  "rlock-AF_NETROM", "rlock-AF_BRIDGE"   , "rlock-AF_ATMPVC"   ,
 +  "rlock-AF_X25"   , "rlock-AF_INET6"    , "rlock-AF_ROSE"     ,
 +  "rlock-AF_DECnet", "rlock-AF_NETBEUI"  , "rlock-AF_SECURITY" ,
 +  "rlock-AF_KEY"   , "rlock-AF_NETLINK"  , "rlock-AF_PACKET"   ,
 +  "rlock-AF_ASH"   , "rlock-AF_ECONET"   , "rlock-AF_ATMSVC"   ,
 +  "rlock-AF_RDS"   , "rlock-AF_SNA"      , "rlock-AF_IRDA"     ,
 +  "rlock-AF_PPPOX" , "rlock-AF_WANPIPE"  , "rlock-AF_LLC"      ,
 +  "rlock-27"       , "rlock-28"          , "rlock-AF_CAN"      ,
 +  "rlock-AF_TIPC"  , "rlock-AF_BLUETOOTH", "rlock-AF_IUCV"     ,
 +  "rlock-AF_RXRPC" , "rlock-AF_ISDN"     , "rlock-AF_PHONET"   ,
 +  "rlock-AF_IEEE802154", "rlock-AF_CAIF" , "rlock-AF_ALG"      ,
 +  "rlock-AF_NFC"   , "rlock-AF_VSOCK"    , "rlock-AF_KCM"      ,
 +  "rlock-AF_QIPCRTR", "rlock-AF_SMC"     , "rlock-AF_MAX"
 +};
 +static const char *const af_family_wlock_key_strings[AF_MAX+1] = {
 +  "wlock-AF_UNSPEC", "wlock-AF_UNIX"     , "wlock-AF_INET"     ,
 +  "wlock-AF_AX25"  , "wlock-AF_IPX"      , "wlock-AF_APPLETALK",
 +  "wlock-AF_NETROM", "wlock-AF_BRIDGE"   , "wlock-AF_ATMPVC"   ,
 +  "wlock-AF_X25"   , "wlock-AF_INET6"    , "wlock-AF_ROSE"     ,
 +  "wlock-AF_DECnet", "wlock-AF_NETBEUI"  , "wlock-AF_SECURITY" ,
 +  "wlock-AF_KEY"   , "wlock-AF_NETLINK"  , "wlock-AF_PACKET"   ,
 +  "wlock-AF_ASH"   , "wlock-AF_ECONET"   , "wlock-AF_ATMSVC"   ,
 +  "wlock-AF_RDS"   , "wlock-AF_SNA"      , "wlock-AF_IRDA"     ,
 +  "wlock-AF_PPPOX" , "wlock-AF_WANPIPE"  , "wlock-AF_LLC"      ,
 +  "wlock-27"       , "wlock-28"          , "wlock-AF_CAN"      ,
 +  "wlock-AF_TIPC"  , "wlock-AF_BLUETOOTH", "wlock-AF_IUCV"     ,
 +  "wlock-AF_RXRPC" , "wlock-AF_ISDN"     , "wlock-AF_PHONET"   ,
 +  "wlock-AF_IEEE802154", "wlock-AF_CAIF" , "wlock-AF_ALG"      ,
 +  "wlock-AF_NFC"   , "wlock-AF_VSOCK"    , "wlock-AF_KCM"      ,
 +  "wlock-AF_QIPCRTR", "wlock-AF_SMC"     , "wlock-AF_MAX"
 +};
 +static const char *const af_family_elock_key_strings[AF_MAX+1] = {
 +  "elock-AF_UNSPEC", "elock-AF_UNIX"     , "elock-AF_INET"     ,
 +  "elock-AF_AX25"  , "elock-AF_IPX"      , "elock-AF_APPLETALK",
 +  "elock-AF_NETROM", "elock-AF_BRIDGE"   , "elock-AF_ATMPVC"   ,
 +  "elock-AF_X25"   , "elock-AF_INET6"    , "elock-AF_ROSE"     ,
 +  "elock-AF_DECnet", "elock-AF_NETBEUI"  , "elock-AF_SECURITY" ,
 +  "elock-AF_KEY"   , "elock-AF_NETLINK"  , "elock-AF_PACKET"   ,
 +  "elock-AF_ASH"   , "elock-AF_ECONET"   , "elock-AF_ATMSVC"   ,
 +  "elock-AF_RDS"   , "elock-AF_SNA"      , "elock-AF_IRDA"     ,
 +  "elock-AF_PPPOX" , "elock-AF_WANPIPE"  , "elock-AF_LLC"      ,
 +  "elock-27"       , "elock-28"          , "elock-AF_CAN"      ,
 +  "elock-AF_TIPC"  , "elock-AF_BLUETOOTH", "elock-AF_IUCV"     ,
 +  "elock-AF_RXRPC" , "elock-AF_ISDN"     , "elock-AF_PHONET"   ,
 +  "elock-AF_IEEE802154", "elock-AF_CAIF" , "elock-AF_ALG"      ,
 +  "elock-AF_NFC"   , "elock-AF_VSOCK"    , "elock-AF_KCM"      ,
 +  "elock-AF_QIPCRTR", "elock-AF_SMC"     , "elock-AF_MAX"
 +};
  
  /*
 - * sk_callback_lock locking rules are per-address-family,
 + * sk_callback_lock and sk queues locking rules are per-address-family,
   * so split the lock classes by using a per-AF key:
   */
  static struct lock_class_key af_callback_keys[AF_MAX];
 +static struct lock_class_key af_rlock_keys[AF_MAX];
 +static struct lock_class_key af_wlock_keys[AF_MAX];
 +static struct lock_class_key af_elock_keys[AF_MAX];
+ static struct lock_class_key af_kern_callback_keys[AF_MAX];
  
  /* Take into consideration the size of the struct sk_buff overhead in the
   * determination of these values, since that is non-constant across
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/rds/ib_cm.c
Simple merge
Simple merge