mac80211: remove tx_sync
authorJohannes Berg <johannes.berg@intel.com>
Fri, 9 Mar 2012 11:49:21 +0000 (12:49 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 12 Mar 2012 18:19:38 +0000 (14:19 -0400)
When the station state callback was added, this
was no longer needed in theory. With the iwlwifi
changes to remove use of it landing, we can kill
the entire tx-sync framework again, RIP.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
include/net/mac80211.h
net/mac80211/driver-ops.h
net/mac80211/driver-trace.h
net/mac80211/ieee80211_i.h
net/mac80211/mlme.c

index f7917f7..44e4dfc 100644 (file)
@@ -1765,20 +1765,6 @@ enum ieee80211_ampdu_mlme_action {
        IEEE80211_AMPDU_TX_OPERATIONAL,
 };
 
-/**
- * enum ieee80211_tx_sync_type - TX sync type
- * @IEEE80211_TX_SYNC_AUTH: sync TX for authentication
- *     (and possibly also before direct probe)
- * @IEEE80211_TX_SYNC_ASSOC: sync TX for association
- * @IEEE80211_TX_SYNC_ACTION: sync TX for action frame
- *     (not implemented yet)
- */
-enum ieee80211_tx_sync_type {
-       IEEE80211_TX_SYNC_AUTH,
-       IEEE80211_TX_SYNC_ASSOC,
-       IEEE80211_TX_SYNC_ACTION,
-};
-
 /**
  * enum ieee80211_frame_release_type - frame release reason
  * @IEEE80211_FRAME_RELEASE_PSPOLL: frame released for PS-Poll
@@ -1889,26 +1875,6 @@ enum ieee80211_frame_release_type {
  *     of the bss parameters has changed when a call is made. The callback
  *     can sleep.
  *
- * @tx_sync: Called before a frame is sent to an AP/GO. In the GO case, the
- *     driver should sync with the GO's powersaving so the device doesn't
- *     transmit the frame while the GO is asleep. In the regular AP case
- *     it may be used by drivers for devices implementing other restrictions
- *     on talking to APs, e.g. due to regulatory enforcement or just HW
- *     restrictions.
- *     This function is called for every authentication, association and
- *     action frame separately since applications might attempt to auth
- *     with multiple APs before chosing one to associate to. If it returns
- *     an error, the corresponding authentication, association or frame
- *     transmission is aborted and reported as having failed. It is always
- *     called after tuning to the correct channel.
- *     The callback might be called multiple times before @finish_tx_sync
- *     (but @finish_tx_sync will be called once for each) but in practice
- *     this is unlikely to happen. It can also refuse in that case if the
- *     driver cannot handle that situation.
- *     This callback can sleep.
- * @finish_tx_sync: Called as a counterpart to @tx_sync, unless that returned
- *     an error. This callback can sleep.
- *
  * @prepare_multicast: Prepare for multicast filter configuration.
  *     This callback is optional, and its return value is passed
  *     to configure_filter(). This callback must be atomic.
@@ -2180,13 +2146,6 @@ struct ieee80211_ops {
                                 struct ieee80211_bss_conf *info,
                                 u32 changed);
 
-       int (*tx_sync)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
-                      const u8 *bssid, enum ieee80211_tx_sync_type type);
-       void (*finish_tx_sync)(struct ieee80211_hw *hw,
-                              struct ieee80211_vif *vif,
-                              const u8 *bssid,
-                              enum ieee80211_tx_sync_type type);
-
        u64 (*prepare_multicast)(struct ieee80211_hw *hw,
                                 struct netdev_hw_addr_list *mc_list);
        void (*configure_filter)(struct ieee80211_hw *hw,
index 70dfb64..af4691f 100644 (file)
@@ -168,41 +168,6 @@ static inline void drv_bss_info_changed(struct ieee80211_local *local,
        trace_drv_return_void(local);
 }
 
-static inline int drv_tx_sync(struct ieee80211_local *local,
-                             struct ieee80211_sub_if_data *sdata,
-                             const u8 *bssid,
-                             enum ieee80211_tx_sync_type type)
-{
-       int ret = 0;
-
-       might_sleep();
-
-       check_sdata_in_driver(sdata);
-
-       trace_drv_tx_sync(local, sdata, bssid, type);
-       if (local->ops->tx_sync)
-               ret = local->ops->tx_sync(&local->hw, &sdata->vif,
-                                         bssid, type);
-       trace_drv_return_int(local, ret);
-       return ret;
-}
-
-static inline void drv_finish_tx_sync(struct ieee80211_local *local,
-                                     struct ieee80211_sub_if_data *sdata,
-                                     const u8 *bssid,
-                                     enum ieee80211_tx_sync_type type)
-{
-       might_sleep();
-
-       check_sdata_in_driver(sdata);
-
-       trace_drv_finish_tx_sync(local, sdata, bssid, type);
-       if (local->ops->finish_tx_sync)
-               local->ops->finish_tx_sync(&local->hw, &sdata->vif,
-                                          bssid, type);
-       trace_drv_return_void(local);
-}
-
 static inline u64 drv_prepare_multicast(struct ieee80211_local *local,
                                        struct netdev_hw_addr_list *mc_list)
 {
index 384e2f0..7034209 100644 (file)
@@ -308,49 +308,6 @@ TRACE_EVENT(drv_bss_info_changed,
        )
 );
 
-DECLARE_EVENT_CLASS(tx_sync_evt,
-       TP_PROTO(struct ieee80211_local *local,
-                struct ieee80211_sub_if_data *sdata,
-                const u8 *bssid,
-                enum ieee80211_tx_sync_type type),
-       TP_ARGS(local, sdata, bssid, type),
-
-       TP_STRUCT__entry(
-               LOCAL_ENTRY
-               VIF_ENTRY
-               __array(char, bssid, ETH_ALEN)
-               __field(u32, sync_type)
-       ),
-
-       TP_fast_assign(
-               LOCAL_ASSIGN;
-               VIF_ASSIGN;
-               memcpy(__entry->bssid, bssid, ETH_ALEN);
-               __entry->sync_type = type;
-       ),
-
-       TP_printk(
-               LOCAL_PR_FMT  VIF_PR_FMT " bssid:%pM type:%d",
-               LOCAL_PR_ARG, VIF_PR_ARG, __entry->bssid, __entry->sync_type
-       )
-);
-
-DEFINE_EVENT(tx_sync_evt, drv_tx_sync,
-       TP_PROTO(struct ieee80211_local *local,
-                struct ieee80211_sub_if_data *sdata,
-                const u8 *bssid,
-                enum ieee80211_tx_sync_type type),
-       TP_ARGS(local, sdata, bssid, type)
-);
-
-DEFINE_EVENT(tx_sync_evt, drv_finish_tx_sync,
-       TP_PROTO(struct ieee80211_local *local,
-                struct ieee80211_sub_if_data *sdata,
-                const u8 *bssid,
-                enum ieee80211_tx_sync_type type),
-       TP_ARGS(local, sdata, bssid, type)
-);
-
 TRACE_EVENT(drv_prepare_multicast,
        TP_PROTO(struct ieee80211_local *local, int mc_count),
 
index 796b13b..3c62ded 100644 (file)
@@ -388,7 +388,6 @@ struct ieee80211_mgd_auth_data {
 
        u8 key[WLAN_KEY_LEN_WEP104];
        u8 key_len, key_idx;
-       bool synced;
        bool done;
 
        size_t ie_len;
index c08924a..1d09df2 100644 (file)
@@ -1770,11 +1770,6 @@ static void ieee80211_destroy_auth_data(struct ieee80211_sub_if_data *sdata,
 
        lockdep_assert_held(&sdata->u.mgd.mtx);
 
-       if (auth_data->synced)
-               drv_finish_tx_sync(sdata->local, sdata,
-                                  auth_data->bss->bssid,
-                                  IEEE80211_TX_SYNC_AUTH);
-
        if (!assoc) {
                sta_info_destroy_addr(sdata, auth_data->bss->bssid);
 
@@ -1862,10 +1857,6 @@ ieee80211_rx_mgmt_auth(struct ieee80211_sub_if_data *sdata,
 
        printk(KERN_DEBUG "%s: authenticated\n", sdata->name);
  out:
-       if (ifmgd->auth_data->synced)
-               drv_finish_tx_sync(sdata->local, sdata, bssid,
-                                  IEEE80211_TX_SYNC_AUTH);
-       ifmgd->auth_data->synced = false;
        ifmgd->auth_data->done = true;
        ifmgd->auth_data->timeout = jiffies + IEEE80211_AUTH_WAIT_ASSOC;
        run_again(ifmgd, ifmgd->auth_data->timeout);
@@ -2005,11 +1996,6 @@ static void ieee80211_destroy_assoc_data(struct ieee80211_sub_if_data *sdata,
 
        lockdep_assert_held(&sdata->u.mgd.mtx);
 
-       if (assoc_data->synced)
-               drv_finish_tx_sync(sdata->local, sdata,
-                                  assoc_data->bss->bssid,
-                                  IEEE80211_TX_SYNC_ASSOC);
-
        if (!assoc) {
                sta_info_destroy_addr(sdata, assoc_data->bss->bssid);
 
@@ -2255,14 +2241,6 @@ ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
        } else {
                printk(KERN_DEBUG "%s: associated\n", sdata->name);
 
-               /* tell driver about sync done first */
-               if (assoc_data->synced) {
-                       drv_finish_tx_sync(sdata->local, sdata,
-                                          assoc_data->bss->bssid,
-                                          IEEE80211_TX_SYNC_ASSOC);
-                       assoc_data->synced = false;
-               }
-
                if (!ieee80211_assoc_success(sdata, *bss, mgmt, len)) {
                        /* oops -- internal error -- send timeout for now */
                        ieee80211_destroy_assoc_data(sdata, true);
@@ -2747,14 +2725,6 @@ static int ieee80211_probe_auth(struct ieee80211_sub_if_data *sdata)
        if (WARN_ON_ONCE(!auth_data))
                return -EINVAL;
 
-       if (!auth_data->synced) {
-               int ret = drv_tx_sync(local, sdata, auth_data->bss->bssid,
-                                     IEEE80211_TX_SYNC_AUTH);
-               if (ret)
-                       return ret;
-       }
-       auth_data->synced = true;
-
        auth_data->tries++;
 
        if (auth_data->tries > IEEE80211_AUTH_MAX_TRIES) {
@@ -2811,14 +2781,6 @@ static int ieee80211_do_assoc(struct ieee80211_sub_if_data *sdata)
 
        lockdep_assert_held(&sdata->u.mgd.mtx);
 
-       if (!assoc_data->synced) {
-               int ret = drv_tx_sync(local, sdata, assoc_data->bss->bssid,
-                                     IEEE80211_TX_SYNC_ASSOC);
-               if (ret)
-                       return ret;
-       }
-       assoc_data->synced = true;
-
        assoc_data->tries++;
        if (assoc_data->tries > IEEE80211_ASSOC_MAX_TRIES) {
                printk(KERN_DEBUG "%s: association with %pM timed out\n",
@@ -3245,9 +3207,6 @@ int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata,
 
        err = ieee80211_probe_auth(sdata);
        if (err) {
-               if (auth_data->synced)
-                       drv_finish_tx_sync(local, sdata, req->bss->bssid,
-                                          IEEE80211_TX_SYNC_AUTH);
                sta_info_destroy_addr(sdata, req->bss->bssid);
                goto err_clear;
        }