|
@@ -252,9 +252,11 @@ int iwl_mvm_sta_send_to_fw(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static void iwl_mvm_rx_agg_session_expired(unsigned long data)
|
|
|
+static void iwl_mvm_rx_agg_session_expired(struct timer_list *t)
|
|
|
{
|
|
|
- struct iwl_mvm_baid_data __rcu **rcu_ptr = (void *)data;
|
|
|
+ struct iwl_mvm_baid_data *data =
|
|
|
+ from_timer(data, t, session_timer);
|
|
|
+ struct iwl_mvm_baid_data __rcu **rcu_ptr = data->rcu_ptr;
|
|
|
struct iwl_mvm_baid_data *ba_data;
|
|
|
struct ieee80211_sta *sta;
|
|
|
struct iwl_mvm_sta *mvm_sta;
|
|
@@ -2160,10 +2162,8 @@ static void iwl_mvm_init_reorder_buffer(struct iwl_mvm *mvm,
|
|
|
reorder_buf->head_sn = ssn;
|
|
|
reorder_buf->buf_size = buf_size;
|
|
|
/* rx reorder timer */
|
|
|
- reorder_buf->reorder_timer.function =
|
|
|
- iwl_mvm_reorder_timer_expired;
|
|
|
- reorder_buf->reorder_timer.data = (unsigned long)reorder_buf;
|
|
|
- init_timer(&reorder_buf->reorder_timer);
|
|
|
+ timer_setup(&reorder_buf->reorder_timer,
|
|
|
+ iwl_mvm_reorder_timer_expired, 0);
|
|
|
spin_lock_init(&reorder_buf->lock);
|
|
|
reorder_buf->mvm = mvm;
|
|
|
reorder_buf->queue = i;
|
|
@@ -2286,9 +2286,9 @@ int iwl_mvm_sta_rx_agg(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
|
|
|
baid_data->baid = baid;
|
|
|
baid_data->timeout = timeout;
|
|
|
baid_data->last_rx = jiffies;
|
|
|
- setup_timer(&baid_data->session_timer,
|
|
|
- iwl_mvm_rx_agg_session_expired,
|
|
|
- (unsigned long)&mvm->baid_map[baid]);
|
|
|
+ baid_data->rcu_ptr = &mvm->baid_map[baid];
|
|
|
+ timer_setup(&baid_data->session_timer,
|
|
|
+ iwl_mvm_rx_agg_session_expired, 0);
|
|
|
baid_data->mvm = mvm;
|
|
|
baid_data->tid = tid;
|
|
|
baid_data->sta_id = mvm_sta->sta_id;
|