From: Johannes Berg <johannes.b...@intel.com>

The pointer is pretty useless, you can always reach the
hw struct by sta->sdata->local or in other ways, so we
can remove it.

Signed-off-by: Johannes Berg <johannes.b...@intel.com>
---
 net/mac80211/agg-rx.c      |  6 +++---
 net/mac80211/agg-tx.c      |  4 ++--
 net/mac80211/cfg.c         |  4 ++--
 net/mac80211/debugfs_sta.c |  4 ++--
 net/mac80211/rx.c          |  6 +++---
 net/mac80211/sta_info.c    | 23 +++++++++++------------
 net/mac80211/sta_info.h    |  1 -
 net/mac80211/status.c      |  2 +-
 net/mac80211/tx.c          |  2 +-
 9 files changed, 25 insertions(+), 27 deletions(-)

diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
index 5c564a68fb50..8300b3864450 100644
--- a/net/mac80211/agg-rx.c
+++ b/net/mac80211/agg-rx.c
@@ -59,7 +59,7 @@ static void ieee80211_free_tid_rx(struct rcu_head *h)
 void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,
                                     u16 initiator, u16 reason, bool tx)
 {
-       struct ieee80211_local *local = sta->local;
+       struct ieee80211_local *local = sta->sdata->local;
        struct tid_ampdu_rx *tid_rx;
 
        lockdep_assert_held(&sta->ampdu_mlme.mtx);
@@ -126,7 +126,7 @@ void ieee80211_stop_rx_ba_session(struct ieee80211_vif 
*vif, u16 ba_rx_bitmap,
                if (ba_rx_bitmap & BIT(i))
                        set_bit(i, sta->ampdu_mlme.tid_rx_stop_requested);
 
-       ieee80211_queue_work(&sta->local->hw, &sta->ampdu_mlme.work);
+       ieee80211_queue_work(&sdata->local->hw, &sta->ampdu_mlme.work);
        rcu_read_unlock();
 }
 EXPORT_SYMBOL(ieee80211_stop_rx_ba_session);
@@ -167,7 +167,7 @@ static void sta_rx_agg_session_timer_expired(unsigned long 
data)
               sta->sta.addr, (u16)*ptid);
 
        set_bit(*ptid, sta->ampdu_mlme.tid_rx_timer_expired);
-       ieee80211_queue_work(&sta->local->hw, &sta->ampdu_mlme.work);
+       ieee80211_queue_work(&sta->sdata->local->hw, &sta->ampdu_mlme.work);
 }
 
 static void sta_rx_agg_reorder_timer_expired(unsigned long data)
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index c8ba2e77737c..b9a448f482de 100644
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -292,7 +292,7 @@ static void ieee80211_remove_tid_tx(struct sta_info *sta, 
int tid)
 int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
                                    enum ieee80211_agg_stop_reason reason)
 {
-       struct ieee80211_local *local = sta->local;
+       struct ieee80211_local *local = sta->sdata->local;
        struct tid_ampdu_tx *tid_tx;
        enum ieee80211_ampdu_mlme_action action;
        int ret;
@@ -442,8 +442,8 @@ static void sta_addba_resp_timer_expired(unsigned long data)
 void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid)
 {
        struct tid_ampdu_tx *tid_tx;
-       struct ieee80211_local *local = sta->local;
        struct ieee80211_sub_if_data *sdata = sta->sdata;
+       struct ieee80211_local *local = sdata->local;
        u16 start_seq_num;
        int ret;
 
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 5789d8353505..fdec0f966ae8 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -452,7 +452,7 @@ void sta_set_rate_info_tx(struct sta_info *sta,
                int shift = ieee80211_vif_get_shift(&sta->sdata->vif);
                u16 brate;
 
-               sband = sta->local->hw.wiphy->bands[
+               sband = sta->sdata->local->hw.wiphy->bands[
                                ieee80211_get_sdata_band(sta->sdata)];
                brate = sband->bitrates[rate->idx].bitrate;
                rinfo->legacy = DIV_ROUND_UP(brate, 1 << shift);
@@ -485,7 +485,7 @@ void sta_set_rate_info_rx(struct sta_info *sta, struct 
rate_info *rinfo)
                int shift = ieee80211_vif_get_shift(&sta->sdata->vif);
                u16 brate;
 
-               sband = sta->local->hw.wiphy->bands[
+               sband = sta->sdata->local->hw.wiphy->bands[
                                ieee80211_get_sdata_band(sta->sdata)];
                brate = sband->bitrates[sta->last_rx_rate_idx].bitrate;
                rinfo->legacy = DIV_ROUND_UP(brate, 1 << shift);
diff --git a/net/mac80211/debugfs_sta.c b/net/mac80211/debugfs_sta.c
index 06d52935036d..d770ab92db23 100644
--- a/net/mac80211/debugfs_sta.c
+++ b/net/mac80211/debugfs_sta.c
@@ -335,8 +335,8 @@ STA_OPS(vht_capa);
 
 void ieee80211_sta_debugfs_add(struct sta_info *sta)
 {
-       struct ieee80211_local *local = sta->local;
        struct ieee80211_sub_if_data *sdata = sta->sdata;
+       struct ieee80211_local *local = sdata->local;
        struct dentry *stations_dir = sta->sdata->debugfs.subdir_stations;
        u8 mac[3*ETH_ALEN];
 
@@ -386,8 +386,8 @@ void ieee80211_sta_debugfs_add(struct sta_info *sta)
 
 void ieee80211_sta_debugfs_remove(struct sta_info *sta)
 {
-       struct ieee80211_local *local = sta->local;
        struct ieee80211_sub_if_data *sdata = sta->sdata;
+       struct ieee80211_local *local = sdata->local;
 
        drv_sta_remove_debugfs(local, sdata, &sta->sta, sta->debugfs.dir);
        debugfs_remove_recursive(sta->debugfs.dir);
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index eae50d095930..7067866a6836 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1280,7 +1280,7 @@ int ieee80211_sta_ps_transition(struct ieee80211_sta 
*pubsta, bool start)
        struct sta_info *sta = container_of(pubsta, struct sta_info, sta);
        bool in_ps;
 
-       WARN_ON(!ieee80211_hw_check(&sta->local->hw, AP_LINK_PS));
+       WARN_ON(!ieee80211_hw_check(&sta->sdata->local->hw, AP_LINK_PS));
 
        /* Don't let the same PS state be set twice */
        in_ps = test_sta_flag(sta, WLAN_STA_PS_STA);
@@ -1451,7 +1451,7 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx)
         * Change STA power saving mode only at the end of a frame
         * exchange sequence.
         */
-       if (!ieee80211_hw_check(&sta->local->hw, AP_LINK_PS) &&
+       if (!ieee80211_hw_check(&rx->local->hw, AP_LINK_PS) &&
            !ieee80211_has_morefrags(hdr->frame_control) &&
            !(status->rx_flags & IEEE80211_RX_DEFERRED_RELEASE) &&
            (rx->sdata->vif.type == NL80211_IFTYPE_AP ||
@@ -3248,7 +3248,7 @@ void ieee80211_release_reorder_timeout(struct sta_info 
*sta, int tid)
        struct ieee80211_rx_data rx = {
                .sta = sta,
                .sdata = sta->sdata,
-               .local = sta->local,
+               .local = sta->sdata->local,
                /* This is OK -- must be QoS data frame */
                .security_idx = tid,
                .seqno_idx = tid,
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 494422729132..15f8bb5c3550 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -334,7 +334,6 @@ struct sta_info *sta_info_alloc(struct 
ieee80211_sub_if_data *sdata,
 
        memcpy(sta->addr, addr, ETH_ALEN);
        memcpy(sta->sta.addr, addr, ETH_ALEN);
-       sta->local = local;
        sta->sdata = sdata;
        sta->last_rx = jiffies;
 
@@ -488,8 +487,8 @@ static int sta_info_insert_drv_state(struct ieee80211_local 
*local,
  */
 static int sta_info_insert_finish(struct sta_info *sta) __acquires(RCU)
 {
-       struct ieee80211_local *local = sta->local;
        struct ieee80211_sub_if_data *sdata = sta->sdata;
+       struct ieee80211_local *local = sdata->local;
        struct station_info sinfo;
        int err = 0;
 
@@ -555,7 +554,7 @@ static int sta_info_insert_finish(struct sta_info *sta) 
__acquires(RCU)
 
 int sta_info_insert_rcu(struct sta_info *sta) __acquires(RCU)
 {
-       struct ieee80211_local *local = sta->local;
+       struct ieee80211_local *local = sta->sdata->local;
        int err;
 
        might_sleep();
@@ -634,7 +633,7 @@ static unsigned long ieee80211_tids_for_ac(int ac)
 
 static void __sta_info_recalc_tim(struct sta_info *sta, bool ignore_pending)
 {
-       struct ieee80211_local *local = sta->local;
+       struct ieee80211_local *local = sta->sdata->local;
        struct ps_data *ps;
        bool indicate_tim = false;
        u8 ignore_for_tim = sta->sta.uapsd_queues;
@@ -849,8 +848,8 @@ static int __must_check __sta_info_destroy_part1(struct 
sta_info *sta)
        if (!sta)
                return -ENOENT;
 
-       local = sta->local;
        sdata = sta->sdata;
+       local = sdata->local;
 
        lockdep_assert_held(&local->sta_mtx);
 
@@ -889,8 +888,8 @@ static int __must_check __sta_info_destroy_part1(struct 
sta_info *sta)
 
 static void __sta_info_destroy_part2(struct sta_info *sta)
 {
-       struct ieee80211_local *local = sta->local;
        struct ieee80211_sub_if_data *sdata = sta->sdata;
+       struct ieee80211_local *local = sdata->local;
        struct station_info sinfo = {};
        int ret;
 
@@ -1631,7 +1630,7 @@ void ieee80211_sta_block_awake(struct ieee80211_hw *hw,
 {
        struct sta_info *sta = container_of(pubsta, struct sta_info, sta);
 
-       trace_api_sta_block_awake(sta->local, pubsta, block);
+       trace_api_sta_block_awake(sta->sdata->local, pubsta, block);
 
        if (block) {
                set_sta_flag(sta, WLAN_STA_PS_DRIVER);
@@ -1661,7 +1660,7 @@ EXPORT_SYMBOL(ieee80211_sta_block_awake);
 void ieee80211_sta_eosp(struct ieee80211_sta *pubsta)
 {
        struct sta_info *sta = container_of(pubsta, struct sta_info, sta);
-       struct ieee80211_local *local = sta->local;
+       struct ieee80211_local *local = sta->sdata->local;
 
        trace_api_eosp(local, pubsta);
 
@@ -1677,7 +1676,7 @@ void ieee80211_sta_set_buffered(struct ieee80211_sta 
*pubsta,
        if (WARN_ON(tid >= IEEE80211_NUM_TIDS))
                return;
 
-       trace_api_sta_set_buffered(sta->local, pubsta, tid, buffered);
+       trace_api_sta_set_buffered(sta->sdata->local, pubsta, tid, buffered);
 
        if (buffered)
                set_bit(tid, &sta->driver_buffered_tids);
@@ -1730,7 +1729,7 @@ int sta_info_move_state(struct sta_info *sta,
         * fail the transition
         */
        if (test_sta_flag(sta, WLAN_STA_INSERTED)) {
-               int err = drv_sta_state(sta->local, sta->sdata, sta,
+               int err = drv_sta_state(sta->sdata->local, sta->sdata, sta,
                                        sta->sta_state, new_state);
                if (err)
                        return err;
@@ -1937,8 +1936,8 @@ void sta_set_sinfo(struct sta_info *sta, struct 
station_info *sinfo)
                sinfo->rx_beacon_signal_avg = ieee80211_ave_rssi(&sdata->vif);
        }
 
-       if (ieee80211_hw_check(&sta->local->hw, SIGNAL_DBM) ||
-           ieee80211_hw_check(&sta->local->hw, SIGNAL_UNSPEC)) {
+       if (ieee80211_hw_check(&local->hw, SIGNAL_DBM) ||
+           ieee80211_hw_check(&local->hw, SIGNAL_UNSPEC)) {
                if (!(sinfo->filled & BIT(NL80211_STA_INFO_SIGNAL))) {
                        sinfo->signal = (s8)sta->last_signal;
                        sinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
index 013fa5ac36e2..4adad72a54fc 100644
--- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h
@@ -416,7 +416,6 @@ struct sta_info {
        struct rcu_head rcu_head;
        struct rhash_head hash_node;
        u8 addr[ETH_ALEN];
-       struct ieee80211_local *local;
        struct ieee80211_sub_if_data *sdata;
        struct ieee80211_key __rcu *gtk[NUM_DEFAULT_KEYS + 
NUM_DEFAULT_MGMT_KEYS];
        struct ieee80211_key __rcu *ptk[NUM_DEFAULT_KEYS];
diff --git a/net/mac80211/status.c b/net/mac80211/status.c
index fe145668a30c..7bc6add7f360 100644
--- a/net/mac80211/status.c
+++ b/net/mac80211/status.c
@@ -178,8 +178,8 @@ static void ieee80211_check_pending_bar(struct sta_info 
*sta, u8 *addr, u8 tid)
 static void ieee80211_frame_acked(struct sta_info *sta, struct sk_buff *skb)
 {
        struct ieee80211_mgmt *mgmt = (void *) skb->data;
-       struct ieee80211_local *local = sta->local;
        struct ieee80211_sub_if_data *sdata = sta->sdata;
+       struct ieee80211_local *local = sdata->local;
 
        if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS))
                sta->last_rx = jiffies;
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 9489b5da5a46..3a24648dbcbc 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -2423,8 +2423,8 @@ static struct sk_buff *ieee80211_build_hdr(struct 
ieee80211_sub_if_data *sdata,
 void ieee80211_check_fast_xmit(struct sta_info *sta)
 {
        struct ieee80211_fast_tx build = {}, *fast_tx = NULL, *old;
-       struct ieee80211_local *local = sta->local;
        struct ieee80211_sub_if_data *sdata = sta->sdata;
+       struct ieee80211_local *local = sdata->local;
        struct ieee80211_hdr *hdr = (void *)build.hdr;
        struct ieee80211_chanctx_conf *chanctx_conf;
        __le16 fc;
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to