Commit bdcbd8e0 authored by Johannes Berg's avatar Johannes Berg

mac80211: clean up debugging

There are a few things that make the logging and
debugging in mac80211 less useful than it should
be right now:
 * a lot of messages should be pr_info, not pr_debug
 * wholesale use of pr_debug makes it require *both*
   Kconfig and dynamic configuration
 * there are still a lot of ifdefs
 * the style is very inconsistent, sometimes the
   sdata->name is printed in front

Clean up everything, introducing new macros and
separating out the station MLME debugging into
a new Kconfig symbol.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent d3b2fb53
...@@ -3842,28 +3842,4 @@ int ieee80211_add_ext_srates_ie(struct ieee80211_vif *vif, ...@@ -3842,28 +3842,4 @@ int ieee80211_add_ext_srates_ie(struct ieee80211_vif *vif,
*/ */
int ieee80211_ave_rssi(struct ieee80211_vif *vif); int ieee80211_ave_rssi(struct ieee80211_vif *vif);
/* Extra debugging macros */
#ifdef CONFIG_MAC80211_HT_DEBUG
#define ht_vdbg(fmt, ...) \
pr_debug(fmt, ##__VA_ARGS__)
#else
#define ht_vdbg(fmt, ...) \
do { \
if (0) \
pr_debug(fmt, ##__VA_ARGS__); \
} while (0)
#endif
#ifdef CONFIG_MAC80211_IBSS_DEBUG
#define ibss_vdbg(fmt, ...) \
pr_debug(fmt, ##__VA_ARGS__)
#else
#define ibss_vdbg(fmt, ...) \
do { \
if (0) \
pr_debug(fmt, ##__VA_ARGS__); \
} while (0)
#endif
#endif /* MAC80211_H */ #endif /* MAC80211_H */
...@@ -140,6 +140,26 @@ config MAC80211_VERBOSE_DEBUG ...@@ -140,6 +140,26 @@ config MAC80211_VERBOSE_DEBUG
Do not select this option. Do not select this option.
config MAC80211_MLME_DEBUG
bool "Verbose managed MLME output"
depends on MAC80211_DEBUG_MENU
---help---
Selecting this option causes mac80211 to print out
debugging messages for the managed-mode MLME. It
should not be selected on production systems as some
of the messages are remotely triggerable.
Do not select this option.
config MAC80211_STA_DEBUG
bool "Verbose station debugging"
depends on MAC80211_DEBUG_MENU
---help---
Selecting this option causes mac80211 to print out
debugging messages for station addition/removal.
Do not select this option.
config MAC80211_HT_DEBUG config MAC80211_HT_DEBUG
bool "Verbose HT debugging" bool "Verbose HT debugging"
depends on MAC80211_DEBUG_MENU depends on MAC80211_DEBUG_MENU
...@@ -163,7 +183,7 @@ config MAC80211_IBSS_DEBUG ...@@ -163,7 +183,7 @@ config MAC80211_IBSS_DEBUG
Do not select this option. Do not select this option.
config MAC80211_VERBOSE_PS_DEBUG config MAC80211_PS_DEBUG
bool "Verbose powersave mode debugging" bool "Verbose powersave mode debugging"
depends on MAC80211_DEBUG_MENU depends on MAC80211_DEBUG_MENU
---help--- ---help---
...@@ -175,7 +195,7 @@ config MAC80211_VERBOSE_PS_DEBUG ...@@ -175,7 +195,7 @@ config MAC80211_VERBOSE_PS_DEBUG
Do not select this option. Do not select this option.
config MAC80211_VERBOSE_MPL_DEBUG config MAC80211_MPL_DEBUG
bool "Verbose mesh peer link debugging" bool "Verbose mesh peer link debugging"
depends on MAC80211_DEBUG_MENU depends on MAC80211_DEBUG_MENU
depends on MAC80211_MESH depends on MAC80211_MESH
...@@ -188,7 +208,7 @@ config MAC80211_VERBOSE_MPL_DEBUG ...@@ -188,7 +208,7 @@ config MAC80211_VERBOSE_MPL_DEBUG
Do not select this option. Do not select this option.
config MAC80211_VERBOSE_MPATH_DEBUG config MAC80211_MPATH_DEBUG
bool "Verbose mesh path debugging" bool "Verbose mesh path debugging"
depends on MAC80211_DEBUG_MENU depends on MAC80211_DEBUG_MENU
depends on MAC80211_MESH depends on MAC80211_MESH
...@@ -201,7 +221,7 @@ config MAC80211_VERBOSE_MPATH_DEBUG ...@@ -201,7 +221,7 @@ config MAC80211_VERBOSE_MPATH_DEBUG
Do not select this option. Do not select this option.
config MAC80211_VERBOSE_MHWMP_DEBUG config MAC80211_MHWMP_DEBUG
bool "Verbose mesh HWMP routing debugging" bool "Verbose mesh HWMP routing debugging"
depends on MAC80211_DEBUG_MENU depends on MAC80211_DEBUG_MENU
depends on MAC80211_MESH depends on MAC80211_MESH
...@@ -214,7 +234,7 @@ config MAC80211_VERBOSE_MHWMP_DEBUG ...@@ -214,7 +234,7 @@ config MAC80211_VERBOSE_MHWMP_DEBUG
Do not select this option. Do not select this option.
config MAC80211_VERBOSE_MESH_SYNC_DEBUG config MAC80211_MESH_SYNC_DEBUG
bool "Verbose mesh mesh synchronization debugging" bool "Verbose mesh mesh synchronization debugging"
depends on MAC80211_DEBUG_MENU depends on MAC80211_DEBUG_MENU
depends on MAC80211_MESH depends on MAC80211_MESH
...@@ -225,7 +245,7 @@ config MAC80211_VERBOSE_MESH_SYNC_DEBUG ...@@ -225,7 +245,7 @@ config MAC80211_VERBOSE_MESH_SYNC_DEBUG
Do not select this option. Do not select this option.
config MAC80211_VERBOSE_TDLS_DEBUG config MAC80211_TDLS_DEBUG
bool "Verbose TDLS debugging" bool "Verbose TDLS debugging"
depends on MAC80211_DEBUG_MENU depends on MAC80211_DEBUG_MENU
---help--- ---help---
......
...@@ -58,4 +58,4 @@ mac80211-$(CONFIG_MAC80211_RC_PID) += $(rc80211_pid-y) ...@@ -58,4 +58,4 @@ mac80211-$(CONFIG_MAC80211_RC_PID) += $(rc80211_pid-y)
mac80211-$(CONFIG_MAC80211_RC_MINSTREL) += $(rc80211_minstrel-y) mac80211-$(CONFIG_MAC80211_RC_MINSTREL) += $(rc80211_minstrel-y)
mac80211-$(CONFIG_MAC80211_RC_MINSTREL_HT) += $(rc80211_minstrel_ht-y) mac80211-$(CONFIG_MAC80211_RC_MINSTREL_HT) += $(rc80211_minstrel_ht-y)
ccflags-y += -D__CHECK_ENDIAN__ ccflags-y += -D__CHECK_ENDIAN__ -DDEBUG
...@@ -74,15 +74,17 @@ void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, ...@@ -74,15 +74,17 @@ void ___ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid,
RCU_INIT_POINTER(sta->ampdu_mlme.tid_rx[tid], NULL); RCU_INIT_POINTER(sta->ampdu_mlme.tid_rx[tid], NULL);
ht_vdbg("Rx BA session stop requested for %pM tid %u %s reason: %d\n", ht_dbg(sta->sdata,
sta->sta.addr, tid, "Rx BA session stop requested for %pM tid %u %s reason: %d\n",
initiator == WLAN_BACK_RECIPIENT ? "recipient" : "inititator", sta->sta.addr, tid,
(int)reason); initiator == WLAN_BACK_RECIPIENT ? "recipient" : "inititator",
(int)reason);
if (drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_STOP, if (drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_STOP,
&sta->sta, tid, NULL, 0)) &sta->sta, tid, NULL, 0))
pr_debug("HW problem - can not stop rx aggregation for tid %d\n", sdata_info(sta->sdata,
tid); "HW problem - can not stop rx aggregation for tid %d\n",
tid);
/* check if this is a self generated aggregation halt */ /* check if this is a self generated aggregation halt */
if (initiator == WLAN_BACK_RECIPIENT && tx) if (initiator == WLAN_BACK_RECIPIENT && tx)
...@@ -157,7 +159,7 @@ static void sta_rx_agg_session_timer_expired(unsigned long data) ...@@ -157,7 +159,7 @@ static void sta_rx_agg_session_timer_expired(unsigned long data)
} }
rcu_read_unlock(); rcu_read_unlock();
ht_vdbg("rx session timer expired on tid %d\n", (u16)*ptid); ht_dbg(sta->sdata, "rx session timer expired on tid %d\n", (u16)*ptid);
set_bit(*ptid, sta->ampdu_mlme.tid_rx_timer_expired); set_bit(*ptid, sta->ampdu_mlme.tid_rx_timer_expired);
ieee80211_queue_work(&sta->local->hw, &sta->ampdu_mlme.work); ieee80211_queue_work(&sta->local->hw, &sta->ampdu_mlme.work);
...@@ -245,7 +247,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, ...@@ -245,7 +247,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
status = WLAN_STATUS_REQUEST_DECLINED; status = WLAN_STATUS_REQUEST_DECLINED;
if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) { if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) {
ht_vdbg("Suspend in progress - Denying ADDBA request\n"); ht_dbg(sta->sdata, "Suspend in progress - Denying ADDBA request\n");
goto end_no_lock; goto end_no_lock;
} }
...@@ -257,10 +259,9 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, ...@@ -257,10 +259,9 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
(!(sta->sta.ht_cap.cap & IEEE80211_HT_CAP_DELAY_BA))) || (!(sta->sta.ht_cap.cap & IEEE80211_HT_CAP_DELAY_BA))) ||
(buf_size > IEEE80211_MAX_AMPDU_BUF)) { (buf_size > IEEE80211_MAX_AMPDU_BUF)) {
status = WLAN_STATUS_INVALID_QOS_PARAM; status = WLAN_STATUS_INVALID_QOS_PARAM;
#ifdef CONFIG_MAC80211_HT_DEBUG ht_dbg_ratelimited(sta->sdata,
net_dbg_ratelimited("AddBA Req with bad params from %pM on tid %u. policy %d, buffer size %d\n", "AddBA Req with bad params from %pM on tid %u. policy %d, buffer size %d\n",
mgmt->sa, tid, ba_policy, buf_size); mgmt->sa, tid, ba_policy, buf_size);
#endif /* CONFIG_MAC80211_HT_DEBUG */
goto end_no_lock; goto end_no_lock;
} }
/* determine default buffer size */ /* determine default buffer size */
...@@ -275,10 +276,9 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, ...@@ -275,10 +276,9 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
mutex_lock(&sta->ampdu_mlme.mtx); mutex_lock(&sta->ampdu_mlme.mtx);
if (sta->ampdu_mlme.tid_rx[tid]) { if (sta->ampdu_mlme.tid_rx[tid]) {
#ifdef CONFIG_MAC80211_HT_DEBUG ht_dbg_ratelimited(sta->sdata,
net_dbg_ratelimited("unexpected AddBA Req from %pM on tid %u\n", "unexpected AddBA Req from %pM on tid %u\n",
mgmt->sa, tid); mgmt->sa, tid);
#endif /* CONFIG_MAC80211_HT_DEBUG */
/* delete existing Rx BA session on the same tid */ /* delete existing Rx BA session on the same tid */
___ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_RECIPIENT, ___ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_RECIPIENT,
...@@ -317,7 +317,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, ...@@ -317,7 +317,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
ret = drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_START, ret = drv_ampdu_action(local, sta->sdata, IEEE80211_AMPDU_RX_START,
&sta->sta, tid, &start_seq_num, 0); &sta->sta, tid, &start_seq_num, 0);
ht_vdbg("Rx A-MPDU request on tid %d result %d\n", tid, ret); ht_dbg(sta->sdata, "Rx A-MPDU request on tid %d result %d\n", tid, ret);
if (ret) { if (ret) {
kfree(tid_agg_rx->reorder_buf); kfree(tid_agg_rx->reorder_buf);
kfree(tid_agg_rx->reorder_time); kfree(tid_agg_rx->reorder_time);
......
...@@ -184,8 +184,8 @@ int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid, ...@@ -184,8 +184,8 @@ int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,
spin_unlock_bh(&sta->lock); spin_unlock_bh(&sta->lock);
ht_vdbg("Tx BA session stop requested for %pM tid %u\n", ht_dbg(sta->sdata, "Tx BA session stop requested for %pM tid %u\n",
sta->sta.addr, tid); sta->sta.addr, tid);
del_timer_sync(&tid_tx->addba_resp_timer); del_timer_sync(&tid_tx->addba_resp_timer);
del_timer_sync(&tid_tx->session_timer); del_timer_sync(&tid_tx->session_timer);
...@@ -251,12 +251,13 @@ static void sta_addba_resp_timer_expired(unsigned long data) ...@@ -251,12 +251,13 @@ static void sta_addba_resp_timer_expired(unsigned long data)
if (!tid_tx || if (!tid_tx ||
test_bit(HT_AGG_STATE_RESPONSE_RECEIVED, &tid_tx->state)) { test_bit(HT_AGG_STATE_RESPONSE_RECEIVED, &tid_tx->state)) {
rcu_read_unlock(); rcu_read_unlock();
ht_vdbg("timer expired on tid %d but we are not (or no longer) expecting addBA response there\n", ht_dbg(sta->sdata,
tid); "timer expired on tid %d but we are not (or no longer) expecting addBA response there\n",
tid);
return; return;
} }
ht_vdbg("addBA response timer expired on tid %d\n", tid); ht_dbg(sta->sdata, "addBA response timer expired on tid %d\n", tid);
ieee80211_stop_tx_ba_session(&sta->sta, tid); ieee80211_stop_tx_ba_session(&sta->sta, tid);
rcu_read_unlock(); rcu_read_unlock();
...@@ -316,8 +317,9 @@ ieee80211_agg_splice_packets(struct ieee80211_sub_if_data *sdata, ...@@ -316,8 +317,9 @@ ieee80211_agg_splice_packets(struct ieee80211_sub_if_data *sdata,
ieee80211_stop_queue_agg(sdata, tid); ieee80211_stop_queue_agg(sdata, tid);
if (WARN(!tid_tx, "TID %d gone but expected when splicing aggregates" if (WARN(!tid_tx,
" from the pending queue\n", tid)) "TID %d gone but expected when splicing aggregates from the pending queue\n",
tid))
return; return;
if (!skb_queue_empty(&tid_tx->pending)) { if (!skb_queue_empty(&tid_tx->pending)) {
...@@ -365,7 +367,8 @@ void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid) ...@@ -365,7 +367,8 @@ void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid)
ret = drv_ampdu_action(local, sdata, IEEE80211_AMPDU_TX_START, ret = drv_ampdu_action(local, sdata, IEEE80211_AMPDU_TX_START,
&sta->sta, tid, &start_seq_num, 0); &sta->sta, tid, &start_seq_num, 0);
if (ret) { if (ret) {
ht_vdbg("BA request denied - HW unavailable for tid %d\n", tid); ht_dbg(sdata,
"BA request denied - HW unavailable for tid %d\n", tid);
spin_lock_bh(&sta->lock); spin_lock_bh(&sta->lock);
ieee80211_agg_splice_packets(sdata, tid_tx, tid); ieee80211_agg_splice_packets(sdata, tid_tx, tid);
ieee80211_assign_tid_tx(sta, tid, NULL); ieee80211_assign_tid_tx(sta, tid, NULL);
...@@ -378,7 +381,7 @@ void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid) ...@@ -378,7 +381,7 @@ void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid)
/* activate the timer for the recipient's addBA response */ /* activate the timer for the recipient's addBA response */
mod_timer(&tid_tx->addba_resp_timer, jiffies + ADDBA_RESP_INTERVAL); mod_timer(&tid_tx->addba_resp_timer, jiffies + ADDBA_RESP_INTERVAL);
ht_vdbg("activated addBA response timer on tid %d\n", tid); ht_dbg(sdata, "activated addBA response timer on tid %d\n", tid);
spin_lock_bh(&sta->lock); spin_lock_bh(&sta->lock);
sta->ampdu_mlme.last_addba_req_time[tid] = jiffies; sta->ampdu_mlme.last_addba_req_time[tid] = jiffies;
...@@ -425,7 +428,7 @@ static void sta_tx_agg_session_timer_expired(unsigned long data) ...@@ -425,7 +428,7 @@ static void sta_tx_agg_session_timer_expired(unsigned long data)
rcu_read_unlock(); rcu_read_unlock();
ht_vdbg("tx session timer expired on tid %d\n", (u16)*ptid); ht_dbg(sta->sdata, "tx session timer expired on tid %d\n", (u16)*ptid);
ieee80211_stop_tx_ba_session(&sta->sta, *ptid); ieee80211_stop_tx_ba_session(&sta->sta, *ptid);
} }
...@@ -449,8 +452,8 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, ...@@ -449,8 +452,8 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
(local->hw.flags & IEEE80211_HW_TX_AMPDU_SETUP_IN_HW)) (local->hw.flags & IEEE80211_HW_TX_AMPDU_SETUP_IN_HW))
return -EINVAL; return -EINVAL;
ht_vdbg("Open BA session requested for %pM tid %u\n", ht_dbg(sdata, "Open BA session requested for %pM tid %u\n",
pubsta->addr, tid); pubsta->addr, tid);
if (sdata->vif.type != NL80211_IFTYPE_STATION && if (sdata->vif.type != NL80211_IFTYPE_STATION &&
sdata->vif.type != NL80211_IFTYPE_MESH_POINT && sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
...@@ -460,7 +463,8 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, ...@@ -460,7 +463,8 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
return -EINVAL; return -EINVAL;
if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) { if (test_sta_flag(sta, WLAN_STA_BLOCK_BA)) {
ht_vdbg("BA sessions blocked - Denying BA session request\n"); ht_dbg(sdata,
"BA sessions blocked - Denying BA session request\n");
return -EINVAL; return -EINVAL;
} }
...@@ -478,8 +482,9 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, ...@@ -478,8 +482,9 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
*/ */
if (sta->sdata->vif.type == NL80211_IFTYPE_ADHOC && if (sta->sdata->vif.type == NL80211_IFTYPE_ADHOC &&
!sta->sta.ht_cap.ht_supported) { !sta->sta.ht_cap.ht_supported) {
ht_vdbg("BA request denied - IBSS STA %pM does not advertise HT support\n", ht_dbg(sdata,
pubsta->addr); "BA request denied - IBSS STA %pM does not advertise HT support\n",
pubsta->addr);
return -EINVAL; return -EINVAL;
} }
...@@ -499,8 +504,9 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, ...@@ -499,8 +504,9 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_BURST_RETRIES && if (sta->ampdu_mlme.addba_req_num[tid] > HT_AGG_BURST_RETRIES &&
time_before(jiffies, sta->ampdu_mlme.last_addba_req_time[tid] + time_before(jiffies, sta->ampdu_mlme.last_addba_req_time[tid] +
HT_AGG_RETRIES_PERIOD)) { HT_AGG_RETRIES_PERIOD)) {
ht_vdbg("BA request denied - waiting a grace period after %d failed requests on tid %u\n", ht_dbg(sdata,
sta->ampdu_mlme.addba_req_num[tid], tid); "BA request denied - waiting a grace period after %d failed requests on tid %u\n",
sta->ampdu_mlme.addba_req_num[tid], tid);
ret = -EBUSY; ret = -EBUSY;
goto err_unlock_sta; goto err_unlock_sta;
} }
...@@ -508,8 +514,9 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, ...@@ -508,8 +514,9 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid,
tid_tx = rcu_dereference_protected_tid_tx(sta, tid); tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
/* check if the TID is not in aggregation flow already */ /* check if the TID is not in aggregation flow already */
if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) { if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) {
ht_vdbg("BA request denied - session is not idle on tid %u\n", ht_dbg(sdata,
tid); "BA request denied - session is not idle on tid %u\n",
tid);
ret = -EAGAIN; ret = -EAGAIN;
goto err_unlock_sta; goto err_unlock_sta;
} }
...@@ -564,7 +571,7 @@ static void ieee80211_agg_tx_operational(struct ieee80211_local *local, ...@@ -564,7 +571,7 @@ static void ieee80211_agg_tx_operational(struct ieee80211_local *local,
tid_tx = rcu_dereference_protected_tid_tx(sta, tid); tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
ht_vdbg("Aggregation is on for tid %d\n", tid); ht_dbg(sta->sdata, "Aggregation is on for tid %d\n", tid);
drv_ampdu_action(local, sta->sdata, drv_ampdu_action(local, sta->sdata,
IEEE80211_AMPDU_TX_OPERATIONAL, IEEE80211_AMPDU_TX_OPERATIONAL,
...@@ -598,7 +605,8 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid) ...@@ -598,7 +605,8 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid)
trace_api_start_tx_ba_cb(sdata, ra, tid); trace_api_start_tx_ba_cb(sdata, ra, tid);
if (tid >= STA_TID_NUM) { if (tid >= STA_TID_NUM) {
ht_vdbg("Bad TID value: tid = %d (>= %d)\n", tid, STA_TID_NUM); ht_dbg(sdata, "Bad TID value: tid = %d (>= %d)\n",
tid, STA_TID_NUM);
return; return;
} }
...@@ -606,7 +614,7 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid) ...@@ -606,7 +614,7 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid)
sta = sta_info_get_bss(sdata, ra); sta = sta_info_get_bss(sdata, ra);
if (!sta) { if (!sta) {
mutex_unlock(&local->sta_mtx); mutex_unlock(&local->sta_mtx);
ht_vdbg("Could not find station: %pM\n", ra); ht_dbg(sdata, "Could not find station: %pM\n", ra);
return; return;
} }
...@@ -614,7 +622,7 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid) ...@@ -614,7 +622,7 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid)
tid_tx = rcu_dereference_protected_tid_tx(sta, tid); tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
if (WARN_ON(!tid_tx)) { if (WARN_ON(!tid_tx)) {
ht_vdbg("addBA was not requested!\n"); ht_dbg(sdata, "addBA was not requested!\n");
goto unlock; goto unlock;
} }
...@@ -714,17 +722,18 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid) ...@@ -714,17 +722,18 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid)
trace_api_stop_tx_ba_cb(sdata, ra, tid); trace_api_stop_tx_ba_cb(sdata, ra, tid);
if (tid >= STA_TID_NUM) { if (tid >= STA_TID_NUM) {
ht_vdbg("Bad TID value: tid = %d (>= %d)\n", tid, STA_TID_NUM); ht_dbg(sdata, "Bad TID value: tid = %d (>= %d)\n",
tid, STA_TID_NUM);
return; return;
} }
ht_vdbg("Stopping Tx BA session for %pM tid %d\n", ra, tid); ht_dbg(sdata, "Stopping Tx BA session for %pM tid %d\n", ra, tid);
mutex_lock(&local->sta_mtx); mutex_lock(&local->sta_mtx);
sta = sta_info_get_bss(sdata, ra); sta = sta_info_get_bss(sdata, ra);
if (!sta) { if (!sta) {
ht_vdbg("Could not find station: %pM\n", ra); ht_dbg(sdata, "Could not find station: %pM\n", ra);
goto unlock; goto unlock;
} }
...@@ -733,7 +742,7 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid) ...@@ -733,7 +742,7 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid)
tid_tx = rcu_dereference_protected_tid_tx(sta, tid); tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
if (!tid_tx || !test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { if (!tid_tx || !test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) {
ht_vdbg("unexpected callback to A-MPDU stop\n"); ht_dbg(sdata, "unexpected callback to A-MPDU stop\n");
goto unlock_sta; goto unlock_sta;
} }
...@@ -809,13 +818,13 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local, ...@@ -809,13 +818,13 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local,
goto out; goto out;
if (mgmt->u.action.u.addba_resp.dialog_token != tid_tx->dialog_token) { if (mgmt->u.action.u.addba_resp.dialog_token != tid_tx->dialog_token) {
ht_vdbg("wrong addBA response token, tid %d\n", tid); ht_dbg(sta->sdata, "wrong addBA response token, tid %d\n", tid);
goto out; goto out;
} }
del_timer_sync(&tid_tx->addba_resp_timer); del_timer_sync(&tid_tx->addba_resp_timer);
ht_vdbg("switched off addBA timer for tid %d\n", tid); ht_dbg(sta->sdata, "switched off addBA timer for tid %d\n", tid);
/* /*
* addba_resp_timer may have fired before we got here, and * addba_resp_timer may have fired before we got here, and
...@@ -824,8 +833,9 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local, ...@@ -824,8 +833,9 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local,
*/ */
if (test_bit(HT_AGG_STATE_WANT_STOP, &tid_tx->state) || if (test_bit(HT_AGG_STATE_WANT_STOP, &tid_tx->state) ||
test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) {
ht_vdbg("got addBA resp for tid %d but we already gave up\n", ht_dbg(sta->sdata,
tid); "got addBA resp for tid %d but we already gave up\n",
tid);
goto out; goto out;
} }
......
...@@ -2771,9 +2771,8 @@ static int ieee80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev, ...@@ -2771,9 +2771,8 @@ static int ieee80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev,
!sdata->u.mgd.associated) !sdata->u.mgd.associated)
return -EINVAL; return -EINVAL;
#ifdef CONFIG_MAC80211_VERBOSE_TDLS_DEBUG tdls_dbg(sdata, "TDLS mgmt action %d peer %pM\n",
pr_debug("TDLS mgmt action %d peer %pM\n", action_code, peer); action_code, peer);
#endif
skb = dev_alloc_skb(local->hw.extra_tx_headroom + skb = dev_alloc_skb(local->hw.extra_tx_headroom +
max(sizeof(struct ieee80211_mgmt), max(sizeof(struct ieee80211_mgmt),
...@@ -2882,9 +2881,7 @@ static int ieee80211_tdls_oper(struct wiphy *wiphy, struct net_device *dev, ...@@ -2882,9 +2881,7 @@ static int ieee80211_tdls_oper(struct wiphy *wiphy, struct net_device *dev,
if (sdata->vif.type != NL80211_IFTYPE_STATION) if (sdata->vif.type != NL80211_IFTYPE_STATION)
return -EINVAL; return -EINVAL;
#ifdef CONFIG_MAC80211_VERBOSE_TDLS_DEBUG tdls_dbg(sdata, "TDLS oper %d peer %pM\n", oper, peer);
pr_debug("TDLS oper %d peer %pM\n", oper, peer);
#endif
switch (oper) { switch (oper) {
case NL80211_TDLS_ENABLE_LINK: case NL80211_TDLS_ENABLE_LINK:
......
#ifndef __MAC80211_DEBUG_H
#define __MAC80211_DEBUG_H
#ifdef CONFIG_MAC80211_IBSS_DEBUG
#define MAC80211_IBSS_DEBUG 1
#else
#define MAC80211_IBSS_DEBUG 0
#endif
#ifdef CONFIG_MAC80211_PS_DEBUG
#define MAC80211_PS_DEBUG 1
#else
#define MAC80211_PS_DEBUG 0
#endif
#ifdef CONFIG_MAC80211_HT_DEBUG
#define MAC80211_HT_DEBUG 1
#else
#define MAC80211_HT_DEBUG 0
#endif
#ifdef CONFIG_MAC80211_MPL_DEBUG
#define MAC80211_MPL_DEBUG 1
#else
#define MAC80211_MPL_DEBUG 0
#endif
#ifdef CONFIG_MAC80211_MPATH_DEBUG
#define MAC80211_MPATH_DEBUG 1
#else
#define MAC80211_MPATH_DEBUG 0
#endif
#ifdef CONFIG_MAC80211_MHWMP_DEBUG
#define MAC80211_MHWMP_DEBUG 1
#else
#define MAC80211_MHWMP_DEBUG 0
#endif
#ifdef CONFIG_MAC80211_MESH_SYNC_DEBUG
#define MAC80211_MESH_SYNC_DEBUG 1
#else
#define MAC80211_MESH_SYNC_DEBUG 0
#endif
#ifdef CONFIG_MAC80211_TDLS_DEBUG
#define MAC80211_TDLS_DEBUG 1
#else
#define MAC80211_TDLS_DEBUG 0
#endif
#ifdef CONFIG_MAC80211_STA_DEBUG
#define MAC80211_STA_DEBUG 1
#else
#define MAC80211_STA_DEBUG 0
#endif
#ifdef CONFIG_MAC80211_MLME_DEBUG
#define MAC80211_MLME_DEBUG 1
#else
#define MAC80211_MLME_DEBUG 0
#endif
#define _sdata_info(sdata, fmt, ...) \
do { \
pr_info("%s: " fmt, \
(sdata)->name, ##__VA_ARGS__); \
} while (0)
#define _sdata_dbg(print, sdata, fmt, ...) \
do { \
if (print) \
pr_debug("%s: " fmt, \
(sdata)->name, ##__VA_ARGS__); \
} while (0)
#define _sdata_err(sdata, fmt, ...) \
do { \
pr_err("%s: " fmt, \
(sdata)->name, ##__VA_ARGS__); \
} while (0)
#define _wiphy_dbg(print, wiphy, fmt, ...) \
do { \
if (print) \
wiphy_dbg((wiphy), fmt, ##__VA_ARGS__); \
} while (0)
#define sdata_info(sdata, fmt, ...) \
_sdata_info(sdata, fmt, ##__VA_ARGS__)
#define sdata_err(sdata, fmt, ...) \
_sdata_err(sdata, fmt, ##__VA_ARGS__)
#define sdata_dbg(sdata, fmt, ...) \
_sdata_dbg(1, sdata, fmt, ##__VA_ARGS__)
#define ht_dbg(sdata, fmt, ...) \
_sdata_dbg(MAC80211_HT_DEBUG, \
sdata, fmt, ##__VA_ARGS__)
#define ht_dbg_ratelimited(sdata, fmt, ...) \
_sdata_dbg(MAC80211_HT_DEBUG && net_ratelimit(), \
sdata, fmt, ##__VA_ARGS__)
#define ibss_dbg(sdata, fmt, ...) \
_sdata_dbg(MAC80211_IBSS_DEBUG, \
sdata, fmt, ##__VA_ARGS__)
#define ps_dbg(sdata, fmt, ...) \
_sdata_dbg(MAC80211_PS_DEBUG, \
sdata, fmt, ##__VA_ARGS__)
#define ps_dbg_hw(hw, fmt, ...) \
_wiphy_dbg(MAC80211_PS_DEBUG, \
(hw)->wiphy, fmt, ##__VA_ARGS__)
#define ps_dbg_ratelimited(sdata, fmt, ...) \
_sdata_dbg(MAC80211_PS_DEBUG && net_ratelimit(), \
sdata, fmt, ##__VA_ARGS__)
#define mpl_dbg(sdata, fmt, ...) \
_sdata_dbg(MAC80211_MPL_DEBUG, \
sdata, fmt, ##__VA_ARGS__)
#define mpath_dbg(sdata, fmt, ...) \
_sdata_dbg(MAC80211_MPATH_DEBUG, \
sdata, fmt, ##__VA_ARGS__)
#define mhwmp_dbg(sdata, fmt, ...) \
_sdata_dbg(MAC80211_MHWMP_DEBUG, \
sdata, fmt, ##__VA_ARGS__)
#define msync_dbg(sdata, fmt, ...) \
_sdata_dbg(MAC80211_MESH_SYNC_DEBUG, \
sdata, fmt, ##__VA_ARGS__)
#define tdls_dbg(sdata, fmt, ...) \
_sdata_dbg(MAC80211_TDLS_DEBUG, \
sdata, fmt, ##__VA_ARGS__)
#define sta_dbg(sdata, fmt, ...) \
_sdata_dbg(MAC80211_STA_DEBUG, \
sdata, fmt, ##__VA_ARGS__)
#define mlme_dbg(sdata, fmt, ...) \
_sdata_dbg(MAC80211_MLME_DEBUG, \
sdata, fmt, ##__VA_ARGS__)
#define mlme_dbg_ratelimited(sdata, fmt, ...) \
_sdata_dbg(MAC80211_MLME_DEBUG && net_ratelimit(), \
sdata, fmt, ##__VA_ARGS__)
#endif /* __MAC80211_DEBUG_H */
...@@ -695,6 +695,7 @@ void ieee80211_debugfs_rename_netdev(struct ieee80211_sub_if_data *sdata) ...@@ -695,6 +695,7 @@ void ieee80211_debugfs_rename_netdev(struct ieee80211_sub_if_data *sdata)
sprintf(buf, "netdev:%s", sdata->name); sprintf(buf, "netdev:%s", sdata->name);
if (!debugfs_rename(dir->d_parent, dir, dir->d_parent, buf)) if (!debugfs_rename(dir->d_parent, dir, dir->d_parent, buf))
pr_err("mac80211: debugfs: failed to rename debugfs " sdata_err(sdata,
"dir to %s\n", buf); "debugfs: failed to rename debugfs dir to %s\n",
buf);
} }
...@@ -305,12 +305,10 @@ void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata, ...@@ -305,12 +305,10 @@ void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,
tid = (params & IEEE80211_DELBA_PARAM_TID_MASK) >> 12; tid = (params & IEEE80211_DELBA_PARAM_TID_MASK) >> 12;
initiator = (params & IEEE80211_DELBA_PARAM_INITIATOR_MASK) >> 11; initiator = (params & IEEE80211_DELBA_PARAM_INITIATOR_MASK) >> 11;
#ifdef CONFIG_MAC80211_HT_DEBUG ht_dbg_ratelimited(sdata, "delba from %pM (%s) tid %d reason code %d\n",
net_dbg_ratelimited("delba from %pM (%s) tid %d reason code %d\n", mgmt->sa, initiator ? "initiator" : "recipient",
mgmt->sa, initiator ? "initiator" : "recipient", tid,
tid, le16_to_cpu(mgmt->u.action.u.delba.reason_code));
le16_to_cpu(mgmt->u.action.u.delba.reason_code));
#endif /* CONFIG_MAC80211_HT_DEBUG */
if (initiator == WLAN_BACK_INITIATOR) if (initiator == WLAN_BACK_INITIATOR)
__ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_INITIATOR, 0, __ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_INITIATOR, 0,
......
...@@ -261,11 +261,7 @@ static struct sta_info *ieee80211_ibss_finish_sta(struct sta_info *sta, ...@@ -261,11 +261,7 @@ static struct sta_info *ieee80211_ibss_finish_sta(struct sta_info *sta,
memcpy(addr, sta->sta.addr, ETH_ALEN); memcpy(addr, sta->sta.addr, ETH_ALEN);
#ifdef CONFIG_MAC80211_IBSS_DEBUG ibss_dbg(sdata, "Adding new IBSS station %pM\n", addr);
wiphy_debug(sdata->local->hw.wiphy,
"Adding new IBSS station %pM (dev=%s)\n",
addr, sdata->name);
#endif
sta_info_pre_move_state(sta, IEEE80211_STA_AUTH); sta_info_pre_move_state(sta, IEEE80211_STA_AUTH);
sta_info_pre_move_state(sta, IEEE80211_STA_ASSOC); sta_info_pre_move_state(sta, IEEE80211_STA_ASSOC);
...@@ -280,8 +276,9 @@ static struct sta_info *ieee80211_ibss_finish_sta(struct sta_info *sta, ...@@ -280,8 +276,9 @@ static struct sta_info *ieee80211_ibss_finish_sta(struct sta_info *sta,
if (sta_info_insert_rcu(sta)) if (sta_info_insert_rcu(sta))
return sta_info_get(sdata, addr); return sta_info_get(sdata, addr);
if (auth && !sdata->u.ibss.auth_frame_registrations) { if (auth && !sdata->u.ibss.auth_frame_registrations) {
ibss_vdbg("TX Auth SA=%pM DA=%pM BSSID=%pM (auth_transaction=1)\n", ibss_dbg(sdata,
sdata->vif.addr, sdata->u.ibss.bssid, addr); "TX Auth SA=%pM DA=%pM BSSID=%pM (auth_transaction=1)\n",
sdata->vif.addr, sdata->u.ibss.bssid, addr);
ieee80211_send_auth(sdata, 1, WLAN_AUTH_OPEN, NULL, 0, ieee80211_send_auth(sdata, 1, WLAN_AUTH_OPEN, NULL, 0,
addr, sdata->u.ibss.bssid, NULL, 0, 0); addr, sdata->u.ibss.bssid, NULL, 0, 0);
} }
...@@ -304,7 +301,7 @@ ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata, ...@@ -304,7 +301,7 @@ ieee80211_ibss_add_sta(struct ieee80211_sub_if_data *sdata,
* allow new one to be added. * allow new one to be added.
*/ */
if (local->num_sta >= IEEE80211_IBSS_MAX_STA_ENTRIES) { if (local->num_sta >= IEEE80211_IBSS_MAX_STA_ENTRIES) {
net_dbg_ratelimited("%s: No room for a new IBSS STA entry %pM\n", net_info_ratelimited("%s: No room for a new IBSS STA entry %pM\n",
sdata->name, addr); sdata->name, addr);
rcu_read_lock(); rcu_read_lock();
return NULL; return NULL;
...@@ -351,9 +348,9 @@ static void ieee80211_rx_mgmt_auth_ibss(struct ieee80211_sub_if_data *sdata, ...@@ -351,9 +348,9 @@ static void ieee80211_rx_mgmt_auth_ibss(struct ieee80211_sub_if_data *sdata,
if (auth_alg != WLAN_AUTH_OPEN || auth_transaction != 1) if (auth_alg != WLAN_AUTH_OPEN || auth_transaction != 1)
return; return;
ibss_vdbg("%s: RX Auth SA=%pM DA=%pM BSSID=%pM (auth_transaction=%d)\n", ibss_dbg(sdata,
sdata->name, mgmt->sa, mgmt->da, mgmt->bssid, "RX Auth SA=%pM DA=%pM BSSID=%pM (auth_transaction=%d)\n",
auth_transaction); mgmt->sa, mgmt->da, mgmt->bssid, auth_transaction);
sta_info_destroy_addr(sdata, mgmt->sa); sta_info_destroy_addr(sdata, mgmt->sa);
ieee80211_ibss_add_sta(sdata, mgmt->bssid, mgmt->sa, 0, false); ieee80211_ibss_add_sta(sdata, mgmt->bssid, mgmt->sa, 0, false);
rcu_read_unlock(); rcu_read_unlock();
...@@ -416,10 +413,10 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata, ...@@ -416,10 +413,10 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
ieee80211_mandatory_rates(local, band); ieee80211_mandatory_rates(local, band);
if (sta->sta.supp_rates[band] != prev_rates) { if (sta->sta.supp_rates[band] != prev_rates) {
ibss_vdbg("%s: updated supp_rates set for %pM based on beacon/probe_resp (0x%x -> 0x%x)\n", ibss_dbg(sdata,
sdata->name, sta->sta.addr, "updated supp_rates set for %pM based on beacon/probe_resp (0x%x -> 0x%x)\n",
prev_rates, sta->sta.addr, prev_rates,
sta->sta.supp_rates[band]); sta->sta.supp_rates[band]);
rates_updated = true; rates_updated = true;
} }
} else { } else {
...@@ -534,16 +531,18 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata, ...@@ -534,16 +531,18 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
rx_timestamp = drv_get_tsf(local, sdata); rx_timestamp = drv_get_tsf(local, sdata);
} }
ibss_vdbg("RX beacon SA=%pM BSSID=%pM TSF=0x%llx BCN=0x%llx diff=%lld @%lu\n", ibss_dbg(sdata,
mgmt->sa, mgmt->bssid, "RX beacon SA=%pM BSSID=%pM TSF=0x%llx BCN=0x%llx diff=%lld @%lu\n",
(unsigned long long)rx_timestamp, mgmt->sa, mgmt->bssid,
(unsigned long long)beacon_timestamp, (unsigned long long)rx_timestamp,
(unsigned long long)(rx_timestamp - beacon_timestamp), (unsigned long long)beacon_timestamp,
jiffies); (unsigned long long)(rx_timestamp - beacon_timestamp),
jiffies);
if (beacon_timestamp > rx_timestamp) { if (beacon_timestamp > rx_timestamp) {
ibss_vdbg("%s: beacon TSF higher than local TSF - IBSS merge with BSSID %pM\n", ibss_dbg(sdata,
sdata->name, mgmt->bssid); "beacon TSF higher than local TSF - IBSS merge with BSSID %pM\n",
mgmt->bssid);
ieee80211_sta_join_ibss(sdata, bss); ieee80211_sta_join_ibss(sdata, bss);
supp_rates = ieee80211_sta_get_rates(local, elems, band, NULL); supp_rates = ieee80211_sta_get_rates(local, elems, band, NULL);
ieee80211_ibss_add_sta(sdata, mgmt->bssid, mgmt->sa, ieee80211_ibss_add_sta(sdata, mgmt->bssid, mgmt->sa,
...@@ -569,7 +568,7 @@ void ieee80211_ibss_rx_no_sta(struct ieee80211_sub_if_data *sdata, ...@@ -569,7 +568,7 @@ void ieee80211_ibss_rx_no_sta(struct ieee80211_sub_if_data *sdata,
* allow new one to be added. * allow new one to be added.
*/ */
if (local->num_sta >= IEEE80211_IBSS_MAX_STA_ENTRIES) { if (local->num_sta >= IEEE80211_IBSS_MAX_STA_ENTRIES) {
net_dbg_ratelimited("%s: No room for a new IBSS STA entry %pM\n", net_info_ratelimited("%s: No room for a new IBSS STA entry %pM\n",
sdata->name, addr); sdata->name, addr);
return; return;
} }
...@@ -645,8 +644,8 @@ static void ieee80211_sta_merge_ibss(struct ieee80211_sub_if_data *sdata) ...@@ -645,8 +644,8 @@ static void ieee80211_sta_merge_ibss(struct ieee80211_sub_if_data *sdata)
if (ifibss->fixed_channel) if (ifibss->fixed_channel)
return; return;
pr_debug("%s: No active IBSS STAs - trying to scan for other IBSS networks with same SSID (merge)\n", sdata_info(sdata,
sdata->name); "No active IBSS STAs - trying to scan for other IBSS networks with same SSID (merge)\n");
ieee80211_request_internal_scan(sdata, ieee80211_request_internal_scan(sdata,
ifibss->ssid, ifibss->ssid_len, NULL); ifibss->ssid, ifibss->ssid_len, NULL);
...@@ -674,8 +673,7 @@ static void ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata) ...@@ -674,8 +673,7 @@ static void ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata)
bssid[0] |= 0x02; bssid[0] |= 0x02;
} }
pr_debug("%s: Creating new IBSS network, BSSID %pM\n", sdata_info(sdata, "Creating new IBSS network, BSSID %pM\n", bssid);
sdata->name, bssid);
capability = WLAN_CAPABILITY_IBSS; capability = WLAN_CAPABILITY_IBSS;
...@@ -706,8 +704,7 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata) ...@@ -706,8 +704,7 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
lockdep_assert_held(&ifibss->mtx); lockdep_assert_held(&ifibss->mtx);
active_ibss = ieee80211_sta_active_ibss(sdata); active_ibss = ieee80211_sta_active_ibss(sdata);
ibss_vdbg("%s: sta_find_ibss (active_ibss=%d)\n", ibss_dbg(sdata, "sta_find_ibss (active_ibss=%d)\n", active_ibss);
sdata->name, active_ibss);
if (active_ibss) if (active_ibss)
return; return;
...@@ -730,23 +727,24 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata) ...@@ -730,23 +727,24 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
struct ieee80211_bss *bss; struct ieee80211_bss *bss;
bss = (void *)cbss->priv; bss = (void *)cbss->priv;
ibss_vdbg(" sta_find_ibss: selected %pM current %pM\n", ibss_dbg(sdata,
cbss->bssid, ifibss->bssid); "sta_find_ibss: selected %pM current %pM\n",
pr_debug("%s: Selected IBSS BSSID %pM based on configured SSID\n", cbss->bssid, ifibss->bssid);
sdata->name, cbss->bssid); sdata_info(sdata,
"Selected IBSS BSSID %pM based on configured SSID\n",
cbss->bssid);
ieee80211_sta_join_ibss(sdata, bss); ieee80211_sta_join_ibss(sdata, bss);
ieee80211_rx_bss_put(local, bss); ieee80211_rx_bss_put(local, bss);
return; return;
} }
ibss_vdbg(" did not try to join ibss\n"); ibss_dbg(sdata, "sta_find_ibss: did not try to join ibss\n");
/* Selected IBSS not found in current scan results - try to scan */ /* Selected IBSS not found in current scan results - try to scan */
if (time_after(jiffies, ifibss->last_scan_completed + if (time_after(jiffies, ifibss->last_scan_completed +
IEEE80211_SCAN_INTERVAL)) { IEEE80211_SCAN_INTERVAL)) {
pr_debug("%s: Trigger new scan to find an IBSS to join\n", sdata_info(sdata, "Trigger new scan to find an IBSS to join\n");
sdata->name);
ieee80211_request_internal_scan(sdata, ieee80211_request_internal_scan(sdata,
ifibss->ssid, ifibss->ssid_len, ifibss->ssid, ifibss->ssid_len,
...@@ -760,9 +758,8 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata) ...@@ -760,9 +758,8 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
ieee80211_sta_create_ibss(sdata); ieee80211_sta_create_ibss(sdata);
return; return;
} }
pr_debug("%s: IBSS not allowed on %d MHz\n", sdata_info(sdata, "IBSS not allowed on %d MHz\n",
sdata->name, local->hw.conf.channel->center_freq);
local->hw.conf.channel->center_freq);
/* No IBSS found - decrease scan interval and continue /* No IBSS found - decrease scan interval and continue
* scanning. */ * scanning. */
...@@ -797,9 +794,9 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata, ...@@ -797,9 +794,9 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
tx_last_beacon = drv_tx_last_beacon(local); tx_last_beacon = drv_tx_last_beacon(local);
ibss_vdbg("%s: RX ProbeReq SA=%pM DA=%pM BSSID=%pM (tx_last_beacon=%d)\n", ibss_dbg(sdata,
sdata->name, mgmt->sa, mgmt->da, "RX ProbeReq SA=%pM DA=%pM BSSID=%pM (tx_last_beacon=%d)\n",
mgmt->bssid, tx_last_beacon); mgmt->sa, mgmt->da, mgmt->bssid, tx_last_beacon);
if (!tx_last_beacon && is_multicast_ether_addr(mgmt->da)) if (!tx_last_beacon && is_multicast_ether_addr(mgmt->da))
return; return;
...@@ -812,8 +809,8 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata, ...@@ -812,8 +809,8 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
pos = mgmt->u.probe_req.variable; pos = mgmt->u.probe_req.variable;
if (pos[0] != WLAN_EID_SSID || if (pos[0] != WLAN_EID_SSID ||
pos + 2 + pos[1] > end) { pos + 2 + pos[1] > end) {
ibss_vdbg("%s: Invalid SSID IE in ProbeReq from %pM\n", ibss_dbg(sdata, "Invalid SSID IE in ProbeReq from %pM\n",
sdata->name, mgmt->sa); mgmt->sa);
return; return;
} }
if (pos[1] != 0 && if (pos[1] != 0 &&
...@@ -830,7 +827,7 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata, ...@@ -830,7 +827,7 @@ static void ieee80211_rx_mgmt_probe_req(struct ieee80211_sub_if_data *sdata,
resp = (struct ieee80211_mgmt *) skb->data; resp = (struct ieee80211_mgmt *) skb->data;
memcpy(resp->da, mgmt->sa, ETH_ALEN); memcpy(resp->da, mgmt->sa, ETH_ALEN);
ibss_vdbg("%s: Sending ProbeResp to %pM\n", sdata->name, resp->da); ibss_dbg(sdata, "Sending ProbeResp to %pM\n", resp->da);
IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT; IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT;
ieee80211_tx_skb(sdata, skb); ieee80211_tx_skb(sdata, skb);
} }
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <net/mac80211.h> #include <net/mac80211.h>
#include "key.h" #include "key.h"
#include "sta_info.h" #include "sta_info.h"
#include "debug.h"
struct ieee80211_local; struct ieee80211_local;
......
...@@ -57,9 +57,6 @@ static int ieee80211_change_mtu(struct net_device *dev, int new_mtu) ...@@ -57,9 +57,6 @@ static int ieee80211_change_mtu(struct net_device *dev, int new_mtu)
return -EINVAL; return -EINVAL;
} }
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
pr_debug("%s: setting MTU %d\n", dev->name, new_mtu);
#endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
dev->mtu = new_mtu; dev->mtu = new_mtu;
return 0; return 0;
} }
...@@ -1223,7 +1220,7 @@ static void ieee80211_assign_perm_addr(struct ieee80211_local *local, ...@@ -1223,7 +1220,7 @@ static void ieee80211_assign_perm_addr(struct ieee80211_local *local,
if (__ffs64(mask) + hweight64(mask) != fls64(mask)) { if (__ffs64(mask) + hweight64(mask) != fls64(mask)) {
/* not a contiguous mask ... not handled now! */ /* not a contiguous mask ... not handled now! */
pr_debug("not contiguous\n"); pr_info("not contiguous\n");
break; break;
} }
...@@ -1414,10 +1411,6 @@ static u32 ieee80211_idle_off(struct ieee80211_local *local, ...@@ -1414,10 +1411,6 @@ static u32 ieee80211_idle_off(struct ieee80211_local *local,
if (!(local->hw.conf.flags & IEEE80211_CONF_IDLE)) if (!(local->hw.conf.flags & IEEE80211_CONF_IDLE))
return 0; return 0;
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
wiphy_debug(local->hw.wiphy, "device no longer idle - %s\n", reason);
#endif
local->hw.conf.flags &= ~IEEE80211_CONF_IDLE; local->hw.conf.flags &= ~IEEE80211_CONF_IDLE;
return IEEE80211_CONF_CHANGE_IDLE; return IEEE80211_CONF_CHANGE_IDLE;
} }
...@@ -1427,10 +1420,6 @@ static u32 ieee80211_idle_on(struct ieee80211_local *local) ...@@ -1427,10 +1420,6 @@ static u32 ieee80211_idle_on(struct ieee80211_local *local)
if (local->hw.conf.flags & IEEE80211_CONF_IDLE) if (local->hw.conf.flags & IEEE80211_CONF_IDLE)
return 0; return 0;
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
wiphy_debug(local->hw.wiphy, "device now idle\n");
#endif
drv_flush(local, false); drv_flush(local, false);
local->hw.conf.flags |= IEEE80211_CONF_IDLE; local->hw.conf.flags |= IEEE80211_CONF_IDLE;
......
...@@ -139,7 +139,7 @@ static int ieee80211_key_enable_hw_accel(struct ieee80211_key *key) ...@@ -139,7 +139,7 @@ static int ieee80211_key_enable_hw_accel(struct ieee80211_key *key)
} }
if (ret != -ENOSPC && ret != -EOPNOTSUPP) if (ret != -ENOSPC && ret != -EOPNOTSUPP)
wiphy_err(key->local->hw.wiphy, sdata_err(sdata,
"failed to set key (%d, %pM) to hardware (%d)\n", "failed to set key (%d, %pM) to hardware (%d)\n",
key->conf.keyidx, key->conf.keyidx,
sta ? sta->sta.addr : bcast_addr, ret); sta ? sta->sta.addr : bcast_addr, ret);
...@@ -186,7 +186,7 @@ static void ieee80211_key_disable_hw_accel(struct ieee80211_key *key) ...@@ -186,7 +186,7 @@ static void ieee80211_key_disable_hw_accel(struct ieee80211_key *key)
sta ? &sta->sta : NULL, &key->conf); sta ? &sta->sta : NULL, &key->conf);
if (ret) if (ret)
wiphy_err(key->local->hw.wiphy, sdata_err(sdata,
"failed to remove key (%d, %pM) from hardware (%d)\n", "failed to remove key (%d, %pM) from hardware (%d)\n",
key->conf.keyidx, key->conf.keyidx,
sta ? sta->sta.addr : bcast_addr, ret); sta ? sta->sta.addr : bcast_addr, ret);
......
...@@ -523,10 +523,6 @@ static void ieee80211_mesh_housekeeping(struct ieee80211_sub_if_data *sdata, ...@@ -523,10 +523,6 @@ static void ieee80211_mesh_housekeeping(struct ieee80211_sub_if_data *sdata,
{ {
bool free_plinks; bool free_plinks;
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
pr_debug("%s: running mesh housekeeping\n", sdata->name);
#endif
ieee80211_sta_expire(sdata, IEEE80211_MESH_PEER_INACTIVITY_LIMIT); ieee80211_sta_expire(sdata, IEEE80211_MESH_PEER_INACTIVITY_LIMIT);
mesh_path_expire(sdata); mesh_path_expire(sdata);
......
...@@ -13,13 +13,6 @@ ...@@ -13,13 +13,6 @@
#include "wme.h" #include "wme.h"
#include "mesh.h" #include "mesh.h"
#ifdef CONFIG_MAC80211_VERBOSE_MHWMP_DEBUG
#define mhwmp_dbg(fmt, args...) \
pr_debug("Mesh HWMP (%s): " fmt "\n", sdata->name, ##args)
#else
#define mhwmp_dbg(fmt, args...) do { (void)(0); } while (0)
#endif
#define TEST_FRAME_LEN 8192 #define TEST_FRAME_LEN 8192
#define MAX_METRIC 0xffffffff #define MAX_METRIC 0xffffffff
#define ARITH_SHIFT 8 #define ARITH_SHIFT 8
...@@ -144,19 +137,19 @@ static int mesh_path_sel_frame_tx(enum mpath_frame_type action, u8 flags, ...@@ -144,19 +137,19 @@ static int mesh_path_sel_frame_tx(enum mpath_frame_type action, u8 flags,
switch (action) { switch (action) {
case MPATH_PREQ: case MPATH_PREQ:
mhwmp_dbg("sending PREQ to %pM", target); mhwmp_dbg(sdata, "sending PREQ to %pM\n", target);
ie_len = 37; ie_len = 37;
pos = skb_put(skb, 2 + ie_len); pos = skb_put(skb, 2 + ie_len);
*pos++ = WLAN_EID_PREQ; *pos++ = WLAN_EID_PREQ;
break; break;
case MPATH_PREP: case MPATH_PREP:
mhwmp_dbg("sending PREP to %pM", target); mhwmp_dbg(sdata, "sending PREP to %pM\n", target);
ie_len = 31; ie_len = 31;
pos = skb_put(skb, 2 + ie_len); pos = skb_put(skb, 2 + ie_len);
*pos++ = WLAN_EID_PREP; *pos++ = WLAN_EID_PREP;
break; break;
case MPATH_RANN: case MPATH_RANN:
mhwmp_dbg("sending RANN from %pM", orig_addr); mhwmp_dbg(sdata, "sending RANN from %pM\n", orig_addr);
ie_len = sizeof(struct ieee80211_rann_ie); ie_len = sizeof(struct ieee80211_rann_ie);
pos = skb_put(skb, 2 + ie_len); pos = skb_put(skb, 2 + ie_len);
*pos++ = WLAN_EID_RANN; *pos++ = WLAN_EID_RANN;
...@@ -535,10 +528,10 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata, ...@@ -535,10 +528,10 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata,
flags = PREQ_IE_FLAGS(preq_elem); flags = PREQ_IE_FLAGS(preq_elem);
root_is_gate = !!(flags & RANN_FLAG_IS_GATE); root_is_gate = !!(flags & RANN_FLAG_IS_GATE);
mhwmp_dbg("received PREQ from %pM", orig_addr); mhwmp_dbg(sdata, "received PREQ from %pM\n", orig_addr);
if (ether_addr_equal(target_addr, sdata->vif.addr)) { if (ether_addr_equal(target_addr, sdata->vif.addr)) {
mhwmp_dbg("PREQ is for us"); mhwmp_dbg(sdata, "PREQ is for us\n");
forward = false; forward = false;
reply = true; reply = true;
metric = 0; metric = 0;
...@@ -590,7 +583,7 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata, ...@@ -590,7 +583,7 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata,
lifetime = PREQ_IE_LIFETIME(preq_elem); lifetime = PREQ_IE_LIFETIME(preq_elem);
ttl = ifmsh->mshcfg.element_ttl; ttl = ifmsh->mshcfg.element_ttl;
if (ttl != 0) { if (ttl != 0) {
mhwmp_dbg("replying to the PREQ"); mhwmp_dbg(sdata, "replying to the PREQ\n");
mesh_path_sel_frame_tx(MPATH_PREP, 0, orig_addr, mesh_path_sel_frame_tx(MPATH_PREP, 0, orig_addr,
cpu_to_le32(orig_sn), 0, target_addr, cpu_to_le32(orig_sn), 0, target_addr,
cpu_to_le32(target_sn), mgmt->sa, 0, ttl, cpu_to_le32(target_sn), mgmt->sa, 0, ttl,
...@@ -611,7 +604,7 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata, ...@@ -611,7 +604,7 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata,
ifmsh->mshstats.dropped_frames_ttl++; ifmsh->mshstats.dropped_frames_ttl++;
return; return;
} }
mhwmp_dbg("forwarding the PREQ from %pM", orig_addr); mhwmp_dbg(sdata, "forwarding the PREQ from %pM\n", orig_addr);
--ttl; --ttl;
preq_id = PREQ_IE_PREQ_ID(preq_elem); preq_id = PREQ_IE_PREQ_ID(preq_elem);
hopcount = PREQ_IE_HOPCOUNT(preq_elem) + 1; hopcount = PREQ_IE_HOPCOUNT(preq_elem) + 1;
...@@ -658,7 +651,8 @@ static void hwmp_prep_frame_process(struct ieee80211_sub_if_data *sdata, ...@@ -658,7 +651,8 @@ static void hwmp_prep_frame_process(struct ieee80211_sub_if_data *sdata,
u8 next_hop[ETH_ALEN]; u8 next_hop[ETH_ALEN];
u32 target_sn, orig_sn, lifetime; u32 target_sn, orig_sn, lifetime;
mhwmp_dbg("received PREP from %pM", PREP_IE_ORIG_ADDR(prep_elem)); mhwmp_dbg(sdata, "received PREP from %pM\n",
PREP_IE_ORIG_ADDR(prep_elem));
orig_addr = PREP_IE_ORIG_ADDR(prep_elem); orig_addr = PREP_IE_ORIG_ADDR(prep_elem);
if (ether_addr_equal(orig_addr, sdata->vif.addr)) if (ether_addr_equal(orig_addr, sdata->vif.addr))
...@@ -784,8 +778,9 @@ static void hwmp_rann_frame_process(struct ieee80211_sub_if_data *sdata, ...@@ -784,8 +778,9 @@ static void hwmp_rann_frame_process(struct ieee80211_sub_if_data *sdata,
if (ether_addr_equal(orig_addr, sdata->vif.addr)) if (ether_addr_equal(orig_addr, sdata->vif.addr))
return; return;
mhwmp_dbg("received RANN from %pM via neighbour %pM (is_gate=%d)", mhwmp_dbg(sdata,
orig_addr, mgmt->sa, root_is_gate); "received RANN from %pM via neighbour %pM (is_gate=%d)\n",
orig_addr, mgmt->sa, root_is_gate);
rcu_read_lock(); rcu_read_lock();
sta = sta_info_get(sdata, mgmt->sa); sta = sta_info_get(sdata, mgmt->sa);
...@@ -818,8 +813,9 @@ static void hwmp_rann_frame_process(struct ieee80211_sub_if_data *sdata, ...@@ -818,8 +813,9 @@ static void hwmp_rann_frame_process(struct ieee80211_sub_if_data *sdata,
root_path_confirmation_jiffies(sdata)) || root_path_confirmation_jiffies(sdata)) ||
time_before(jiffies, mpath->last_preq_to_root))) && time_before(jiffies, mpath->last_preq_to_root))) &&
!(mpath->flags & MESH_PATH_FIXED) && (ttl != 0)) { !(mpath->flags & MESH_PATH_FIXED) && (ttl != 0)) {
mhwmp_dbg("%s time to refresh root mpath %pM", sdata->name, mhwmp_dbg(sdata,
orig_addr); "time to refresh root mpath %pM\n",
orig_addr);
mesh_queue_preq(mpath, PREQ_Q_F_START | PREQ_Q_F_REFRESH); mesh_queue_preq(mpath, PREQ_Q_F_START | PREQ_Q_F_REFRESH);
mpath->last_preq_to_root = jiffies; mpath->last_preq_to_root = jiffies;
} }
...@@ -926,7 +922,7 @@ static void mesh_queue_preq(struct mesh_path *mpath, u8 flags) ...@@ -926,7 +922,7 @@ static void mesh_queue_preq(struct mesh_path *mpath, u8 flags)
preq_node = kmalloc(sizeof(struct mesh_preq_queue), GFP_ATOMIC); preq_node = kmalloc(sizeof(struct mesh_preq_queue), GFP_ATOMIC);
if (!preq_node) { if (!preq_node) {
mhwmp_dbg("could not allocate PREQ node"); mhwmp_dbg(sdata, "could not allocate PREQ node\n");
return; return;
} }
...@@ -935,7 +931,7 @@ static void mesh_queue_preq(struct mesh_path *mpath, u8 flags) ...@@ -935,7 +931,7 @@ static void mesh_queue_preq(struct mesh_path *mpath, u8 flags)
spin_unlock_bh(&ifmsh->mesh_preq_queue_lock); spin_unlock_bh(&ifmsh->mesh_preq_queue_lock);
kfree(preq_node); kfree(preq_node);
if (printk_ratelimit()) if (printk_ratelimit())
mhwmp_dbg("PREQ node queue full"); mhwmp_dbg(sdata, "PREQ node queue full\n");
return; return;
} }
...@@ -1183,7 +1179,7 @@ void mesh_path_timer(unsigned long data) ...@@ -1183,7 +1179,7 @@ void mesh_path_timer(unsigned long data)
if (!mpath->is_gate && mesh_gate_num(sdata) > 0) { if (!mpath->is_gate && mesh_gate_num(sdata) > 0) {
ret = mesh_path_send_to_gates(mpath); ret = mesh_path_send_to_gates(mpath);
if (ret) if (ret)
mhwmp_dbg("no gate was reachable"); mhwmp_dbg(sdata, "no gate was reachable\n");
} else } else
mesh_path_flush_pending(mpath); mesh_path_flush_pending(mpath);
} }
...@@ -1221,7 +1217,7 @@ mesh_path_tx_root_frame(struct ieee80211_sub_if_data *sdata) ...@@ -1221,7 +1217,7 @@ mesh_path_tx_root_frame(struct ieee80211_sub_if_data *sdata)
0, cpu_to_le32(ifmsh->preq_id++), sdata); 0, cpu_to_le32(ifmsh->preq_id++), sdata);
break; break;
default: default:
mhwmp_dbg("Proactive mechanism not supported"); mhwmp_dbg(sdata, "Proactive mechanism not supported\n");
return; return;
} }
} }
...@@ -18,12 +18,6 @@ ...@@ -18,12 +18,6 @@
#include "ieee80211_i.h" #include "ieee80211_i.h"
#include "mesh.h" #include "mesh.h"
#ifdef CONFIG_MAC80211_VERBOSE_MPATH_DEBUG
#define mpath_dbg(fmt, args...) pr_debug(fmt, ##args)
#else
#define mpath_dbg(fmt, args...) do { (void)(0); } while (0)
#endif
/* There will be initially 2^INIT_PATHS_SIZE_ORDER buckets */ /* There will be initially 2^INIT_PATHS_SIZE_ORDER buckets */
#define INIT_PATHS_SIZE_ORDER 2 #define INIT_PATHS_SIZE_ORDER 2
...@@ -322,9 +316,8 @@ static void mesh_path_move_to_queue(struct mesh_path *gate_mpath, ...@@ -322,9 +316,8 @@ static void mesh_path_move_to_queue(struct mesh_path *gate_mpath,
spin_lock_irqsave(&gate_mpath->frame_queue.lock, flags); spin_lock_irqsave(&gate_mpath->frame_queue.lock, flags);
skb_queue_splice(&gateq, &gate_mpath->frame_queue); skb_queue_splice(&gateq, &gate_mpath->frame_queue);
mpath_dbg("Mpath queue for gate %pM has %d frames\n", mpath_dbg(gate_mpath->sdata, "Mpath queue for gate %pM has %d frames\n",
gate_mpath->dst, gate_mpath->dst, skb_queue_len(&gate_mpath->frame_queue));
skb_queue_len(&gate_mpath->frame_queue));
spin_unlock_irqrestore(&gate_mpath->frame_queue.lock, flags); spin_unlock_irqrestore(&gate_mpath->frame_queue.lock, flags);
if (!copy) if (!copy)
...@@ -446,9 +439,9 @@ int mesh_path_add_gate(struct mesh_path *mpath) ...@@ -446,9 +439,9 @@ int mesh_path_add_gate(struct mesh_path *mpath)
hlist_add_head_rcu(&new_gate->list, tbl->known_gates); hlist_add_head_rcu(&new_gate->list, tbl->known_gates);
spin_unlock_bh(&tbl->gates_lock); spin_unlock_bh(&tbl->gates_lock);
rcu_read_unlock(); rcu_read_unlock();
mpath_dbg("Mesh path (%s): Recorded new gate: %pM. %d known gates\n", mpath_dbg(mpath->sdata,
mpath->sdata->name, mpath->dst, "Mesh path: Recorded new gate: %pM. %d known gates\n",
mpath->sdata->u.mesh.num_gates); mpath->dst, mpath->sdata->u.mesh.num_gates);
return 0; return 0;
err_rcu: err_rcu:
rcu_read_unlock(); rcu_read_unlock();
...@@ -477,8 +470,8 @@ static int mesh_gate_del(struct mesh_table *tbl, struct mesh_path *mpath) ...@@ -477,8 +470,8 @@ static int mesh_gate_del(struct mesh_table *tbl, struct mesh_path *mpath)
spin_unlock_bh(&tbl->gates_lock); spin_unlock_bh(&tbl->gates_lock);
mpath->sdata->u.mesh.num_gates--; mpath->sdata->u.mesh.num_gates--;
mpath->is_gate = false; mpath->is_gate = false;
mpath_dbg("Mesh path (%s): Deleted gate: %pM. " mpath_dbg(mpath->sdata,
"%d known gates\n", mpath->sdata->name, "Mesh path: Deleted gate: %pM. %d known gates\n",
mpath->dst, mpath->sdata->u.mesh.num_gates); mpath->dst, mpath->sdata->u.mesh.num_gates);
break; break;
} }
...@@ -946,19 +939,20 @@ int mesh_path_send_to_gates(struct mesh_path *mpath) ...@@ -946,19 +939,20 @@ int mesh_path_send_to_gates(struct mesh_path *mpath)
continue; continue;
if (gate->mpath->flags & MESH_PATH_ACTIVE) { if (gate->mpath->flags & MESH_PATH_ACTIVE) {
mpath_dbg("Forwarding to %pM\n", gate->mpath->dst); mpath_dbg(sdata, "Forwarding to %pM\n", gate->mpath->dst);
mesh_path_move_to_queue(gate->mpath, from_mpath, copy); mesh_path_move_to_queue(gate->mpath, from_mpath, copy);
from_mpath = gate->mpath; from_mpath = gate->mpath;
copy = true; copy = true;
} else { } else {
mpath_dbg("Not forwarding %p\n", gate->mpath); mpath_dbg(sdata,
mpath_dbg("flags %x\n", gate->mpath->flags); "Not forwarding %p (flags %#x)\n",
gate->mpath, gate->mpath->flags);
} }
} }
hlist_for_each_entry_rcu(gate, n, known_gates, list) hlist_for_each_entry_rcu(gate, n, known_gates, list)
if (gate->mpath->sdata == sdata) { if (gate->mpath->sdata == sdata) {
mpath_dbg("Sending to %pM\n", gate->mpath->dst); mpath_dbg(sdata, "Sending to %pM\n", gate->mpath->dst);
mesh_path_tx_pending(gate->mpath); mesh_path_tx_pending(gate->mpath);
} }
......
...@@ -13,12 +13,6 @@ ...@@ -13,12 +13,6 @@
#include "rate.h" #include "rate.h"
#include "mesh.h" #include "mesh.h"
#ifdef CONFIG_MAC80211_VERBOSE_MPL_DEBUG
#define mpl_dbg(fmt, args...) pr_debug(fmt, ##args)
#else
#define mpl_dbg(fmt, args...) do { (void)(0); } while (0)
#endif
#define PLINK_GET_LLID(p) (p + 2) #define PLINK_GET_LLID(p) (p + 2)
#define PLINK_GET_PLID(p) (p + 4) #define PLINK_GET_PLID(p) (p + 4)
...@@ -134,12 +128,14 @@ static u32 mesh_set_ht_prot_mode(struct ieee80211_sub_if_data *sdata) ...@@ -134,12 +128,14 @@ static u32 mesh_set_ht_prot_mode(struct ieee80211_sub_if_data *sdata)
switch (sta->ch_type) { switch (sta->ch_type) {
case NL80211_CHAN_NO_HT: case NL80211_CHAN_NO_HT:
mpl_dbg("mesh_plink %pM: nonHT sta (%pM) is present", mpl_dbg(sdata,
"mesh_plink %pM: nonHT sta (%pM) is present\n",
sdata->vif.addr, sta->sta.addr); sdata->vif.addr, sta->sta.addr);
non_ht_sta = true; non_ht_sta = true;
goto out; goto out;
case NL80211_CHAN_HT20: case NL80211_CHAN_HT20:
mpl_dbg("mesh_plink %pM: HT20 sta (%pM) is present", mpl_dbg(sdata,
"mesh_plink %pM: HT20 sta (%pM) is present\n",
sdata->vif.addr, sta->sta.addr); sdata->vif.addr, sta->sta.addr);
ht20_sta = true; ht20_sta = true;
default: default:
...@@ -160,7 +156,8 @@ static u32 mesh_set_ht_prot_mode(struct ieee80211_sub_if_data *sdata) ...@@ -160,7 +156,8 @@ static u32 mesh_set_ht_prot_mode(struct ieee80211_sub_if_data *sdata)
sdata->vif.bss_conf.ht_operation_mode = ht_opmode; sdata->vif.bss_conf.ht_operation_mode = ht_opmode;
sdata->u.mesh.mshcfg.ht_opmode = ht_opmode; sdata->u.mesh.mshcfg.ht_opmode = ht_opmode;
changed = BSS_CHANGED_HT; changed = BSS_CHANGED_HT;
mpl_dbg("mesh_plink %pM: protection mode changed to %d", mpl_dbg(sdata,
"mesh_plink %pM: protection mode changed to %d\n",
sdata->vif.addr, ht_opmode); sdata->vif.addr, ht_opmode);
} }
...@@ -437,7 +434,8 @@ static void mesh_plink_timer(unsigned long data) ...@@ -437,7 +434,8 @@ static void mesh_plink_timer(unsigned long data)
spin_unlock_bh(&sta->lock); spin_unlock_bh(&sta->lock);
return; return;
} }
mpl_dbg("Mesh plink timer for %pM fired on state %d\n", mpl_dbg(sta->sdata,
"Mesh plink timer for %pM fired on state %d\n",
sta->sta.addr, sta->plink_state); sta->sta.addr, sta->plink_state);
reason = 0; reason = 0;
llid = sta->llid; llid = sta->llid;
...@@ -450,7 +448,8 @@ static void mesh_plink_timer(unsigned long data) ...@@ -450,7 +448,8 @@ static void mesh_plink_timer(unsigned long data)
/* retry timer */ /* retry timer */
if (sta->plink_retries < dot11MeshMaxRetries(sdata)) { if (sta->plink_retries < dot11MeshMaxRetries(sdata)) {
u32 rand; u32 rand;
mpl_dbg("Mesh plink for %pM (retry, timeout): %d %d\n", mpl_dbg(sta->sdata,
"Mesh plink for %pM (retry, timeout): %d %d\n",
sta->sta.addr, sta->plink_retries, sta->sta.addr, sta->plink_retries,
sta->plink_timeout); sta->plink_timeout);
get_random_bytes(&rand, sizeof(u32)); get_random_bytes(&rand, sizeof(u32));
...@@ -530,7 +529,8 @@ int mesh_plink_open(struct sta_info *sta) ...@@ -530,7 +529,8 @@ int mesh_plink_open(struct sta_info *sta)
sta->plink_state = NL80211_PLINK_OPN_SNT; sta->plink_state = NL80211_PLINK_OPN_SNT;
mesh_plink_timer_set(sta, dot11MeshRetryTimeout(sdata)); mesh_plink_timer_set(sta, dot11MeshRetryTimeout(sdata));
spin_unlock_bh(&sta->lock); spin_unlock_bh(&sta->lock);
mpl_dbg("Mesh plink: starting establishment with %pM\n", mpl_dbg(sdata,
"Mesh plink: starting establishment with %pM\n",
sta->sta.addr); sta->sta.addr);
return mesh_plink_frame_tx(sdata, WLAN_SP_MESH_PEERING_OPEN, return mesh_plink_frame_tx(sdata, WLAN_SP_MESH_PEERING_OPEN,
...@@ -565,7 +565,6 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m ...@@ -565,7 +565,6 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
u8 *baseaddr; u8 *baseaddr;
u32 changed = 0; u32 changed = 0;
__le16 plid, llid, reason; __le16 plid, llid, reason;
#ifdef CONFIG_MAC80211_VERBOSE_MPL_DEBUG
static const char *mplstates[] = { static const char *mplstates[] = {
[NL80211_PLINK_LISTEN] = "LISTEN", [NL80211_PLINK_LISTEN] = "LISTEN",
[NL80211_PLINK_OPN_SNT] = "OPN-SNT", [NL80211_PLINK_OPN_SNT] = "OPN-SNT",
...@@ -575,14 +574,14 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m ...@@ -575,14 +574,14 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
[NL80211_PLINK_HOLDING] = "HOLDING", [NL80211_PLINK_HOLDING] = "HOLDING",
[NL80211_PLINK_BLOCKED] = "BLOCKED" [NL80211_PLINK_BLOCKED] = "BLOCKED"
}; };
#endif
/* need action_code, aux */ /* need action_code, aux */
if (len < IEEE80211_MIN_ACTION_SIZE + 3) if (len < IEEE80211_MIN_ACTION_SIZE + 3)
return; return;
if (is_multicast_ether_addr(mgmt->da)) { if (is_multicast_ether_addr(mgmt->da)) {
mpl_dbg("Mesh plink: ignore frame from multicast address"); mpl_dbg(sdata,
"Mesh plink: ignore frame from multicast address\n");
return; return;
} }
...@@ -595,12 +594,14 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m ...@@ -595,12 +594,14 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
} }
ieee802_11_parse_elems(baseaddr, len - baselen, &elems); ieee802_11_parse_elems(baseaddr, len - baselen, &elems);
if (!elems.peering) { if (!elems.peering) {
mpl_dbg("Mesh plink: missing necessary peer link ie\n"); mpl_dbg(sdata,
"Mesh plink: missing necessary peer link ie\n");
return; return;
} }
if (elems.rsn_len && if (elems.rsn_len &&
sdata->u.mesh.security == IEEE80211_MESH_SEC_NONE) { sdata->u.mesh.security == IEEE80211_MESH_SEC_NONE) {
mpl_dbg("Mesh plink: can't establish link with secure peer\n"); mpl_dbg(sdata,
"Mesh plink: can't establish link with secure peer\n");
return; return;
} }
...@@ -610,14 +611,15 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m ...@@ -610,14 +611,15 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
(ftype == WLAN_SP_MESH_PEERING_CONFIRM && ie_len != 6) || (ftype == WLAN_SP_MESH_PEERING_CONFIRM && ie_len != 6) ||
(ftype == WLAN_SP_MESH_PEERING_CLOSE && ie_len != 6 (ftype == WLAN_SP_MESH_PEERING_CLOSE && ie_len != 6
&& ie_len != 8)) { && ie_len != 8)) {
mpl_dbg("Mesh plink: incorrect plink ie length %d %d\n", mpl_dbg(sdata,
ftype, ie_len); "Mesh plink: incorrect plink ie length %d %d\n",
ftype, ie_len);
return; return;
} }
if (ftype != WLAN_SP_MESH_PEERING_CLOSE && if (ftype != WLAN_SP_MESH_PEERING_CLOSE &&
(!elems.mesh_id || !elems.mesh_config)) { (!elems.mesh_id || !elems.mesh_config)) {
mpl_dbg("Mesh plink: missing necessary ie\n"); mpl_dbg(sdata, "Mesh plink: missing necessary ie\n");
return; return;
} }
/* Note the lines below are correct, the llid in the frame is the plid /* Note the lines below are correct, the llid in the frame is the plid
...@@ -632,21 +634,21 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m ...@@ -632,21 +634,21 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
sta = sta_info_get(sdata, mgmt->sa); sta = sta_info_get(sdata, mgmt->sa);
if (!sta && ftype != WLAN_SP_MESH_PEERING_OPEN) { if (!sta && ftype != WLAN_SP_MESH_PEERING_OPEN) {
mpl_dbg("Mesh plink: cls or cnf from unknown peer\n"); mpl_dbg(sdata, "Mesh plink: cls or cnf from unknown peer\n");
rcu_read_unlock(); rcu_read_unlock();
return; return;
} }
if (ftype == WLAN_SP_MESH_PEERING_OPEN && if (ftype == WLAN_SP_MESH_PEERING_OPEN &&
!rssi_threshold_check(sta, sdata)) { !rssi_threshold_check(sta, sdata)) {
mpl_dbg("Mesh plink: %pM does not meet rssi threshold\n", mpl_dbg(sdata, "Mesh plink: %pM does not meet rssi threshold\n",
mgmt->sa); mgmt->sa);
rcu_read_unlock(); rcu_read_unlock();
return; return;
} }
if (sta && !test_sta_flag(sta, WLAN_STA_AUTH)) { if (sta && !test_sta_flag(sta, WLAN_STA_AUTH)) {
mpl_dbg("Mesh plink: Action frame from non-authed peer\n"); mpl_dbg(sdata, "Mesh plink: Action frame from non-authed peer\n");
rcu_read_unlock(); rcu_read_unlock();
return; return;
} }
...@@ -683,7 +685,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m ...@@ -683,7 +685,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
} else if (!sta) { } else if (!sta) {
/* ftype == WLAN_SP_MESH_PEERING_OPEN */ /* ftype == WLAN_SP_MESH_PEERING_OPEN */
if (!mesh_plink_free_count(sdata)) { if (!mesh_plink_free_count(sdata)) {
mpl_dbg("Mesh plink error: no more free plinks\n"); mpl_dbg(sdata, "Mesh plink error: no more free plinks\n");
rcu_read_unlock(); rcu_read_unlock();
return; return;
} }
...@@ -724,7 +726,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m ...@@ -724,7 +726,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
event = CLS_ACPT; event = CLS_ACPT;
break; break;
default: default:
mpl_dbg("Mesh plink: unknown frame subtype\n"); mpl_dbg(sdata, "Mesh plink: unknown frame subtype\n");
rcu_read_unlock(); rcu_read_unlock();
return; return;
} }
...@@ -734,13 +736,14 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m ...@@ -734,13 +736,14 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
/* allocate sta entry if necessary and update info */ /* allocate sta entry if necessary and update info */
sta = mesh_peer_init(sdata, mgmt->sa, &elems); sta = mesh_peer_init(sdata, mgmt->sa, &elems);
if (!sta) { if (!sta) {
mpl_dbg("Mesh plink: failed to init peer!\n"); mpl_dbg(sdata, "Mesh plink: failed to init peer!\n");
rcu_read_unlock(); rcu_read_unlock();
return; return;
} }
} }
mpl_dbg("Mesh plink (peer, state, llid, plid, event): %pM %s %d %d %d\n", mpl_dbg(sdata,
"Mesh plink (peer, state, llid, plid, event): %pM %s %d %d %d\n",
mgmt->sa, mplstates[sta->plink_state], mgmt->sa, mplstates[sta->plink_state],
le16_to_cpu(sta->llid), le16_to_cpu(sta->plid), le16_to_cpu(sta->llid), le16_to_cpu(sta->plid),
event); event);
...@@ -851,7 +854,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m ...@@ -851,7 +854,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
mesh_plink_inc_estab_count(sdata); mesh_plink_inc_estab_count(sdata);
changed |= mesh_set_ht_prot_mode(sdata); changed |= mesh_set_ht_prot_mode(sdata);
changed |= BSS_CHANGED_BEACON; changed |= BSS_CHANGED_BEACON;
mpl_dbg("Mesh plink with %pM ESTABLISHED\n", mpl_dbg(sdata, "Mesh plink with %pM ESTABLISHED\n",
sta->sta.addr); sta->sta.addr);
break; break;
default: default:
...@@ -887,7 +890,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m ...@@ -887,7 +890,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
mesh_plink_inc_estab_count(sdata); mesh_plink_inc_estab_count(sdata);
changed |= mesh_set_ht_prot_mode(sdata); changed |= mesh_set_ht_prot_mode(sdata);
changed |= BSS_CHANGED_BEACON; changed |= BSS_CHANGED_BEACON;
mpl_dbg("Mesh plink with %pM ESTABLISHED\n", mpl_dbg(sdata, "Mesh plink with %pM ESTABLISHED\n",
sta->sta.addr); sta->sta.addr);
mesh_plink_frame_tx(sdata, mesh_plink_frame_tx(sdata,
WLAN_SP_MESH_PEERING_CONFIRM, WLAN_SP_MESH_PEERING_CONFIRM,
......
...@@ -12,13 +12,6 @@ ...@@ -12,13 +12,6 @@
#include "mesh.h" #include "mesh.h"
#include "driver-ops.h" #include "driver-ops.h"
#ifdef CONFIG_MAC80211_VERBOSE_MESH_SYNC_DEBUG
#define msync_dbg(fmt, args...) \
pr_debug("Mesh sync (%s): " fmt "\n", sdata->name, ##args)
#else
#define msync_dbg(fmt, args...) do { (void)(0); } while (0)
#endif
/* This is not in the standard. It represents a tolerable tbtt drift below /* This is not in the standard. It represents a tolerable tbtt drift below
* which we do no TSF adjustment. * which we do no TSF adjustment.
*/ */
...@@ -65,14 +58,14 @@ void mesh_sync_adjust_tbtt(struct ieee80211_sub_if_data *sdata) ...@@ -65,14 +58,14 @@ void mesh_sync_adjust_tbtt(struct ieee80211_sub_if_data *sdata)
spin_lock_bh(&ifmsh->sync_offset_lock); spin_lock_bh(&ifmsh->sync_offset_lock);
if (ifmsh->sync_offset_clockdrift_max < beacon_int_fraction) { if (ifmsh->sync_offset_clockdrift_max < beacon_int_fraction) {
msync_dbg("TBTT : max clockdrift=%lld; adjusting", msync_dbg(sdata, "TBTT : max clockdrift=%lld; adjusting\n",
(long long) ifmsh->sync_offset_clockdrift_max); (long long) ifmsh->sync_offset_clockdrift_max);
tsfdelta = -ifmsh->sync_offset_clockdrift_max; tsfdelta = -ifmsh->sync_offset_clockdrift_max;
ifmsh->sync_offset_clockdrift_max = 0; ifmsh->sync_offset_clockdrift_max = 0;
} else { } else {
msync_dbg("TBTT : max clockdrift=%lld; adjusting by %llu", msync_dbg(sdata, "TBTT : max clockdrift=%lld; adjusting by %llu\n",
(long long) ifmsh->sync_offset_clockdrift_max, (long long) ifmsh->sync_offset_clockdrift_max,
(unsigned long long) beacon_int_fraction); (unsigned long long) beacon_int_fraction);
tsfdelta = -beacon_int_fraction; tsfdelta = -beacon_int_fraction;
ifmsh->sync_offset_clockdrift_max -= beacon_int_fraction; ifmsh->sync_offset_clockdrift_max -= beacon_int_fraction;
} }
...@@ -120,7 +113,7 @@ static void mesh_sync_offset_rx_bcn_presp(struct ieee80211_sub_if_data *sdata, ...@@ -120,7 +113,7 @@ static void mesh_sync_offset_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
if (elems->mesh_config && mesh_peer_tbtt_adjusting(elems)) { if (elems->mesh_config && mesh_peer_tbtt_adjusting(elems)) {
clear_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN); clear_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN);
msync_dbg("STA %pM : is adjusting TBTT", sta->sta.addr); msync_dbg(sdata, "STA %pM : is adjusting TBTT\n", sta->sta.addr);
goto no_sync; goto no_sync;
} }
...@@ -169,7 +162,8 @@ static void mesh_sync_offset_rx_bcn_presp(struct ieee80211_sub_if_data *sdata, ...@@ -169,7 +162,8 @@ static void mesh_sync_offset_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
if (test_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN)) { if (test_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN)) {
s64 t_clockdrift = sta->t_offset_setpoint s64 t_clockdrift = sta->t_offset_setpoint
- sta->t_offset; - sta->t_offset;
msync_dbg("STA %pM : sta->t_offset=%lld, sta->t_offset_setpoint=%lld, t_clockdrift=%lld", msync_dbg(sdata,
"STA %pM : sta->t_offset=%lld, sta->t_offset_setpoint=%lld, t_clockdrift=%lld\n",
sta->sta.addr, sta->sta.addr,
(long long) sta->t_offset, (long long) sta->t_offset,
(long long) (long long)
...@@ -178,7 +172,8 @@ static void mesh_sync_offset_rx_bcn_presp(struct ieee80211_sub_if_data *sdata, ...@@ -178,7 +172,8 @@ static void mesh_sync_offset_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
if (t_clockdrift > TOFFSET_MAXIMUM_ADJUSTMENT || if (t_clockdrift > TOFFSET_MAXIMUM_ADJUSTMENT ||
t_clockdrift < -TOFFSET_MAXIMUM_ADJUSTMENT) { t_clockdrift < -TOFFSET_MAXIMUM_ADJUSTMENT) {
msync_dbg("STA %pM : t_clockdrift=%lld too large, setpoint reset", msync_dbg(sdata,
"STA %pM : t_clockdrift=%lld too large, setpoint reset\n",
sta->sta.addr, sta->sta.addr,
(long long) t_clockdrift); (long long) t_clockdrift);
clear_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN); clear_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN);
...@@ -197,8 +192,8 @@ static void mesh_sync_offset_rx_bcn_presp(struct ieee80211_sub_if_data *sdata, ...@@ -197,8 +192,8 @@ static void mesh_sync_offset_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
} else { } else {
sta->t_offset_setpoint = sta->t_offset - TOFFSET_SET_MARGIN; sta->t_offset_setpoint = sta->t_offset - TOFFSET_SET_MARGIN;
set_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN); set_sta_flag(sta, WLAN_STA_TOFFSET_KNOWN);
msync_dbg("STA %pM : offset was invalid, " msync_dbg(sdata,
" sta->t_offset=%lld", "STA %pM : offset was invalid, sta->t_offset=%lld\n",
sta->sta.addr, sta->sta.addr,
(long long) sta->t_offset); (long long) sta->t_offset);
rcu_read_unlock(); rcu_read_unlock();
...@@ -226,17 +221,15 @@ static void mesh_sync_offset_adjust_tbtt(struct ieee80211_sub_if_data *sdata) ...@@ -226,17 +221,15 @@ static void mesh_sync_offset_adjust_tbtt(struct ieee80211_sub_if_data *sdata)
* to the driver tsf setter, we punt * to the driver tsf setter, we punt
* the tsf adjustment to the mesh tasklet * the tsf adjustment to the mesh tasklet
*/ */
msync_dbg("TBTT : kicking off TBTT " msync_dbg(sdata,
"adjustment with " "TBTT : kicking off TBTT adjustment with clockdrift_max=%lld\n",
"clockdrift_max=%lld", ifmsh->sync_offset_clockdrift_max);
ifmsh->sync_offset_clockdrift_max);
set_bit(MESH_WORK_DRIFT_ADJUST, set_bit(MESH_WORK_DRIFT_ADJUST,
&ifmsh->wrkq_flags); &ifmsh->wrkq_flags);
} else { } else {
msync_dbg("TBTT : max clockdrift=%lld; " msync_dbg(sdata,
"too small to adjust", "TBTT : max clockdrift=%lld; too small to adjust\n",
(long long) (long long)ifmsh->sync_offset_clockdrift_max);
ifmsh->sync_offset_clockdrift_max);
ifmsh->sync_offset_clockdrift_max = 0; ifmsh->sync_offset_clockdrift_max = 0;
} }
spin_unlock_bh(&ifmsh->sync_offset_lock); spin_unlock_bh(&ifmsh->sync_offset_lock);
...@@ -268,7 +261,7 @@ static void mesh_sync_vendor_rx_bcn_presp(struct ieee80211_sub_if_data *sdata, ...@@ -268,7 +261,7 @@ static void mesh_sync_vendor_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
const u8 *oui; const u8 *oui;
WARN_ON(sdata->u.mesh.mesh_sp_id != IEEE80211_SYNC_METHOD_VENDOR); WARN_ON(sdata->u.mesh.mesh_sp_id != IEEE80211_SYNC_METHOD_VENDOR);
msync_dbg("called mesh_sync_vendor_rx_bcn_presp"); msync_dbg(sdata, "called mesh_sync_vendor_rx_bcn_presp\n");
oui = mesh_get_vendor_oui(sdata); oui = mesh_get_vendor_oui(sdata);
/* here you would implement the vendor offset tracking for this oui */ /* here you would implement the vendor offset tracking for this oui */
} }
...@@ -278,7 +271,7 @@ static void mesh_sync_vendor_adjust_tbtt(struct ieee80211_sub_if_data *sdata) ...@@ -278,7 +271,7 @@ static void mesh_sync_vendor_adjust_tbtt(struct ieee80211_sub_if_data *sdata)
const u8 *oui; const u8 *oui;
WARN_ON(sdata->u.mesh.mesh_sp_id != IEEE80211_SYNC_METHOD_VENDOR); WARN_ON(sdata->u.mesh.mesh_sp_id != IEEE80211_SYNC_METHOD_VENDOR);
msync_dbg("called mesh_sync_vendor_adjust_tbtt"); msync_dbg(sdata, "called mesh_sync_vendor_adjust_tbtt\n");
oui = mesh_get_vendor_oui(sdata); oui = mesh_get_vendor_oui(sdata);
/* here you would implement the vendor tsf adjustment for this oui */ /* here you would implement the vendor tsf adjustment for this oui */
} }
......
This diff is collapsed.
...@@ -632,11 +632,8 @@ static void ieee80211_sta_reorder_release(struct ieee80211_sub_if_data *sdata, ...@@ -632,11 +632,8 @@ static void ieee80211_sta_reorder_release(struct ieee80211_sub_if_data *sdata,
HT_RX_REORDER_BUF_TIMEOUT)) HT_RX_REORDER_BUF_TIMEOUT))
goto set_release_timer; goto set_release_timer;
#ifdef CONFIG_MAC80211_HT_DEBUG ht_dbg_ratelimited(sdata,
if (net_ratelimit()) "release an RX reorder frame due to timeout on earlier frames\n");
wiphy_debug(sdata->local->hw.wiphy,
"release an RX reorder frame due to timeout on earlier frames\n");
#endif
ieee80211_release_reorder_frame(sdata, tid_agg_rx, j); ieee80211_release_reorder_frame(sdata, tid_agg_rx, j);
/* /*
...@@ -1136,24 +1133,18 @@ static void ap_sta_ps_start(struct sta_info *sta) ...@@ -1136,24 +1133,18 @@ static void ap_sta_ps_start(struct sta_info *sta)
set_sta_flag(sta, WLAN_STA_PS_STA); set_sta_flag(sta, WLAN_STA_PS_STA);
if (!(local->hw.flags & IEEE80211_HW_AP_LINK_PS)) if (!(local->hw.flags & IEEE80211_HW_AP_LINK_PS))
drv_sta_notify(local, sdata, STA_NOTIFY_SLEEP, &sta->sta); drv_sta_notify(local, sdata, STA_NOTIFY_SLEEP, &sta->sta);
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG ps_dbg(sdata, "STA %pM aid %d enters power save mode\n",
pr_debug("%s: STA %pM aid %d enters power save mode\n", sta->sta.addr, sta->sta.aid);
sdata->name, sta->sta.addr, sta->sta.aid);
#endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
} }
static void ap_sta_ps_end(struct sta_info *sta) static void ap_sta_ps_end(struct sta_info *sta)
{ {
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG ps_dbg(sta->sdata, "STA %pM aid %d exits power save mode\n",
pr_debug("%s: STA %pM aid %d exits power save mode\n", sta->sta.addr, sta->sta.aid);
sta->sdata->name, sta->sta.addr, sta->sta.aid);
#endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
if (test_sta_flag(sta, WLAN_STA_PS_DRIVER)) { if (test_sta_flag(sta, WLAN_STA_PS_DRIVER)) {
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG ps_dbg(sta->sdata, "STA %pM aid %d driver-ps-blocked\n",
pr_debug("%s: STA %pM aid %d driver-ps-blocked\n", sta->sta.addr, sta->sta.aid);
sta->sdata->name, sta->sta.addr, sta->sta.aid);
#endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
return; return;
} }
...@@ -1383,17 +1374,8 @@ ieee80211_reassemble_add(struct ieee80211_sub_if_data *sdata, ...@@ -1383,17 +1374,8 @@ ieee80211_reassemble_add(struct ieee80211_sub_if_data *sdata,
if (sdata->fragment_next >= IEEE80211_FRAGMENT_MAX) if (sdata->fragment_next >= IEEE80211_FRAGMENT_MAX)
sdata->fragment_next = 0; sdata->fragment_next = 0;
if (!skb_queue_empty(&entry->skb_list)) { if (!skb_queue_empty(&entry->skb_list))
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
struct ieee80211_hdr *hdr =
(struct ieee80211_hdr *) entry->skb_list.next->data;
pr_debug("%s: RX reassembly removed oldest fragment entry (idx=%d age=%lu seq=%d last_frag=%d addr1=%pM addr2=%pM\n",
sdata->name, idx,
jiffies - entry->first_frag_time, entry->seq,
entry->last_frag, hdr->addr1, hdr->addr2);
#endif
__skb_queue_purge(&entry->skb_list); __skb_queue_purge(&entry->skb_list);
}
__skb_queue_tail(&entry->skb_list, *skb); /* no need for locking */ __skb_queue_tail(&entry->skb_list, *skb); /* no need for locking */
*skb = NULL; *skb = NULL;
...@@ -1751,7 +1733,7 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx) ...@@ -1751,7 +1733,7 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
*/ */
xmit_skb = skb_copy(skb, GFP_ATOMIC); xmit_skb = skb_copy(skb, GFP_ATOMIC);
if (!xmit_skb) if (!xmit_skb)
net_dbg_ratelimited("%s: failed to clone multicast frame\n", net_info_ratelimited("%s: failed to clone multicast frame\n",
dev->name); dev->name);
} else { } else {
dsta = sta_info_get(sdata, skb->data); dsta = sta_info_get(sdata, skb->data);
...@@ -1955,7 +1937,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx) ...@@ -1955,7 +1937,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
fwd_skb = skb_copy(skb, GFP_ATOMIC); fwd_skb = skb_copy(skb, GFP_ATOMIC);
if (!fwd_skb) { if (!fwd_skb) {
net_dbg_ratelimited("%s: failed to clone mesh frame\n", net_info_ratelimited("%s: failed to clone mesh frame\n",
sdata->name); sdata->name);
goto out; goto out;
} }
......
...@@ -169,9 +169,7 @@ void sta_info_free(struct ieee80211_local *local, struct sta_info *sta) ...@@ -169,9 +169,7 @@ void sta_info_free(struct ieee80211_local *local, struct sta_info *sta)
if (sta->rate_ctrl) if (sta->rate_ctrl)
rate_control_free_sta(sta); rate_control_free_sta(sta);
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG sta_dbg(sta->sdata, "Destroyed STA %pM\n", sta->sta.addr);
wiphy_debug(local->hw.wiphy, "Destroyed STA %pM\n", sta->sta.addr);
#endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
kfree(sta); kfree(sta);
} }
...@@ -278,9 +276,7 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata, ...@@ -278,9 +276,7 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
for (i = 0; i < NUM_RX_DATA_QUEUES; i++) for (i = 0; i < NUM_RX_DATA_QUEUES; i++)
sta->last_seq_ctrl[i] = cpu_to_le16(USHRT_MAX); sta->last_seq_ctrl[i] = cpu_to_le16(USHRT_MAX);
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG sta_dbg(sdata, "Allocated STA %pM\n", sta->sta.addr);
wiphy_debug(local->hw.wiphy, "Allocated STA %pM\n", sta->sta.addr);
#endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
#ifdef CONFIG_MAC80211_MESH #ifdef CONFIG_MAC80211_MESH
sta->plink_state = NL80211_PLINK_LISTEN; sta->plink_state = NL80211_PLINK_LISTEN;
...@@ -333,8 +329,9 @@ static int sta_info_insert_drv_state(struct ieee80211_local *local, ...@@ -333,8 +329,9 @@ static int sta_info_insert_drv_state(struct ieee80211_local *local,
} }
if (sdata->vif.type == NL80211_IFTYPE_ADHOC) { if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
pr_debug("%s: failed to move IBSS STA %pM to state %d (%d) - keeping it anyway\n", sdata_info(sdata,
sdata->name, sta->sta.addr, state + 1, err); "failed to move IBSS STA %pM to state %d (%d) - keeping it anyway\n",
sta->sta.addr, state + 1, err);
err = 0; err = 0;
} }
...@@ -389,9 +386,7 @@ static int sta_info_insert_finish(struct sta_info *sta) __acquires(RCU) ...@@ -389,9 +386,7 @@ static int sta_info_insert_finish(struct sta_info *sta) __acquires(RCU)
sinfo.generation = local->sta_generation; sinfo.generation = local->sta_generation;
cfg80211_new_sta(sdata->dev, sta->sta.addr, &sinfo, GFP_KERNEL); cfg80211_new_sta(sdata->dev, sta->sta.addr, &sinfo, GFP_KERNEL);
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG sta_dbg(sdata, "Inserted STA %pM\n", sta->sta.addr);
wiphy_debug(local->hw.wiphy, "Inserted STA %pM\n", sta->sta.addr);
#endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
/* move reference to rcu-protected */ /* move reference to rcu-protected */
rcu_read_lock(); rcu_read_lock();
...@@ -617,9 +612,8 @@ static bool sta_info_cleanup_expire_buffered_ac(struct ieee80211_local *local, ...@@ -617,9 +612,8 @@ static bool sta_info_cleanup_expire_buffered_ac(struct ieee80211_local *local,
break; break;
local->total_ps_buffered--; local->total_ps_buffered--;
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG ps_dbg(sta->sdata, "Buffered frame expired (STA %pM)\n",
pr_debug("Buffered frame expired (STA %pM)\n", sta->sta.addr); sta->sta.addr);
#endif
dev_kfree_skb(skb); dev_kfree_skb(skb);
} }
...@@ -745,9 +739,8 @@ int __must_check __sta_info_destroy(struct sta_info *sta) ...@@ -745,9 +739,8 @@ int __must_check __sta_info_destroy(struct sta_info *sta)
mesh_accept_plinks_update(sdata); mesh_accept_plinks_update(sdata);
#endif #endif
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG sta_dbg(sdata, "Removed STA %pM\n", sta->sta.addr);
wiphy_debug(local->hw.wiphy, "Removed STA %pM\n", sta->sta.addr);
#endif /* CONFIG_MAC80211_VERBOSE_DEBUG */
cancel_work_sync(&sta->drv_unblock_wk); cancel_work_sync(&sta->drv_unblock_wk);
cfg80211_del_sta(sdata->dev, sta->sta.addr, GFP_KERNEL); cfg80211_del_sta(sdata->dev, sta->sta.addr, GFP_KERNEL);
...@@ -887,8 +880,8 @@ void ieee80211_sta_expire(struct ieee80211_sub_if_data *sdata, ...@@ -887,8 +880,8 @@ void ieee80211_sta_expire(struct ieee80211_sub_if_data *sdata,
continue; continue;
if (time_after(jiffies, sta->last_rx + exp_time)) { if (time_after(jiffies, sta->last_rx + exp_time)) {
ibss_vdbg("%s: expiring inactive STA %pM\n", ibss_dbg(sdata, "expiring inactive STA %pM\n",
sdata->name, sta->sta.addr); sta->sta.addr);
WARN_ON(__sta_info_destroy(sta)); WARN_ON(__sta_info_destroy(sta));
} }
} }
...@@ -986,10 +979,9 @@ void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta) ...@@ -986,10 +979,9 @@ void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta)
sta_info_recalc_tim(sta); sta_info_recalc_tim(sta);
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG ps_dbg(sdata,
pr_debug("%s: STA %pM aid %d sending %d filtered/%d PS frames since STA not sleeping anymore\n", "STA %pM aid %d sending %d filtered/%d PS frames since STA not sleeping anymore\n",
sdata->name, sta->sta.addr, sta->sta.aid, filtered, buffered); sta->sta.addr, sta->sta.aid, filtered, buffered);
#endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
} }
static void ieee80211_send_null_response(struct ieee80211_sub_if_data *sdata, static void ieee80211_send_null_response(struct ieee80211_sub_if_data *sdata,
...@@ -1379,10 +1371,8 @@ int sta_info_move_state(struct sta_info *sta, ...@@ -1379,10 +1371,8 @@ int sta_info_move_state(struct sta_info *sta,
return -EINVAL; return -EINVAL;
} }
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG sta_dbg(sta->sdata, "moving STA %pM to state %d\n",
pr_debug("%s: moving STA %pM to state %d\n", sta->sta.addr, new_state);
sta->sdata->name, sta->sta.addr, new_state);
#endif
/* /*
* notify the driver before the actual changes so it can * notify the driver before the actual changes so it can
......
...@@ -155,13 +155,10 @@ static void ieee80211_handle_filtered_frame(struct ieee80211_local *local, ...@@ -155,13 +155,10 @@ static void ieee80211_handle_filtered_frame(struct ieee80211_local *local,
return; return;
} }
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG ps_dbg_ratelimited(sta->sdata,
if (net_ratelimit()) "dropped TX filtered frame, queue_len=%d PS=%d @%lu\n",
wiphy_debug(local->hw.wiphy, skb_queue_len(&sta->tx_filtered[ac]),
"dropped TX filtered frame, queue_len=%d PS=%d @%lu\n", !!test_sta_flag(sta, WLAN_STA_PS_STA), jiffies);
skb_queue_len(&sta->tx_filtered[ac]),
!!test_sta_flag(sta, WLAN_STA_PS_STA), jiffies);
#endif
dev_kfree_skb(skb); dev_kfree_skb(skb);
} }
......
...@@ -297,9 +297,10 @@ ieee80211_tx_h_check_assoc(struct ieee80211_tx_data *tx) ...@@ -297,9 +297,10 @@ ieee80211_tx_h_check_assoc(struct ieee80211_tx_data *tx)
if (unlikely(!assoc && if (unlikely(!assoc &&
ieee80211_is_data(hdr->frame_control))) { ieee80211_is_data(hdr->frame_control))) {
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
pr_debug("%s: dropped data frame to not associated station %pM\n", sdata_info(tx->sdata,
tx->sdata->name, hdr->addr1); "dropped data frame to not associated station %pM\n",
#endif /* CONFIG_MAC80211_VERBOSE_DEBUG */ hdr->addr1);
#endif
I802_DEBUG_INC(tx->local->tx_handlers_drop_not_assoc); I802_DEBUG_INC(tx->local->tx_handlers_drop_not_assoc);
return TX_DROP; return TX_DROP;
} }
...@@ -366,10 +367,7 @@ static void purge_old_ps_buffers(struct ieee80211_local *local) ...@@ -366,10 +367,7 @@ static void purge_old_ps_buffers(struct ieee80211_local *local)
rcu_read_unlock(); rcu_read_unlock();
local->total_ps_buffered = total; local->total_ps_buffered = total;
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG ps_dbg_hw(&local->hw, "PS buffers full - purged %d frames\n", purged);
wiphy_debug(local->hw.wiphy, "PS buffers full - purged %d frames\n",
purged);
#endif
} }
static ieee80211_tx_result static ieee80211_tx_result
...@@ -411,10 +409,8 @@ ieee80211_tx_h_multicast_ps_buf(struct ieee80211_tx_data *tx) ...@@ -411,10 +409,8 @@ ieee80211_tx_h_multicast_ps_buf(struct ieee80211_tx_data *tx)
purge_old_ps_buffers(tx->local); purge_old_ps_buffers(tx->local);
if (skb_queue_len(&tx->sdata->bss->ps_bc_buf) >= AP_MAX_BC_BUFFER) { if (skb_queue_len(&tx->sdata->bss->ps_bc_buf) >= AP_MAX_BC_BUFFER) {
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG ps_dbg(tx->sdata,
net_dbg_ratelimited("%s: BC TX buffer full - dropping the oldest frame\n", "BC TX buffer full - dropping the oldest frame\n");
tx->sdata->name);
#endif
dev_kfree_skb(skb_dequeue(&tx->sdata->bss->ps_bc_buf)); dev_kfree_skb(skb_dequeue(&tx->sdata->bss->ps_bc_buf));
} else } else
tx->local->total_ps_buffered++; tx->local->total_ps_buffered++;
...@@ -465,18 +461,15 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx) ...@@ -465,18 +461,15 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
return TX_CONTINUE; return TX_CONTINUE;
} }
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG ps_dbg(sta->sdata, "STA %pM aid %d: PS buffer for AC %d\n",
pr_debug("STA %pM aid %d: PS buffer for AC %d\n", sta->sta.addr, sta->sta.aid, ac);
sta->sta.addr, sta->sta.aid, ac);
#endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
if (tx->local->total_ps_buffered >= TOTAL_MAX_TX_BUFFER) if (tx->local->total_ps_buffered >= TOTAL_MAX_TX_BUFFER)
purge_old_ps_buffers(tx->local); purge_old_ps_buffers(tx->local);
if (skb_queue_len(&sta->ps_tx_buf[ac]) >= STA_MAX_TX_BUFFER) { if (skb_queue_len(&sta->ps_tx_buf[ac]) >= STA_MAX_TX_BUFFER) {
struct sk_buff *old = skb_dequeue(&sta->ps_tx_buf[ac]); struct sk_buff *old = skb_dequeue(&sta->ps_tx_buf[ac]);
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG ps_dbg(tx->sdata,
net_dbg_ratelimited("%s: STA %pM TX buffer for AC %d full - dropping oldest frame\n", "STA %pM TX buffer for AC %d full - dropping oldest frame\n",
tx->sdata->name, sta->sta.addr, ac); sta->sta.addr, ac);
#endif
dev_kfree_skb(old); dev_kfree_skb(old);
} else } else
tx->local->total_ps_buffered++; tx->local->total_ps_buffered++;
...@@ -498,13 +491,11 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx) ...@@ -498,13 +491,11 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
sta_info_recalc_tim(sta); sta_info_recalc_tim(sta);
return TX_QUEUED; return TX_QUEUED;
} else if (unlikely(test_sta_flag(sta, WLAN_STA_PS_STA))) {
ps_dbg(tx->sdata,
"STA %pM in PS mode, but polling/in SP -> send frame\n",
sta->sta.addr);
} }
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
else if (unlikely(test_sta_flag(sta, WLAN_STA_PS_STA))) {
pr_debug("%s: STA %pM in PS mode, but polling/in SP -> send frame\n",
tx->sdata->name, sta->sta.addr);
}
#endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
return TX_CONTINUE; return TX_CONTINUE;
} }
...@@ -1963,7 +1954,7 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, ...@@ -1963,7 +1954,7 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
(cpu_to_be16(ethertype) != sdata->control_port_protocol || (cpu_to_be16(ethertype) != sdata->control_port_protocol ||
!ether_addr_equal(sdata->vif.addr, skb->data + ETH_ALEN)))) { !ether_addr_equal(sdata->vif.addr, skb->data + ETH_ALEN)))) {
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
net_dbg_ratelimited("%s: dropped frame to %pM (unauthorized port)\n", net_info_ratelimited("%s: dropped frame to %pM (unauthorized port)\n",
dev->name, hdr.addr1); dev->name, hdr.addr1);
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment