|
@@ -54,7 +54,7 @@ static void ieee80211_mesh_housekeeping_timer(unsigned long data)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- ieee80211_queue_work(&local->hw, &ifmsh->work);
|
|
|
+ ieee80211_queue_work(&local->hw, &sdata->work);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -345,7 +345,7 @@ static void ieee80211_mesh_path_timer(unsigned long data)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- ieee80211_queue_work(&local->hw, &ifmsh->work);
|
|
|
+ ieee80211_queue_work(&local->hw, &sdata->work);
|
|
|
}
|
|
|
|
|
|
static void ieee80211_mesh_path_root_timer(unsigned long data)
|
|
@@ -362,7 +362,7 @@ static void ieee80211_mesh_path_root_timer(unsigned long data)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- ieee80211_queue_work(&local->hw, &ifmsh->work);
|
|
|
+ ieee80211_queue_work(&local->hw, &sdata->work);
|
|
|
}
|
|
|
|
|
|
void ieee80211_mesh_root_setup(struct ieee80211_if_mesh *ifmsh)
|
|
@@ -484,9 +484,6 @@ void ieee80211_mesh_quiesce(struct ieee80211_sub_if_data *sdata)
|
|
|
{
|
|
|
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
|
|
|
|
|
|
- /* might restart the timer but that doesn't matter */
|
|
|
- cancel_work_sync(&ifmsh->work);
|
|
|
-
|
|
|
/* use atomic bitops in case both timers fire at the same time */
|
|
|
|
|
|
if (del_timer_sync(&ifmsh->housekeeping_timer))
|
|
@@ -518,7 +515,7 @@ void ieee80211_start_mesh(struct ieee80211_sub_if_data *sdata)
|
|
|
|
|
|
set_bit(MESH_WORK_HOUSEKEEPING, &ifmsh->wrkq_flags);
|
|
|
ieee80211_mesh_root_setup(ifmsh);
|
|
|
- ieee80211_queue_work(&local->hw, &ifmsh->work);
|
|
|
+ ieee80211_queue_work(&local->hw, &sdata->work);
|
|
|
sdata->vif.bss_conf.beacon_int = MESH_DEFAULT_BEACON_INTERVAL;
|
|
|
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON |
|
|
|
BSS_CHANGED_BEACON_ENABLED |
|
|
@@ -536,7 +533,7 @@ void ieee80211_stop_mesh(struct ieee80211_sub_if_data *sdata)
|
|
|
* whether the interface is running, which, at this point,
|
|
|
* it no longer is.
|
|
|
*/
|
|
|
- cancel_work_sync(&sdata->u.mesh.work);
|
|
|
+ cancel_work_sync(&sdata->work);
|
|
|
}
|
|
|
|
|
|
static void ieee80211_mesh_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
|
|
@@ -630,7 +627,7 @@ static void ieee80211_mesh_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
|
|
|
static void ieee80211_mesh_work(struct work_struct *work)
|
|
|
{
|
|
|
struct ieee80211_sub_if_data *sdata =
|
|
|
- container_of(work, struct ieee80211_sub_if_data, u.mesh.work);
|
|
|
+ container_of(work, struct ieee80211_sub_if_data, work);
|
|
|
struct ieee80211_local *local = sdata->local;
|
|
|
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
|
|
|
struct sk_buff *skb;
|
|
@@ -669,7 +666,7 @@ void ieee80211_mesh_notify_scan_completed(struct ieee80211_local *local)
|
|
|
rcu_read_lock();
|
|
|
list_for_each_entry_rcu(sdata, &local->interfaces, list)
|
|
|
if (ieee80211_vif_is_mesh(&sdata->vif))
|
|
|
- ieee80211_queue_work(&local->hw, &sdata->u.mesh.work);
|
|
|
+ ieee80211_queue_work(&local->hw, &sdata->work);
|
|
|
rcu_read_unlock();
|
|
|
}
|
|
|
|
|
@@ -677,7 +674,7 @@ void ieee80211_mesh_init_sdata(struct ieee80211_sub_if_data *sdata)
|
|
|
{
|
|
|
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
|
|
|
|
|
|
- INIT_WORK(&ifmsh->work, ieee80211_mesh_work);
|
|
|
+ INIT_WORK(&sdata->work, ieee80211_mesh_work);
|
|
|
setup_timer(&ifmsh->housekeeping_timer,
|
|
|
ieee80211_mesh_housekeeping_timer,
|
|
|
(unsigned long) sdata);
|
|
@@ -726,7 +723,6 @@ ieee80211_rx_result
|
|
|
ieee80211_mesh_rx_mgmt(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb)
|
|
|
{
|
|
|
struct ieee80211_local *local = sdata->local;
|
|
|
- struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
|
|
|
struct ieee80211_mgmt *mgmt;
|
|
|
u16 fc;
|
|
|
|
|
@@ -741,7 +737,7 @@ ieee80211_mesh_rx_mgmt(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb)
|
|
|
case IEEE80211_STYPE_PROBE_RESP:
|
|
|
case IEEE80211_STYPE_BEACON:
|
|
|
skb_queue_tail(&sdata->skb_queue, skb);
|
|
|
- ieee80211_queue_work(&local->hw, &ifmsh->work);
|
|
|
+ ieee80211_queue_work(&local->hw, &sdata->work);
|
|
|
return RX_QUEUED;
|
|
|
}
|
|
|
|