Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
authorDavid S. Miller <davem@davemloft.net>
Fri, 20 Mar 2015 22:51:09 +0000 (18:51 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Mar 2015 22:51:09 +0000 (18:51 -0400)
Conflicts:
drivers/net/ethernet/emulex/benet/be_main.c
net/core/sysctl_net_core.c
net/ipv4/inet_diag.c

The be_main.c conflict resolution was really tricky.  The conflict
hunks generated by GIT were very unhelpful, to say the least.  It
split functions in half and moved them around, when the real actual
conflict only existed solely inside of one function, that being
be_map_pci_bars().

So instead, to resolve this, I checked out be_main.c from the top
of net-next, then I applied the be_main.c changes from 'net' since
the last time I merged.  And this worked beautifully.

The inet_diag.c and sysctl_net_core.c conflicts were simple
overlapping changes, and were easily to resolve.

Signed-off-by: David S. Miller <davem@davemloft.net>
42 files changed:
1  2 
MAINTAINERS
arch/arm/boot/dts/at91sam9260.dtsi
arch/arm/boot/dts/at91sam9263.dtsi
arch/arm/boot/dts/at91sam9g45.dtsi
drivers/net/ethernet/amd/pcnet32.c
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
drivers/net/ethernet/emulex/benet/be.h
drivers/net/ethernet/emulex/benet/be_cmds.c
drivers/net/ethernet/emulex/benet/be_cmds.h
drivers/net/ethernet/emulex/benet/be_main.c
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
drivers/net/ethernet/wiznet/w5100.c
drivers/net/ethernet/wiznet/w5300.c
drivers/net/vxlan.c
drivers/net/wireless/b43/main.c
drivers/net/wireless/iwlwifi/mvm/coex.c
drivers/net/wireless/iwlwifi/mvm/coex_legacy.c
drivers/net/wireless/iwlwifi/mvm/mac80211.c
drivers/net/wireless/iwlwifi/mvm/scan.c
drivers/net/xen-netback/netback.c
include/linux/netdevice.h
include/linux/skbuff.h
include/net/vxlan.h
net/caif/caif_socket.c
net/compat.c
net/core/rtnetlink.c
net/core/skbuff.c
net/core/sock.c
net/core/sysctl_net_core.c
net/ipv4/inet_connection_sock.c
net/ipv4/inet_diag.c
net/ipv4/tcp_cong.c
net/ipv4/tcp_output.c
net/ipv6/ip6_tunnel.c
net/ipv6/xfrm6_policy.c
net/mac80211/mlme.c
net/rxrpc/ar-recvmsg.c
net/sched/cls_u32.c
net/socket.c
net/wireless/nl80211.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 5652b005947fcf444bf7a8d1926e0100c0fac184,e6b790f0d9dc1ebfe6103a1549e84cf058522027..d8df78b6554d03176a7b4f3fd00eb30c6bd76e6a
@@@ -3508,10 -3412,14 +3553,15 @@@ static int be_vfs_if_create(struct be_a
        for_all_vfs(adapter, vf_cfg, vf) {
                if (!BE3_chip(adapter)) {
                        status = be_cmd_get_profile_config(adapter, &res,
 +                                                         RESOURCE_LIMITS,
                                                           vf + 1);
-                       if (!status)
+                       if (!status) {
                                cap_flags = res.if_cap_flags;
+                               /* Prevent VFs from enabling VLAN promiscuous
+                                * mode
+                                */
+                               cap_flags &= ~BE_IF_FLAGS_VLAN_PROMISCUOUS;
+                       }
                }
  
                status = be_if_create(adapter, &vf_cfg->if_handle,
@@@ -4988,182 -4842,41 +5040,183 @@@ static void be_netdev_init(struct net_d
        netdev->ethtool_ops = &be_ethtool_ops;
  }
  
 -static void be_unmap_pci_bars(struct be_adapter *adapter)
 +static void be_cleanup(struct be_adapter *adapter)
  {
 -      if (adapter->csr)
 -              pci_iounmap(adapter->pdev, adapter->csr);
 -      if (adapter->db)
 -              pci_iounmap(adapter->pdev, adapter->db);
 -}
 +      struct net_device *netdev = adapter->netdev;
  
 -static int db_bar(struct be_adapter *adapter)
 -{
 -      if (lancer_chip(adapter) || !be_physfn(adapter))
 -              return 0;
 -      else
 -              return 4;
 -}
 +      rtnl_lock();
 +      netif_device_detach(netdev);
 +      if (netif_running(netdev))
 +              be_close(netdev);
 +      rtnl_unlock();
  
 -static int be_roce_map_pci_bars(struct be_adapter *adapter)
 -{
 -      if (skyhawk_chip(adapter)) {
 -              adapter->roce_db.size = 4096;
 -              adapter->roce_db.io_addr = pci_resource_start(adapter->pdev,
 -                                                            db_bar(adapter));
 -              adapter->roce_db.total_size = pci_resource_len(adapter->pdev,
 -                                                             db_bar(adapter));
 -      }
 -      return 0;
 +      be_clear(adapter);
  }
  
 -static int be_map_pci_bars(struct be_adapter *adapter)
 +static int be_resume(struct be_adapter *adapter)
  {
 -      struct pci_dev *pdev = adapter->pdev;
 -      u8 __iomem *addr;
 +      struct net_device *netdev = adapter->netdev;
 +      int status;
  
 -      if (BEx_chip(adapter) && be_physfn(adapter)) {
 -              adapter->csr = pci_iomap(pdev, 2, 0);
 +      status = be_setup(adapter);
 +      if (status)
 +              return status;
 +
 +      if (netif_running(netdev)) {
 +              status = be_open(netdev);
 +              if (status)
 +                      return status;
 +      }
 +
 +      netif_device_attach(netdev);
 +
 +      return 0;
 +}
 +
 +static int be_err_recover(struct be_adapter *adapter)
 +{
 +      struct device *dev = &adapter->pdev->dev;
 +      int status;
 +
 +      status = be_resume(adapter);
 +      if (status)
 +              goto err;
 +
 +      dev_info(dev, "Adapter recovery successful\n");
 +      return 0;
 +err:
 +      if (be_physfn(adapter))
 +              dev_err(dev, "Adapter recovery failed\n");
 +      else
 +              dev_err(dev, "Re-trying adapter recovery\n");
 +
 +      return status;
 +}
 +
 +static void be_err_detection_task(struct work_struct *work)
 +{
 +      struct be_adapter *adapter =
 +                              container_of(work, struct be_adapter,
 +                                           be_err_detection_work.work);
 +      int status = 0;
 +
 +      be_detect_error(adapter);
 +
 +      if (adapter->hw_error) {
 +              be_cleanup(adapter);
 +
 +              /* As of now error recovery support is in Lancer only */
 +              if (lancer_chip(adapter))
 +                      status = be_err_recover(adapter);
 +      }
 +
 +      /* Always attempt recovery on VFs */
 +      if (!status || be_virtfn(adapter))
 +              be_schedule_err_detection(adapter);
 +}
 +
 +static void be_log_sfp_info(struct be_adapter *adapter)
 +{
 +      int status;
 +
 +      status = be_cmd_query_sfp_info(adapter);
 +      if (!status) {
 +              dev_err(&adapter->pdev->dev,
 +                      "Unqualified SFP+ detected on %c from %s part no: %s",
 +                      adapter->port_name, adapter->phy.vendor_name,
 +                      adapter->phy.vendor_pn);
 +      }
 +      adapter->flags &= ~BE_FLAGS_EVT_INCOMPATIBLE_SFP;
 +}
 +
 +static void be_worker(struct work_struct *work)
 +{
 +      struct be_adapter *adapter =
 +              container_of(work, struct be_adapter, work.work);
 +      struct be_rx_obj *rxo;
 +      int i;
 +
 +      /* when interrupts are not yet enabled, just reap any pending
 +       * mcc completions
 +       */
 +      if (!netif_running(adapter->netdev)) {
 +              local_bh_disable();
 +              be_process_mcc(adapter);
 +              local_bh_enable();
 +              goto reschedule;
 +      }
 +
 +      if (!adapter->stats_cmd_sent) {
 +              if (lancer_chip(adapter))
 +                      lancer_cmd_get_pport_stats(adapter,
 +                                                 &adapter->stats_cmd);
 +              else
 +                      be_cmd_get_stats(adapter, &adapter->stats_cmd);
 +      }
 +
 +      if (be_physfn(adapter) &&
 +          MODULO(adapter->work_counter, adapter->be_get_temp_freq) == 0)
 +              be_cmd_get_die_temperature(adapter);
 +
 +      for_all_rx_queues(adapter, rxo, i) {
 +              /* Replenish RX-queues starved due to memory
 +               * allocation failures.
 +               */
 +              if (rxo->rx_post_starved)
 +                      be_post_rx_frags(rxo, GFP_KERNEL, MAX_RX_POST);
 +      }
 +
 +      be_eqd_update(adapter);
 +
 +      if (adapter->flags & BE_FLAGS_EVT_INCOMPATIBLE_SFP)
 +              be_log_sfp_info(adapter);
 +
 +reschedule:
 +      adapter->work_counter++;
 +      schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000));
 +}
 +
 +static void be_unmap_pci_bars(struct be_adapter *adapter)
 +{
 +      if (adapter->csr)
 +              pci_iounmap(adapter->pdev, adapter->csr);
 +      if (adapter->db)
 +              pci_iounmap(adapter->pdev, adapter->db);
 +}
 +
 +static int db_bar(struct be_adapter *adapter)
 +{
 +      if (lancer_chip(adapter) || !be_physfn(adapter))
 +              return 0;
 +      else
 +              return 4;
 +}
 +
 +static int be_roce_map_pci_bars(struct be_adapter *adapter)
 +{
 +      if (skyhawk_chip(adapter)) {
 +              adapter->roce_db.size = 4096;
 +              adapter->roce_db.io_addr = pci_resource_start(adapter->pdev,
 +                                                            db_bar(adapter));
 +              adapter->roce_db.total_size = pci_resource_len(adapter->pdev,
 +                                                             db_bar(adapter));
 +      }
 +      return 0;
 +}
 +
 +static int be_map_pci_bars(struct be_adapter *adapter)
 +{
++      struct pci_dev *pdev = adapter->pdev;
 +      u8 __iomem *addr;
 +      u32 sli_intf;
 +
 +      pci_read_config_dword(adapter->pdev, SLI_INTF_REG_OFFSET, &sli_intf);
 +      adapter->sli_family = (sli_intf & SLI_INTF_FAMILY_MASK) >>
 +                              SLI_INTF_FAMILY_SHIFT;
 +      adapter->virtfn = (sli_intf & SLI_INTF_FT_MASK) ? 1 : 0;
 +
 +      if (BEx_chip(adapter) && be_physfn(adapter)) {
-               adapter->csr = pci_iomap(adapter->pdev, 2, 0);
++              adapter->csr = pci_iomap(pdev, 2, 0);
                if (!adapter->csr)
                        return -ENOMEM;
        }
Simple merge
Simple merge
Simple merge
Simple merge
index f0946b5dd7c88b2b833d59a60c0dd753e8399352,c47c8051da7770f2a2a89c9b33868151c62f0ff6..a75bb150ea275ef18fd6449e8c1d5543fc466bf6
@@@ -587,9 -1128,18 +587,11 @@@ int iwl_mvm_scan_offload_stop(struct iw
        if (mvm->scan_status == IWL_MVM_SCAN_NONE)
                return 0;
  
-       if (iwl_mvm_is_radio_killed(mvm))
+       if (iwl_mvm_is_radio_killed(mvm)) {
+               ret = 0;
                goto out;
+       }
  
 -      if (mvm->scan_status != IWL_MVM_SCAN_SCHED &&
 -          (!(mvm->fw->ucode_capa.api[0] & IWL_UCODE_TLV_API_LMAC_SCAN) ||
 -           mvm->scan_status != IWL_MVM_SCAN_OS)) {
 -              IWL_DEBUG_SCAN(mvm, "No scan to stop\n");
 -              return 0;
 -      }
 -
        iwl_init_notification_wait(&mvm->notif_wait, &wait_scan_done,
                                   scan_done_notif,
                                   ARRAY_SIZE(scan_done_notif),
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/compat.c
Simple merge
Simple merge
Simple merge
diff --cc net/core/sock.c
Simple merge
index e1c85db5216f7887071aed2a454ade57a2fcfb81,8ce351ffceb122568ae05587a0b1dc3544d476d7..95b6139d710c46825d1e43f825188d81fcb70f60
@@@ -24,6 -24,9 +24,8 @@@
  
  static int zero = 0;
  static int one = 1;
 -static int ushort_max = USHRT_MAX;
+ static int min_sndbuf = SOCK_MIN_SNDBUF;
+ static int min_rcvbuf = SOCK_MIN_RCVBUF;
  
  static int net_msg_warn;      /* Unused, but still a sysctl */
  
Simple merge
index 34073bbe270083a949aa008f42c75e8127bbaf03,592aff37366bb932c0aeb2bad944b5470374ec21..f984b2001d0acf5191f59b56157a0c29f0db1316
@@@ -66,39 -71,27 +66,53 @@@ static void inet_diag_unlock_handler(co
        mutex_unlock(&inet_diag_table_mutex);
  }
  
 +static void inet_diag_msg_common_fill(struct inet_diag_msg *r, struct sock *sk)
 +{
 +      r->idiag_family = sk->sk_family;
 +
 +      r->id.idiag_sport = htons(sk->sk_num);
 +      r->id.idiag_dport = sk->sk_dport;
 +      r->id.idiag_if = sk->sk_bound_dev_if;
 +      sock_diag_save_cookie(sk, r->id.idiag_cookie);
 +
 +#if IS_ENABLED(CONFIG_IPV6)
 +      if (sk->sk_family == AF_INET6) {
 +              *(struct in6_addr *)r->id.idiag_src = sk->sk_v6_rcv_saddr;
 +              *(struct in6_addr *)r->id.idiag_dst = sk->sk_v6_daddr;
 +      } else
 +#endif
 +      {
 +      memset(&r->id.idiag_src, 0, sizeof(r->id.idiag_src));
 +      memset(&r->id.idiag_dst, 0, sizeof(r->id.idiag_dst));
 +
 +      r->id.idiag_src[0] = sk->sk_rcv_saddr;
 +      r->id.idiag_dst[0] = sk->sk_daddr;
 +      }
 +}
 +
+ static size_t inet_sk_attr_size(void)
+ {
+       return    nla_total_size(sizeof(struct tcp_info))
+               + nla_total_size(1) /* INET_DIAG_SHUTDOWN */
+               + nla_total_size(1) /* INET_DIAG_TOS */
+               + nla_total_size(1) /* INET_DIAG_TCLASS */
+               + nla_total_size(sizeof(struct inet_diag_meminfo))
+               + nla_total_size(sizeof(struct inet_diag_msg))
+               + nla_total_size(SK_MEMINFO_VARS * sizeof(u32))
+               + nla_total_size(TCP_CA_NAME_MAX)
+               + nla_total_size(sizeof(struct tcpvegas_info))
+               + 64;
+ }
  int inet_sk_diag_fill(struct sock *sk, struct inet_connection_sock *icsk,
 -                            struct sk_buff *skb, struct inet_diag_req_v2 *req,
 -                            struct user_namespace *user_ns,                   
 -                            u32 portid, u32 seq, u16 nlmsg_flags,
 -                            const struct nlmsghdr *unlh)
 +                    struct sk_buff *skb, const struct inet_diag_req_v2 *req,
 +                    struct user_namespace *user_ns,
 +                    u32 portid, u32 seq, u16 nlmsg_flags,
 +                    const struct nlmsghdr *unlh)
  {
        const struct inet_sock *inet = inet_sk(sk);
 +      const struct inet_diag_handler *handler;
 +      int ext = req->idiag_ext;
        struct inet_diag_msg *r;
        struct nlmsghdr  *nlh;
        struct nlattr *attr;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/socket.c
Simple merge
Simple merge