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>
 
        /* 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;
 
   *
   * 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
 
        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 */
  };
  
   */
  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_ */
 
        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) {
 
  
  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 {
 
  
        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));
                }
        }