]> Pileus Git - ~andy/linux/blobdiff - net/mac80211/rx.c
caif_dev: fix sparse warnings for caif_flow_cb
[~andy/linux] / net / mac80211 / rx.c
index 1617e0bd4ca6a750e0f23f8fb5051bb53c468e48..bb73ed2d20b90e8ece75bdd41a331fecb9c9d7ac 100644 (file)
@@ -2027,7 +2027,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
        /* frame is in RMC, don't forward */
        if (ieee80211_is_data(hdr->frame_control) &&
            is_multicast_ether_addr(hdr->addr1) &&
-           mesh_rmc_check(hdr->addr3, mesh_hdr, rx->sdata))
+           mesh_rmc_check(rx->sdata, hdr->addr3, mesh_hdr))
                return RX_DROP_MONITOR;
 
        if (!ieee80211_is_data(hdr->frame_control) ||
@@ -2054,9 +2054,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
                }
 
                rcu_read_lock();
-               mppath = mpp_path_lookup(proxied_addr, sdata);
+               mppath = mpp_path_lookup(sdata, proxied_addr);
                if (!mppath) {
-                       mpp_path_add(proxied_addr, mpp_addr, sdata);
+                       mpp_path_add(sdata, proxied_addr, mpp_addr);
                } else {
                        spin_lock_bh(&mppath->state_lock);
                        if (!ether_addr_equal(mppath->mpp, mpp_addr))
@@ -2104,13 +2104,13 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
                memcpy(fwd_hdr->addr2, sdata->vif.addr, ETH_ALEN);
                /* update power mode indication when forwarding */
                ieee80211_mps_set_frame_flags(sdata, NULL, fwd_hdr);
-       } else if (!mesh_nexthop_lookup(fwd_skb, sdata)) {
+       } else if (!mesh_nexthop_lookup(sdata, fwd_skb)) {
                /* mesh power mode flags updated in mesh_nexthop_lookup */
                IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, fwded_unicast);
        } else {
                /* unable to resolve next hop */
-               mesh_path_error_tx(ifmsh->mshcfg.element_ttl, fwd_hdr->addr3,
-                                  0, reason, fwd_hdr->addr2, sdata);
+               mesh_path_error_tx(sdata, ifmsh->mshcfg.element_ttl,
+                                  fwd_hdr->addr3, 0, reason, fwd_hdr->addr2);
                IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_no_route);
                kfree_skb(fwd_skb);
                return RX_DROP_MONITOR;
@@ -2375,31 +2375,27 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
                switch (mgmt->u.action.u.ht_smps.action) {
                case WLAN_HT_ACTION_SMPS: {
                        struct ieee80211_supported_band *sband;
-                       u8 smps;
+                       enum ieee80211_smps_mode smps_mode;
 
                        /* convert to HT capability */
                        switch (mgmt->u.action.u.ht_smps.smps_control) {
                        case WLAN_HT_SMPS_CONTROL_DISABLED:
-                               smps = WLAN_HT_CAP_SM_PS_DISABLED;
+                               smps_mode = IEEE80211_SMPS_OFF;
                                break;
                        case WLAN_HT_SMPS_CONTROL_STATIC:
-                               smps = WLAN_HT_CAP_SM_PS_STATIC;
+                               smps_mode = IEEE80211_SMPS_STATIC;
                                break;
                        case WLAN_HT_SMPS_CONTROL_DYNAMIC:
-                               smps = WLAN_HT_CAP_SM_PS_DYNAMIC;
+                               smps_mode = IEEE80211_SMPS_DYNAMIC;
                                break;
                        default:
                                goto invalid;
                        }
-                       smps <<= IEEE80211_HT_CAP_SM_PS_SHIFT;
 
                        /* if no change do nothing */
-                       if ((rx->sta->sta.ht_cap.cap &
-                                       IEEE80211_HT_CAP_SM_PS) == smps)
+                       if (rx->sta->sta.smps_mode == smps_mode)
                                goto handled;
-
-                       rx->sta->sta.ht_cap.cap &= ~IEEE80211_HT_CAP_SM_PS;
-                       rx->sta->sta.ht_cap.cap |= smps;
+                       rx->sta->sta.smps_mode = smps_mode;
 
                        sband = rx->local->hw.wiphy->bands[status->band];
 
@@ -2459,7 +2455,8 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
                        opmode = mgmt->u.action.u.vht_opmode_notif.operating_mode;
 
                        ieee80211_vht_handle_opmode(rx->sdata, rx->sta,
-                                                   opmode, status->band);
+                                                   opmode, status->band,
+                                                   false);
                        goto handled;
                }
                default:
@@ -2717,8 +2714,9 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
                        return RX_DROP_MONITOR;
                break;
        case cpu_to_le16(IEEE80211_STYPE_PROBE_REQ):
-               /* process only for ibss */
-               if (sdata->vif.type != NL80211_IFTYPE_ADHOC)
+               /* process only for ibss and mesh */
+               if (sdata->vif.type != NL80211_IFTYPE_ADHOC &&
+                   sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
                        return RX_DROP_MONITOR;
                break;
        default: