Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorJakub Kicinski <kuba@kernel.org>
Fri, 11 Mar 2022 01:16:56 +0000 (17:16 -0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 11 Mar 2022 01:16:56 +0000 (17:16 -0800)
net/dsa/dsa2.c
  commit afb3cc1a397d ("net: dsa: unlock the rtnl_mutex when dsa_master_setup() fails")
  commit e83d56537859 ("net: dsa: replay master state events in dsa_tree_{setup,teardown}_master")
https://lore.kernel.org/all/20220307101436.7ae87da0@canb.auug.org.au/

drivers/net/ethernet/intel/ice/ice.h
  commit 97b0129146b1 ("ice: Fix error with handling of bonding MTU")
  commit 43113ff73453 ("ice: add TTY for GNSS module for E810T device")
https://lore.kernel.org/all/20220310112843.3233bcf1@canb.auug.org.au/

drivers/staging/gdm724x/gdm_lte.c
  commit fc7f750dc9d1 ("staging: gdm724x: fix use after free in gdm_lte_rx()")
  commit 4bcc4249b4cf ("staging: Use netif_rx().")
https://lore.kernel.org/all/20220308111043.1018a59d@canb.auug.org.au/

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
35 files changed:
1  2 
MAINTAINERS
arch/arm64/include/asm/insn.h
arch/x86/kernel/alternative.c
arch/x86/net/bpf_jit_comp.c
drivers/net/dsa/mt7530.c
drivers/net/ethernet/cadence/macb_main.c
drivers/net/ethernet/intel/i40e/i40e_debugfs.c
drivers/net/ethernet/intel/iavf/iavf.h
drivers/net/ethernet/intel/iavf/iavf_main.c
drivers/net/ethernet/intel/iavf/iavf_virtchnl.c
drivers/net/ethernet/intel/ice/ice.h
drivers/net/ethernet/intel/ice/ice_ethtool.c
drivers/net/ethernet/intel/ice/ice_main.c
drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c
drivers/net/ethernet/intel/ice/ice_virtchnl_pf.h
drivers/net/ethernet/marvell/prestera/prestera_main.c
drivers/net/ethernet/mellanox/mlx5/core/cmd.c
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
drivers/net/ethernet/mellanox/mlx5/core/lag/mp.c
drivers/net/ethernet/qlogic/qed/qed_sriov.c
drivers/net/ethernet/xilinx/xilinx_emaclite.c
drivers/net/usb/smsc95xx.c
drivers/spi/spi.c
drivers/staging/gdm724x/gdm_lte.c
include/linux/bpf.h
include/linux/mlx5/mlx5_ifc.h
include/linux/netdevice.h
include/linux/phy.h
net/bluetooth/hci_sync.c
net/bluetooth/mgmt.c
net/core/gro.c
net/core/xdp.c
net/dsa/dsa2.c
net/tipc/bearer.c
net/xfrm/xfrm_interface.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -2886,15 -2721,14 +2886,16 @@@ continue_reset
        /* kill and reinit the admin queue */
        iavf_shutdown_adminq(hw);
        adapter->current_op = VIRTCHNL_OP_UNKNOWN;
 -      err = iavf_init_adminq(hw);
 -      if (err)
 +      status = iavf_init_adminq(hw);
 +      if (status) {
                dev_info(&adapter->pdev->dev, "Failed to init adminq: %d\n",
 -                       err);
 +                       status);
 +              goto reset_err;
 +      }
        adapter->aq_required = 0;
  
-       if (adapter->flags & IAVF_FLAG_REINIT_ITR_NEEDED) {
+       if ((adapter->flags & IAVF_FLAG_REINIT_MSIX_NEEDED) ||
+           (adapter->flags & IAVF_FLAG_REINIT_ITR_NEEDED)) {
                err = iavf_reinit_interrupt_scheme(adapter);
                if (err)
                        goto reset_err;
@@@ -1819,15 -1827,29 +1819,31 @@@ void iavf_del_adv_rss_cfg(struct iavf_a
   *
   * Request that the PF reset this VF. No response is expected.
   **/
 -void iavf_request_reset(struct iavf_adapter *adapter)
 +int iavf_request_reset(struct iavf_adapter *adapter)
  {
 +      int err;
        /* Don't check CURRENT_OP - this is always higher priority */
 -      iavf_send_pf_msg(adapter, VIRTCHNL_OP_RESET_VF, NULL, 0);
 +      err = iavf_send_pf_msg(adapter, VIRTCHNL_OP_RESET_VF, NULL, 0);
        adapter->current_op = VIRTCHNL_OP_UNKNOWN;
 +      return err;
  }
  
+ /**
+  * iavf_netdev_features_vlan_strip_set - update vlan strip status
+  * @netdev: ptr to netdev being adjusted
+  * @enable: enable or disable vlan strip
+  *
+  * Helper function to change vlan strip status in netdev->features.
+  */
+ static void iavf_netdev_features_vlan_strip_set(struct net_device *netdev,
+                                               const bool enable)
+ {
+       if (enable)
+               netdev->features |= NETIF_F_HW_VLAN_CTAG_RX;
+       else
+               netdev->features &= ~NETIF_F_HW_VLAN_CTAG_RX;
+ }
  /**
   * iavf_virtchnl_completion
   * @adapter: adapter structure
@@@ -484,10 -481,9 +484,11 @@@ enum ice_pf_flags 
        ICE_FLAG_LEGACY_RX,
        ICE_FLAG_VF_TRUE_PROMISC_ENA,
        ICE_FLAG_MDD_AUTO_RESET_VF,
 +      ICE_FLAG_VF_VLAN_PRUNING,
        ICE_FLAG_LINK_LENIENT_MODE_ENA,
        ICE_FLAG_PLUG_AUX_DEV,
+       ICE_FLAG_MTU_CHANGED,
 +      ICE_FLAG_GNSS,                  /* GNSS successfully initialized */
        ICE_PF_FLAGS_NBITS              /* must be last */
  };
  
@@@ -896,7 -898,17 +897,16 @@@ static inline void ice_set_rdma_cap(str
   */
  static inline void ice_clear_rdma_cap(struct ice_pf *pf)
  {
-       ice_unplug_aux_dev(pf);
+       /* We can directly unplug aux device here only if the flag bit
+        * ICE_FLAG_PLUG_AUX_DEV is not set because ice_unplug_aux_dev()
+        * could race with ice_plug_aux_dev() called from
+        * ice_service_task(). In this case we only clear that bit now and
+        * aux device will be unplugged later once ice_plug_aux_device()
+        * called from ice_service_task() finishes (see ice_service_task()).
+        */
+       if (!test_and_clear_bit(ICE_FLAG_PLUG_AUX_DEV, pf->flags))
+               ice_unplug_aux_dev(pf);
        clear_bit(ICE_FLAG_RDMA_ENA, pf->flags);
 -      clear_bit(ICE_FLAG_AUX_ENA, pf->flags);
  }
  #endif /* _ICE_H_ */
@@@ -2362,27 -2173,15 +2362,9 @@@ ice_vc_send_msg_to_vf(struct ice_vf *vf
        struct ice_pf *pf;
        int aq_ret;
  
 -      if (!vf)
 -              return -EINVAL;
 -
        pf = vf->pf;
 -      if (ice_validate_vf_id(pf, vf->vf_id))
 -              return -EINVAL;
 -
        dev = ice_pf_to_dev(pf);
  
-       /* single place to detect unsuccessful return values */
-       if (v_retval) {
-               vf->num_inval_msgs++;
-               dev_info(dev, "VF %d failed opcode %d, retval: %d\n", vf->vf_id,
-                        v_opcode, v_retval);
-               if (vf->num_inval_msgs > ICE_DFLT_NUM_INVAL_MSGS_ALLOWED) {
-                       dev_err(dev, "Number of invalid messages exceeded for VF %d\n",
-                               vf->vf_id);
-                       dev_err(dev, "Use PF Control I/F to enable the VF\n");
-                       set_bit(ICE_VF_STATE_DIS, vf->vf_states);
-                       return -EIO;
-               }
-       } else {
-               vf->num_valid_msgs++;
-               /* reset the invalid counter, if a valid message is received. */
-               vf->num_inval_msgs = 0;
-       }
        aq_ret = ice_aq_send_msg_to_vf(&pf->hw, vf->vf_id, v_opcode, v_retval,
                                       msg, msglen, NULL);
        if (aq_ret && pf->hw.mailboxq.sq_last_status != ICE_AQ_RC_ENOSYS) {
Simple merge
Simple merge
@@@ -76,9 -76,10 +76,10 @@@ static void tx_complete(void *arg
  
  static int gdm_lte_rx(struct sk_buff *skb, struct nic *nic, int nic_type)
  {
-       int ret;
+       int ret, len;
  
 -      ret = netif_rx_ni(skb);
+       len = skb->len + ETH_HLEN;
 +      ret = netif_rx(skb);
        if (ret == NET_RX_DROP) {
                nic->stats.rx_dropped++;
        } else {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/gro.c
Simple merge
diff --cc net/core/xdp.c
Simple merge
diff --cc net/dsa/dsa2.c
@@@ -1055,18 -1064,9 +1055,18 @@@ static int dsa_tree_setup_master(struc
  
        list_for_each_entry(dp, &dst->ports, list) {
                if (dsa_port_is_cpu(dp)) {
 -                      err = dsa_master_setup(dp->master, dp);
 +                      struct net_device *master = dp->master;
 +                      bool admin_up = (master->flags & IFF_UP) &&
 +                                      !qdisc_tx_is_noop(master);
 +
 +                      err = dsa_master_setup(master, dp);
                        if (err)
-                               return err;
+                               break;
 +
 +                      /* Replay master state event */
 +                      dsa_tree_master_admin_state_change(dst, master, admin_up);
 +                      dsa_tree_master_oper_state_change(dst, master,
 +                                                        netif_oper_up(master));
                }
        }
  
Simple merge
Simple merge