aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/rx.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r--net/mac80211/rx.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index a19089565c4b..c98be0593756 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1452,6 +1452,10 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx)
1452 } 1452 }
1453 } 1453 }
1454 1454
1455 /* mesh power save support */
1456 if (ieee80211_vif_is_mesh(&rx->sdata->vif))
1457 ieee80211_mps_rx_h_sta_process(sta, hdr);
1458
1455 /* 1459 /*
1456 * Drop (qos-)data::nullfunc frames silently, since they 1460 * Drop (qos-)data::nullfunc frames silently, since they
1457 * are used only to control station power saving mode. 1461 * are used only to control station power saving mode.
@@ -2090,7 +2094,10 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
2090 if (is_multicast_ether_addr(fwd_hdr->addr1)) { 2094 if (is_multicast_ether_addr(fwd_hdr->addr1)) {
2091 IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, fwded_mcast); 2095 IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, fwded_mcast);
2092 memcpy(fwd_hdr->addr2, sdata->vif.addr, ETH_ALEN); 2096 memcpy(fwd_hdr->addr2, sdata->vif.addr, ETH_ALEN);
2097 /* update power mode indication when forwarding */
2098 ieee80211_mps_set_frame_flags(sdata, NULL, fwd_hdr);
2093 } else if (!mesh_nexthop_lookup(fwd_skb, sdata)) { 2099 } else if (!mesh_nexthop_lookup(fwd_skb, sdata)) {
2100 /* mesh power mode flags updated in mesh_nexthop_lookup */
2094 IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, fwded_unicast); 2101 IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, fwded_unicast);
2095 } else { 2102 } else {
2096 /* unable to resolve next hop */ 2103 /* unable to resolve next hop */