Skip to content

Commit

Permalink
mac80211: remove tx_sync
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Johannes Berg authored and John W. Linville committed Mar 12, 2012
1 parent 3789d59 commit 177958e
Show file tree
Hide file tree
Showing 5 changed files with 0 additions and 161 deletions.
41 changes: 0 additions & 41 deletions include/net/mac80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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,
Expand Down
35 changes: 0 additions & 35 deletions net/mac80211/driver-ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down
43 changes: 0 additions & 43 deletions net/mac80211/driver-trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -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),

Expand Down
1 change: 0 additions & 1 deletion net/mac80211/ieee80211_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
41 changes: 0 additions & 41 deletions net/mac80211/mlme.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit 177958e

Please sign in to comment.