mac80211 updates
Johannes Berg
maintainercover mac80211 updates
This patchset contains the TX/RX handler inlining and the printk and debugging rework that depends on those, rebased after the TKIP kconfig rename.
johannes
Johannes Berg
maintainerPATCH 1/3 mac80211: get rid of function pointers in TX path
This changes the TX path to no longer use function pointers for TX handlers but rather invoke them directly. If debugging is enabled, mark the TX handlers noinline because otherwise they all get inlined into invoke_tx_handlers() which makes it harder to see where a bug is.
--- net/mac80211/ieee80211_i.h | 6 ++++ net/mac80211/tx.c | 63 ++++++++++++++++++++------------------------- 2 files changed, 35 insertions(+), 34 deletions(-)
net/mac80211/tx.c +29 -34
@@ -220,7 +220,7 @@ static int inline is_ieee80211_device(st/* tx handlers */ -static ieee80211_tx_result +static ieee80211_tx_result debug_noinlineieee80211_tx_h_check_assoc (struct ieee80211_tx_data *tx) {#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
@@ -274,7 +274,7 @@ ieee80211_tx_h_check_assoc(struct ieee80return TX_CONTINUE ; } -static ieee80211_tx_result +static ieee80211_tx_result debug_noinlineieee80211_tx_h_sequence (struct ieee80211_tx_data *tx) {struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data;
@@ -432,7 +432,7 @@ ieee80211_tx_h_unicast_ps_buf(struct ieereturn TX_CONTINUE ; } -static ieee80211_tx_result +static ieee80211_tx_result debug_noinlineieee80211_tx_h_ps_buf (struct ieee80211_tx_data *tx) {if (unlikely (tx->flags &IEEE80211_TX_PS_BUFFERED ))
@@ -444,7 +444,7 @@ ieee80211_tx_h_ps_buf(struct ieee80211_treturn ieee80211_tx_h_multicast_ps_buf (tx); } -static ieee80211_tx_result +static ieee80211_tx_result debug_noinlineieee80211_tx_h_select_key (struct ieee80211_tx_data *tx) {struct ieee80211_key *key;
@@ -493,7 +493,7 @@ ieee80211_tx_h_select_key(struct ieee802return TX_CONTINUE ; } -static ieee80211_tx_result +static ieee80211_tx_result debug_noinlineieee80211_tx_h_rate_ctrl (struct ieee80211_tx_data *tx) {struct rate_selection rsel;
@@ -537,7 +537,7 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021return TX_CONTINUE ; } -static ieee80211_tx_result +static ieee80211_tx_result debug_noinlineieee80211_tx_h_misc (struct ieee80211_tx_data *tx) {struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data;
@@ -632,7 +632,7 @@ ieee80211_tx_h_misc(struct ieee80211_tx_return TX_CONTINUE ; } -static ieee80211_tx_result +static ieee80211_tx_result debug_noinlineieee80211_tx_h_fragment (struct ieee80211_tx_data *tx) {struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data;
@@ -724,7 +724,7 @@ ieee80211_tx_h_fragment(struct ieee80211return TX_DROP ; } -static ieee80211_tx_result +static ieee80211_tx_result debug_noinlineieee80211_tx_h_encrypt (struct ieee80211_tx_data *tx) {if (!tx->key)
@@ -744,7 +744,7 @@ ieee80211_tx_h_encrypt(struct ieee80211_return TX_DROP ; } -static ieee80211_tx_result +static ieee80211_tx_result debug_noinlineieee80211_tx_h_calculate_duration (struct ieee80211_tx_data *tx) {struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data;
@@ -774,7 +774,7 @@ ieee80211_tx_h_calculate_duration(structreturn TX_CONTINUE ; } -static ieee80211_tx_result +static ieee80211_tx_result debug_noinlineieee80211_tx_h_stats (struct ieee80211_tx_data *tx) {int i;
@@ -795,24 +795,6 @@ ieee80211_tx_h_stats(struct ieee80211_tx } -typedef ieee80211_tx_result (*ieee80211_tx_handler )(struct ieee80211_tx_data *); -static ieee80211_tx_handler ieee80211_tx_handlers[] = -{ - ieee80211_tx_h_check_assoc, - ieee80211_tx_h_sequence, - ieee80211_tx_h_ps_buf, - ieee80211_tx_h_select_key, - ieee80211_tx_h_michael_mic_add, - ieee80211_tx_h_rate_ctrl, - ieee80211_tx_h_misc, - ieee80211_tx_h_fragment, -/* handlers after fragment must be aware of tx info fragmentation! */ - ieee80211_tx_h_encrypt, - ieee80211_tx_h_calculate_duration, - ieee80211_tx_h_stats, -NULL -}; -/* actual transmit path */ /*
@@ -1112,16 +1094,29 @@ static int invoke_tx_handlers(struct iee {struct ieee80211_local *local = tx->local;struct sk_buff *skb = tx->skb; -ieee80211_tx_handler *handler;ieee80211_tx_result res =TX_DROP ;int i; -for (handler = ieee80211_tx_handlers; *handler !=NULL ; handler++) { - res = (*handler)(tx); -if (res !=TX_CONTINUE ) -break ; - } +#define CALL_TXH (txh) \ + res = txh(tx); \ + if (res != TX_CONTINUE) \ + goto txh_done; + +CALL_TXH (ieee80211_tx_h_check_assoc) +CALL_TXH (ieee80211_tx_h_sequence ) +CALL_TXH (ieee80211_tx_h_ps_buf) +CALL_TXH (ieee80211_tx_h_select_key) +CALL_TXH (ieee80211_tx_h_michael_mic_add) +CALL_TXH (ieee80211_tx_h_rate_ctrl) +CALL_TXH (ieee80211_tx_h_misc) +CALL_TXH (ieee80211_tx_h_fragment) +/* handlers after fragment must be aware of tx info fragmentation! */ +CALL_TXH (ieee80211_tx_h_encrypt) +CALL_TXH (ieee80211_tx_h_calculate_duration) +CALL_TXH (ieee80211_tx_h_stats) +#undef CALL_TXH + txh_done: if (unlikely(res == TX_DROP)) {I802_DEBUG_INC (local->tx_handlers_drop);dev_kfree_skb (skb);
net/mac80211/ieee80211_i.h +6 -0
@@ -954,4 +954,10 @@ int ieee80211_frame_duration(struct ieeevoid mac80211_ev_michael_mic_failure (struct net_device *dev,int keyidx,struct ieee80211_hdr *hdr); +#ifdef CONFIG_MAC80211_DEBUG +#define debug_noinline noinline +#else +#define debug_noinline +#endif +#endif /* IEEE80211_I_H */
Johannes Berg
maintainerPATCH 2/3 mac80211: get rid of function pointers in RX path
In reply to Johannes BergThis changes the RX path to no longer use function pointers for RX handlers but rather invoke them directly. If debugging is enabled, mark the RX handlers noinline because otherwise they all get inlined into ieee80211_invoke_rx_handlers() which makes it harder to see where a bug is.
--- net/mac80211/rx.c | 93 ++++++++++++++++++++++++------------------------------ 1 file changed, 42 insertions(+), 51 deletions(-)
net/mac80211/rx.c +42 -51
@@ -386,7 +386,7 @@ static void ieee80211_verify_ip_alignmen/* rx handlers */ -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_passive_scan (struct ieee80211_rx_data *rx) {struct ieee80211_local *local = rx->local;
@@ -463,7 +463,7 @@ ieee80211_rx_mesh_check(struct ieee80211 } -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_check (struct ieee80211_rx_data *rx) {struct ieee80211_hdr *hdr;
@@ -522,7 +522,7 @@ ieee80211_rx_h_check(struct ieee80211_rx } -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_decrypt (struct ieee80211_rx_data *rx) {struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) rx->skb->data;
@@ -710,7 +710,7 @@ static int ap_sta_ps_end(struct net_devireturn sent; } -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_sta_process (struct ieee80211_rx_data *rx) {struct sta_info *sta = rx->sta;
@@ -858,7 +858,7 @@ ieee80211_reassemble_find(struct ieee802return NULL ; } -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_defragment (struct ieee80211_rx_data *rx) {struct ieee80211_hdr *hdr;
@@ -974,7 +974,7 @@ ieee80211_rx_h_defragment(struct ieee802return RX_CONTINUE ; } -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_ps_poll (struct ieee80211_rx_data *rx) {struct ieee80211_sub_if_data *sdata =IEEE80211_DEV_TO_SUB_IF (rx->dev);
@@ -1049,7 +1049,7 @@ ieee80211_rx_h_ps_poll(struct ieee80211_return RX_QUEUED ; } -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_remove_qos_control (struct ieee80211_rx_data *rx) {u16 fc = rx->fc;
@@ -1367,7 +1367,7 @@ ieee80211_deliver_skb(struct ieee80211_r } } -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_amsdu (struct ieee80211_rx_data *rx) {struct net_device *dev = rx->dev;
@@ -1484,7 +1484,7 @@ ieee80211_rx_h_amsdu(struct ieee80211_rxreturn RX_QUEUED ; } -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_data (struct ieee80211_rx_data *rx) {struct net_device *dev = rx->dev;
@@ -1515,7 +1515,7 @@ ieee80211_rx_h_data(struct ieee80211_rx_return RX_QUEUED ; } -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_ctrl (struct ieee80211_rx_data *rx) {struct ieee80211_local *local = rx->local;
@@ -1559,7 +1559,7 @@ ieee80211_rx_h_ctrl(struct ieee80211_rx_return RX_CONTINUE ; } -static ieee80211_rx_result +static ieee80211_rx_result debug_noinlineieee80211_rx_h_mgmt (struct ieee80211_rx_data *rx) {struct ieee80211_sub_if_data *sdata;
@@ -1732,66 +1732,57 @@ static void ieee80211_rx_cooked_monitor(dev_kfree_skb (skb); } -typedef ieee80211_rx_result (*ieee80211_rx_handler )(struct ieee80211_rx_data *); -static ieee80211_rx_handler ieee80211_rx_handlers[] = -{ - ieee80211_rx_h_passive_scan, - ieee80211_rx_h_check, - ieee80211_rx_h_decrypt, - ieee80211_rx_h_sta_process, - ieee80211_rx_h_defragment, - ieee80211_rx_h_ps_poll, - ieee80211_rx_h_michael_mic_verify, -/* this must be after decryption - so header is counted in MPDU mic -* must be before pae and data, so QOS_DATA format frames -* are not passed to user space by these functions -*/ - ieee80211_rx_h_remove_qos_control, - ieee80211_rx_h_amsdu, - ieee80211_rx_h_data, - ieee80211_rx_h_ctrl, - ieee80211_rx_h_mgmt, -NULL -};static void ieee80211_invoke_rx_handlers (struct ieee80211_sub_if_data *sdata,struct ieee80211_rx_data *rx,struct sk_buff *skb) { -ieee80211_rx_handler *handler;ieee80211_rx_result res =RX_DROP_MONITOR ; rx->skb = skb; rx->sdata = sdata; rx->dev = sdata->dev; -for (handler = ieee80211_rx_handlers; *handler !=NULL ; handler++) { - res = (*handler)(rx); +#define CALL_RXH (rxh) \ + res = rxh(rx); \ + if (res != RX_CONTINUE) \ + goto rxh_done; + +CALL_RXH (ieee80211_rx_h_passive_scan) +CALL_RXH (ieee80211_rx_h_check ) +CALL_RXH (ieee80211_rx_h_decrypt) +CALL_RXH (ieee80211_rx_h_sta_process) +CALL_RXH (ieee80211_rx_h_defragment) +CALL_RXH (ieee80211_rx_h_ps_poll) +CALL_RXH (ieee80211_rx_h_michael_mic_verify) +/* must be after MMIC verify so header is counted in MPDU mic */ +CALL_RXH (ieee80211_rx_h_remove_qos_control) +CALL_RXH (ieee80211_rx_h_amsdu) +CALL_RXH (ieee80211_rx_h_data) +CALL_RXH (ieee80211_rx_h_ctrl) +CALL_RXH (ieee80211_rx_h_mgmt) -switch (res) { -case RX_CONTINUE : -continue ; -case RX_DROP_UNUSABLE : -case RX_DROP_MONITOR : -I802_DEBUG_INC (sdata->local->rx_handlers_drop); -if (rx->sta) - rx->sta->rx_dropped++; -break ; -case RX_QUEUED : -I802_DEBUG_INC (sdata->local->rx_handlers_queued); -break ; - } -break ; - } +#undef CALL_RXH + rxh_done: switch (res) { -case RX_CONTINUE :case RX_DROP_MONITOR : +I802_DEBUG_INC (sdata->local->rx_handlers_drop); +if (rx->sta) + rx->sta->rx_dropped++; +/* fall through */ +case RX_CONTINUE :ieee80211_rx_cooked_monitor (rx);break ;case RX_DROP_UNUSABLE : +I802_DEBUG_INC (sdata->local->rx_handlers_drop); +if (rx->sta) + rx->sta->rx_dropped++;dev_kfree_skb (rx->skb);break ; +case RX_QUEUED : +I802_DEBUG_INC (sdata->local->rx_handlers_queued); +break ; } }
Johannes Berg
maintainerPATCH 3/3 mac80211: rework debug settings and make debugging safer
In reply to Johannes BergThis patch reworks the mac80211 debug settings making them more focused and adding help text for those that didn't have one. It also removes a number of printks that can be triggered remotely and add no value, e.g. "too short deauthentication frame received - ignoring".
If somebody really needs to debug that they should just add a monitor interface and look at the frames in wireshark.
--- net/mac80211/Kconfig | 133 ++++++++++++++++++++--------- net/mac80211/ieee80211_i.h | 2 net/mac80211/iface.c | 6 - net/mac80211/main.c | 35 ++++++- net/mac80211/mlme.c | 206 ++++++++++----------------------------------- net/mac80211/rx.c | 106 ++--------------------- net/mac80211/sta_info.c | 2 net/mac80211/tx.c | 9 + net/mac80211/wep.c | 13 -- net/mac80211/wme.c | 1 net/mac80211/wpa.c | 28 ------ 11 files changed, 197 insertions(+), 344 deletions(-)
net/mac80211/iface.c +3 -3
@@ -184,9 +184,9 @@ void ieee80211_if_set_type(struct net_de sdata->u.mntr_flags =MONITOR_FLAG_CONTROL |MONITOR_FLAG_OTHER_BSS ;break ; -default : -printk (KERN_WARNING "%s: %s: Unknown interface type 0x%x" , - dev->name, __func__, type); +case IEEE80211_IF_TYPE_INVALID : +BUG (); +break ; }ieee80211_debugfs_change_if_type (sdata, oldtype); }
net/mac80211/main.c +29 -6
@@ -151,9 +151,7 @@ static int ieee80211_change_mtu(struct n/* FIX: what would be proper limits for MTU? * This interface uses 802.3 frames. */ if (new_mtu <256 || - new_mtu >IEEE80211_MAX_DATA_LEN -24 -6 - meshhdrlen) { -printk (KERN_WARNING "%s: invalid MTU %d\n" , - dev->name, new_mtu); + new_mtu >IEEE80211_MAX_DATA_LEN -24 -6 - meshhdrlen) {return -EINVAL ; }
@@ -636,7 +634,9 @@ int ieee80211_start_tx_ba_session(struct sta =sta_info_get (local, ra);if (!sta) { +#ifdef CONFIG_MAC80211_HT_DEBUG printk (KERN_DEBUG "Could not find the station\n" ); +#endif ret = -ENOENT ; goto exit; }
@@ -664,9 +664,11 @@ int ieee80211_start_tx_ba_session(struct sta->ampdu_mlme.tid_tx[tid] =kmalloc (sizeof (struct tid_ampdu_tx ),GFP_ATOMIC );if (!sta->ampdu_mlme.tid_tx[tid]) { +#ifdef CONFIG_MAC80211_HT_DEBUG if (net_ratelimit ())printk (KERN_ERR "allocate tx mlme to tid %d failed\n" , tid); +#endif ret = -ENOMEM ; goto err_unlock_sta; }
@@ -736,7 +738,9 @@ int ieee80211_start_tx_ba_session(struct sta->ampdu_mlme.tid_tx[tid]->addba_resp_timer.expires = jiffies +ADDBA_RESP_INTERVAL ;add_timer (&sta->ampdu_mlme.tid_tx[tid]->addba_resp_timer); +#ifdef CONFIG_MAC80211_HT_DEBUG printk (KERN_DEBUG "activated addBA response timer on tid %d\n" , tid); +#endif goto exit; err_unlock_queue:
@@ -818,8 +822,10 @@ void ieee80211_start_tx_ba_cb(struct ieeDECLARE_MAC_BUF (mac);if (tid >=STA_TID_NUM ) { +#ifdef CONFIG_MAC80211_HT_DEBUG printk (KERN_DEBUG "Bad TID value: tid = %d (>= %d)\n" , tid,STA_TID_NUM ); +#endif return ; }
@@ -827,8 +833,10 @@ void ieee80211_start_tx_ba_cb(struct iee sta =sta_info_get (local, ra);if (!sta) {rcu_read_unlock (); +#ifdef CONFIG_MAC80211_HT_DEBUG printk (KERN_DEBUG "Could not find station: %s\n" ,print_mac (mac, ra)); +#endif return ; }
@@ -836,8 +844,10 @@ void ieee80211_start_tx_ba_cb(struct ieespin_lock_bh (&sta->lock);if (!(*state &HT_ADDBA_REQUESTED_MSK )) { +#ifdef CONFIG_MAC80211_HT_DEBUG printk (KERN_DEBUG "addBA was not requested yet, state is %d\n" , *state); +#endif spin_unlock_bh (&sta->lock);rcu_read_unlock ();return ;
@@ -848,7 +858,9 @@ void ieee80211_start_tx_ba_cb(struct iee *state |=HT_ADDBA_DRV_READY_MSK ;if (*state ==HT_AGG_STATE_OPERATIONAL ) { +#ifdef CONFIG_MAC80211_HT_DEBUG printk (KERN_DEBUG "Aggregation is on for tid %d \n" , tid); +#endif ieee80211_wake_queue (hw, sta->tid_to_tx_q[tid]); }spin_unlock_bh (&sta->lock);
@@ -865,8 +877,10 @@ void ieee80211_stop_tx_ba_cb(struct ieeeDECLARE_MAC_BUF (mac);if (tid >=STA_TID_NUM ) { +#ifdef CONFIG_MAC80211_HT_DEBUG printk (KERN_DEBUG "Bad TID value: tid = %d (>= %d)\n" , tid,STA_TID_NUM ); +#endif return ; }
@@ -878,8 +892,10 @@ void ieee80211_stop_tx_ba_cb(struct ieeercu_read_lock (); sta =sta_info_get (local, ra);if (!sta) { +#ifdef CONFIG_MAC80211_HT_DEBUG printk (KERN_DEBUG "Could not find station: %s\n" ,print_mac (mac, ra)); +#endif rcu_read_unlock ();return ; }
@@ -889,7 +905,9 @@ void ieee80211_stop_tx_ba_cb(struct ieee* ieee80211_stop_tx_ba_session will let only * one stop call to pass through per sta/tid */ if ((*state &HT_AGG_STATE_REQ_STOP_BA_MSK ) ==0 ) { +#ifdef CONFIG_MAC80211_HT_DEBUG printk (KERN_DEBUG "unexpected callback to A-MPDU stop\n" ); +#endif rcu_read_unlock ();return ; }
@@ -931,9 +949,11 @@ void ieee80211_start_tx_ba_cb_irqsafe(ststruct sk_buff *skb =dev_alloc_skb (0 );if (unlikely (!skb)) { +#ifdef CONFIG_MAC80211_HT_DEBUG if (net_ratelimit ())printk (KERN_WARNING "%s: Not enough memory, " "dropping start BA session" , skb->dev->name); +#endif return ; } ra_tid = (struct ieee80211_ra_tid *) &skb->cb;
@@ -954,9 +974,11 @@ void ieee80211_stop_tx_ba_cb_irqsafe(strstruct sk_buff *skb =dev_alloc_skb (0 );if (unlikely (!skb)) { +#ifdef CONFIG_MAC80211_HT_DEBUG if (net_ratelimit ())printk (KERN_WARNING "%s: Not enough memory, " "dropping stop BA session" , skb->dev->name); +#endif return ; } ra_tid = (struct ieee80211_ra_tid *) &skb->cb;
@@ -1285,9 +1307,8 @@ static void ieee80211_tasklet_handler(un ra_tid->ra, ra_tid->tid);dev_kfree_skb (skb);break ; -default :/* should never get here! */ -printk (KERN_ERR "%s: Unknown message type (%d)\n" , -wiphy_name (local->hw.wiphy), skb->pkt_type); +default : +WARN_ON (1 );dev_kfree_skb (skb);break ; }
@@ -1414,12 +1435,14 @@ static void ieee80211_handle_filtered_frreturn ; } +#ifdef CONFIG_MAC80211_VERBOSE_DEBUG if (net_ratelimit ())printk (KERN_DEBUG "%s: dropped TX filtered frame, " "queue_len=%d PS=%d @%lu\n" ,wiphy_name (local->hw.wiphy),skb_queue_len (&sta->tx_filtered), !!test_sta_flags (sta,WLAN_STA_PS ), jiffies); +#endif dev_kfree_skb (skb); }
net/mac80211/mlme.c +49 -157
471 lines not on this page · raw message
net/mac80211/rx.c +12 -94
209 lines not on this page · raw message
net/mac80211/sta_info.c +2 -0
@@ -554,8 +554,10 @@ static void sta_info_cleanup_expire_buff sdata = sta->sdata; local->total_ps_buffered--; +#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG printk (KERN_DEBUG "Buffered frame expired (STA " "%s)\n" ,print_mac (mac, sta->addr)); +#endif dev_kfree_skb (skb);if (skb_queue_empty (&sta->ps_tx_buf))
net/mac80211/tx.c +6 -3
@@ -327,8 +327,10 @@ static void purge_old_ps_buffers(structrcu_read_unlock (); local->total_ps_buffered = total; +#ifdef MAC80211_VERBOSE_PS_DEBUG printk (KERN_DEBUG "%s: PS buffers full - purged %d frames\n" ,wiphy_name (local->hw.wiphy), purged); +#endif } static ieee80211_tx_result
@@ -358,11 +360,13 @@ ieee80211_tx_h_multicast_ps_buf(struct ipurge_old_ps_buffers (tx->local);if (skb_queue_len (&tx->sdata->bss->ps_bc_buf) >=AP_MAX_BC_BUFFER ) { +#ifdef MAC80211_VERBOSE_PS_DEBUG if (net_ratelimit ()) {printk (KERN_DEBUG "%s: BC TX buffer full - " "dropping the oldest frame\n" , tx->dev->name); } +#endif dev_kfree_skb (skb_dequeue (&tx->sdata->bss->ps_bc_buf)); }else tx->local->total_ps_buffered++;
@@ -403,11 +407,13 @@ ieee80211_tx_h_unicast_ps_buf(struct ieepurge_old_ps_buffers (tx->local);if (skb_queue_len (&sta->ps_tx_buf) >=STA_MAX_TX_BUFFER ) {struct sk_buff *old =skb_dequeue (&sta->ps_tx_buf); +#ifdef MAC80211_VERBOSE_PS_DEBUG if (net_ratelimit ()) {printk (KERN_DEBUG "%s: STA %s TX " "buffer full - dropping oldest frame\n" , tx->dev->name,print_mac (mac, sta->addr)); } +#endif dev_kfree_skb (old); }else tx->local->total_ps_buffered++;
@@ -713,7 +719,6 @@ ieee80211_tx_h_fragment(struct ieee80211return TX_CONTINUE ; fail: -printk (KERN_DEBUG "%s: failed to fragment frame\n" , tx->dev->name);if (frags) {for (i =0 ; i < num_fragm -1 ; i++)if (frags[i])
@@ -1412,8 +1417,6 @@ int ieee80211_subif_start_xmit(struct sk sdata =IEEE80211_DEV_TO_SUB_IF (dev);if (unlikely (skb->len <ETH_HLEN )) { -printk (KERN_DEBUG "%s: short skb (len=%d)\n" , - dev->name, skb->len); ret =0 ; goto fail; }
net/mac80211/wep.c +2 -11
@@ -253,11 +253,8 @@ int ieee80211_wep_decrypt(struct ieee802if (ieee80211_wep_decrypt_data (local->wep_rx_tfm, rc4key, klen, skb->data + hdrlen +WEP_IV_LEN , - len)) { -if (net_ratelimit ()) -printk (KERN_DEBUG "WEP decrypt failed (ICV)\n" ); + len)) ret =-1 ; - }kfree (rc4key);
@@ -301,14 +298,8 @@ ieee80211_crypto_wep_decrypt(struct ieeereturn RX_CONTINUE ;if (!(rx->status->flag &RX_FLAG_DECRYPTED )) { -if (ieee80211_wep_decrypt (rx->local, rx->skb, rx->key)) { -#ifdef CONFIG_MAC80211_DEBUG -if (net_ratelimit ()) -printk (KERN_DEBUG "%s: RX WEP frame, decrypt " -"failed\n" , rx->dev->name); -#endif /* CONFIG_MAC80211_DEBUG */ +if (ieee80211_wep_decrypt (rx->local, rx->skb, rx->key))return RX_DROP_UNUSABLE ; - } }else if (!(rx->status->flag &RX_FLAG_IV_STRIPPED )) {ieee80211_wep_remove_iv (rx->local, rx->skb, rx->key);/* remove ICV */
net/mac80211/wme.c +0 -1
@@ -680,7 +680,6 @@ void ieee80211_requeue(struct ieee80211_if (!qdisc || !qdisc->dequeue)return ; -printk (KERN_DEBUG "requeue: qlen = %d\n" , qdisc->q.qlen);for (len = qdisc->q.qlen; len >0 ; len--) { skb = qdisc->dequeue (qdisc); root_qd->q.qlen--;
net/mac80211/wpa.c +1 -27
@@ -146,9 +146,6 @@ ieee80211_rx_h_michael_mic_verify(structif (!(rx->flags &IEEE80211_RX_RA_MATCH ))return RX_DROP_UNUSABLE ; -printk (KERN_DEBUG "%s: invalid Michael MIC in data frame from " -"%s\n" , rx->dev->name,print_mac (mac, sa)); -mac80211_ev_michael_mic_failure (rx->dev, rx->key->conf.keyidx, (void *) skb->data);return RX_DROP_UNUSABLE ;
@@ -282,15 +279,8 @@ ieee80211_crypto_tkip_decrypt(struct iee hdr->addr1, hwaccel, rx->queue, &rx->tkip_iv32, &rx->tkip_iv16); -if (res !=TKIP_DECRYPT_OK || wpa_test) { -#ifdef CONFIG_MAC80211_DEBUG -if (net_ratelimit ()) -printk (KERN_DEBUG "%s: TKIP decrypt failed for RX " -"frame from %s (res=%d)\n" , rx->dev->name, -print_mac (mac, rx->sta->addr), res); -#endif /* CONFIG_MAC80211_DEBUG */ +if (res !=TKIP_DECRYPT_OK || wpa_test)return RX_DROP_UNUSABLE ; - }/* Trim ICV */ skb_trim (skb, skb->len -TKIP_ICV_LEN );
@@ -512,16 +502,6 @@ ieee80211_crypto_ccmp_decrypt(struct iee (void )ccmp_hdr2pn (pn, skb->data + hdrlen);if (memcmp (pn, key->u.ccmp.rx_pn[rx->queue],CCMP_PN_LEN ) <=0 ) { -#ifdef CONFIG_MAC80211_DEBUG -u8 *ppn = key->u.ccmp.rx_pn[rx->queue]; - -printk (KERN_DEBUG "%s: CCMP replay detected for RX frame from " -"%s (RX PN %02x%02x%02x%02x%02x%02x <= prev. PN " -"%02x%02x%02x%02x%02x%02x)\n" , rx->dev->name, -print_mac (mac, rx->sta->addr), - pn[0 ], pn[1 ], pn[2 ], pn[3 ], pn[4 ], pn[5 ], - ppn[0 ], ppn[1 ], ppn[2 ], ppn[3 ], ppn[4 ], ppn[5 ]); -#endif /* CONFIG_MAC80211_DEBUG */ key->u.ccmp.replays++;return RX_DROP_UNUSABLE ; }
@@ -541,12 +521,6 @@ ieee80211_crypto_ccmp_decrypt(struct iee skb->data + hdrlen + CCMP_HDR_LEN, data_len, skb->data + skb->len - CCMP_MIC_LEN, skb->data + hdrlen + CCMP_HDR_LEN)) { -#ifdef CONFIG_MAC80211_DEBUG -if (net_ratelimit ()) -printk (KERN_DEBUG "%s: CCMP decrypt failed " -"for RX frame from %s\n" , rx->dev->name, -print_mac (mac, rx->sta->addr)); -#endif /* CONFIG_MAC80211_DEBUG */ return RX_DROP_UNUSABLE ; } }
net/mac80211/Kconfig +92 -41
164 lines not on this page · raw message
net/mac80211/ieee80211_i.h +1 -1
@@ -954,7 +954,7 @@ int ieee80211_frame_duration(struct ieeevoid mac80211_ev_michael_mic_failure (struct net_device *dev,int keyidx,struct ieee80211_hdr *hdr); -#ifdef CONFIG_MAC80211_DEBUG +#ifdef CONFIG_MAC80211_NOINLINE #define debug_noinline noinline#else #define debug_noinline