aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlegacy/common.c
diff options
context:
space:
mode:
authorStanislaw Gruszka <sgruszka@redhat.com>2012-02-13 05:23:20 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-02-22 14:51:15 -0500
commit288f9954132cd64f60fbb8051e31d62d8c35875f (patch)
tree5defaae6d77d4babd0a8bf5b9e3eefe3f1d19ee6 /drivers/net/wireless/iwlegacy/common.c
parentc936355172a7e4aeadbbdcaae48f10e31f604899 (diff)
iwlegacy: get rid of tx/rx traffic log
The same data can be gathered using monitor mode. Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlegacy/common.c')
-rw-r--r--drivers/net/wireless/iwlegacy/common.c247
1 files changed, 0 insertions, 247 deletions
diff --git a/drivers/net/wireless/iwlegacy/common.c b/drivers/net/wireless/iwlegacy/common.c
index 1bf861626c86..21b355a9171f 100644
--- a/drivers/net/wireless/iwlegacy/common.c
+++ b/drivers/net/wireless/iwlegacy/common.c
@@ -4574,253 +4574,6 @@ il_txq_mem(struct il_priv *il)
4574} 4574}
4575EXPORT_SYMBOL(il_txq_mem); 4575EXPORT_SYMBOL(il_txq_mem);
4576 4576
4577#ifdef CONFIG_IWLEGACY_DEBUGFS
4578
4579#define IL_TRAFFIC_DUMP_SIZE (IL_TRAFFIC_ENTRY_SIZE * IL_TRAFFIC_ENTRIES)
4580
4581void
4582il_reset_traffic_log(struct il_priv *il)
4583{
4584 il->tx_traffic_idx = 0;
4585 il->rx_traffic_idx = 0;
4586 if (il->tx_traffic)
4587 memset(il->tx_traffic, 0, IL_TRAFFIC_DUMP_SIZE);
4588 if (il->rx_traffic)
4589 memset(il->rx_traffic, 0, IL_TRAFFIC_DUMP_SIZE);
4590}
4591
4592int
4593il_alloc_traffic_mem(struct il_priv *il)
4594{
4595 u32 traffic_size = IL_TRAFFIC_DUMP_SIZE;
4596
4597 if (il_debug_level & IL_DL_TX) {
4598 if (!il->tx_traffic) {
4599 il->tx_traffic = kzalloc(traffic_size, GFP_KERNEL);
4600 if (!il->tx_traffic)
4601 return -ENOMEM;
4602 }
4603 }
4604 if (il_debug_level & IL_DL_RX) {
4605 if (!il->rx_traffic) {
4606 il->rx_traffic = kzalloc(traffic_size, GFP_KERNEL);
4607 if (!il->rx_traffic)
4608 return -ENOMEM;
4609 }
4610 }
4611 il_reset_traffic_log(il);
4612 return 0;
4613}
4614EXPORT_SYMBOL(il_alloc_traffic_mem);
4615
4616void
4617il_free_traffic_mem(struct il_priv *il)
4618{
4619 kfree(il->tx_traffic);
4620 il->tx_traffic = NULL;
4621
4622 kfree(il->rx_traffic);
4623 il->rx_traffic = NULL;
4624}
4625EXPORT_SYMBOL(il_free_traffic_mem);
4626
4627void
4628il_dbg_log_tx_data_frame(struct il_priv *il, u16 length,
4629 struct ieee80211_hdr *header)
4630{
4631 __le16 fc;
4632 u16 len;
4633
4634 if (likely(!(il_debug_level & IL_DL_TX)))
4635 return;
4636
4637 if (!il->tx_traffic)
4638 return;
4639
4640 fc = header->frame_control;
4641 if (ieee80211_is_data(fc)) {
4642 len =
4643 (length >
4644 IL_TRAFFIC_ENTRY_SIZE) ? IL_TRAFFIC_ENTRY_SIZE : length;
4645 memcpy((il->tx_traffic +
4646 (il->tx_traffic_idx * IL_TRAFFIC_ENTRY_SIZE)), header,
4647 len);
4648 il->tx_traffic_idx =
4649 (il->tx_traffic_idx + 1) % IL_TRAFFIC_ENTRIES;
4650 }
4651}
4652EXPORT_SYMBOL(il_dbg_log_tx_data_frame);
4653
4654void
4655il_dbg_log_rx_data_frame(struct il_priv *il, u16 length,
4656 struct ieee80211_hdr *header)
4657{
4658 __le16 fc;
4659 u16 len;
4660
4661 if (likely(!(il_debug_level & IL_DL_RX)))
4662 return;
4663
4664 if (!il->rx_traffic)
4665 return;
4666
4667 fc = header->frame_control;
4668 if (ieee80211_is_data(fc)) {
4669 len =
4670 (length >
4671 IL_TRAFFIC_ENTRY_SIZE) ? IL_TRAFFIC_ENTRY_SIZE : length;
4672 memcpy((il->rx_traffic +
4673 (il->rx_traffic_idx * IL_TRAFFIC_ENTRY_SIZE)), header,
4674 len);
4675 il->rx_traffic_idx =
4676 (il->rx_traffic_idx + 1) % IL_TRAFFIC_ENTRIES;
4677 }
4678}
4679EXPORT_SYMBOL(il_dbg_log_rx_data_frame);
4680
4681const char *
4682il_get_mgmt_string(int cmd)
4683{
4684 switch (cmd) {
4685 IL_CMD(MANAGEMENT_ASSOC_REQ);
4686 IL_CMD(MANAGEMENT_ASSOC_RESP);
4687 IL_CMD(MANAGEMENT_REASSOC_REQ);
4688 IL_CMD(MANAGEMENT_REASSOC_RESP);
4689 IL_CMD(MANAGEMENT_PROBE_REQ);
4690 IL_CMD(MANAGEMENT_PROBE_RESP);
4691 IL_CMD(MANAGEMENT_BEACON);
4692 IL_CMD(MANAGEMENT_ATIM);
4693 IL_CMD(MANAGEMENT_DISASSOC);
4694 IL_CMD(MANAGEMENT_AUTH);
4695 IL_CMD(MANAGEMENT_DEAUTH);
4696 IL_CMD(MANAGEMENT_ACTION);
4697 default:
4698 return "UNKNOWN";
4699
4700 }
4701}
4702
4703const char *
4704il_get_ctrl_string(int cmd)
4705{
4706 switch (cmd) {
4707 IL_CMD(CONTROL_BACK_REQ);
4708 IL_CMD(CONTROL_BACK);
4709 IL_CMD(CONTROL_PSPOLL);
4710 IL_CMD(CONTROL_RTS);
4711 IL_CMD(CONTROL_CTS);
4712 IL_CMD(CONTROL_ACK);
4713 IL_CMD(CONTROL_CFEND);
4714 IL_CMD(CONTROL_CFENDACK);
4715 default:
4716 return "UNKNOWN";
4717
4718 }
4719}
4720
4721void
4722il_clear_traffic_stats(struct il_priv *il)
4723{
4724 memset(&il->tx_stats, 0, sizeof(struct traffic_stats));
4725 memset(&il->rx_stats, 0, sizeof(struct traffic_stats));
4726}
4727
4728/*
4729 * if CONFIG_IWLEGACY_DEBUGFS defined,
4730 * il_update_stats function will
4731 * record all the MGMT, CTRL and DATA pkt for both TX and Rx pass
4732 * Use debugFs to display the rx/rx_stats
4733 * if CONFIG_IWLEGACY_DEBUGFS not being defined, then no MGMT and CTRL
4734 * information will be recorded, but DATA pkt still will be recorded
4735 * for the reason of il_led.c need to control the led blinking based on
4736 * number of tx and rx data.
4737 *
4738 */
4739void
4740il_update_stats(struct il_priv *il, bool is_tx, __le16 fc, u16 len)
4741{
4742 struct traffic_stats *stats;
4743
4744 if (is_tx)
4745 stats = &il->tx_stats;
4746 else
4747 stats = &il->rx_stats;
4748
4749 if (ieee80211_is_mgmt(fc)) {
4750 switch (fc & cpu_to_le16(IEEE80211_FCTL_STYPE)) {
4751 case cpu_to_le16(IEEE80211_STYPE_ASSOC_REQ):
4752 stats->mgmt[MANAGEMENT_ASSOC_REQ]++;
4753 break;
4754 case cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP):
4755 stats->mgmt[MANAGEMENT_ASSOC_RESP]++;
4756 break;
4757 case cpu_to_le16(IEEE80211_STYPE_REASSOC_REQ):
4758 stats->mgmt[MANAGEMENT_REASSOC_REQ]++;
4759 break;
4760 case cpu_to_le16(IEEE80211_STYPE_REASSOC_RESP):
4761 stats->mgmt[MANAGEMENT_REASSOC_RESP]++;
4762 break;
4763 case cpu_to_le16(IEEE80211_STYPE_PROBE_REQ):
4764 stats->mgmt[MANAGEMENT_PROBE_REQ]++;
4765 break;
4766 case cpu_to_le16(IEEE80211_STYPE_PROBE_RESP):
4767 stats->mgmt[MANAGEMENT_PROBE_RESP]++;
4768 break;
4769 case cpu_to_le16(IEEE80211_STYPE_BEACON):
4770 stats->mgmt[MANAGEMENT_BEACON]++;
4771 break;
4772 case cpu_to_le16(IEEE80211_STYPE_ATIM):
4773 stats->mgmt[MANAGEMENT_ATIM]++;
4774 break;
4775 case cpu_to_le16(IEEE80211_STYPE_DISASSOC):
4776 stats->mgmt[MANAGEMENT_DISASSOC]++;
4777 break;
4778 case cpu_to_le16(IEEE80211_STYPE_AUTH):
4779 stats->mgmt[MANAGEMENT_AUTH]++;
4780 break;
4781 case cpu_to_le16(IEEE80211_STYPE_DEAUTH):
4782 stats->mgmt[MANAGEMENT_DEAUTH]++;
4783 break;
4784 case cpu_to_le16(IEEE80211_STYPE_ACTION):
4785 stats->mgmt[MANAGEMENT_ACTION]++;
4786 break;
4787 }
4788 } else if (ieee80211_is_ctl(fc)) {
4789 switch (fc & cpu_to_le16(IEEE80211_FCTL_STYPE)) {
4790 case cpu_to_le16(IEEE80211_STYPE_BACK_REQ):
4791 stats->ctrl[CONTROL_BACK_REQ]++;
4792 break;
4793 case cpu_to_le16(IEEE80211_STYPE_BACK):
4794 stats->ctrl[CONTROL_BACK]++;
4795 break;
4796 case cpu_to_le16(IEEE80211_STYPE_PSPOLL):
4797 stats->ctrl[CONTROL_PSPOLL]++;
4798 break;
4799 case cpu_to_le16(IEEE80211_STYPE_RTS):
4800 stats->ctrl[CONTROL_RTS]++;
4801 break;
4802 case cpu_to_le16(IEEE80211_STYPE_CTS):
4803 stats->ctrl[CONTROL_CTS]++;
4804 break;
4805 case cpu_to_le16(IEEE80211_STYPE_ACK):
4806 stats->ctrl[CONTROL_ACK]++;
4807 break;
4808 case cpu_to_le16(IEEE80211_STYPE_CFEND):
4809 stats->ctrl[CONTROL_CFEND]++;
4810 break;
4811 case cpu_to_le16(IEEE80211_STYPE_CFENDACK):
4812 stats->ctrl[CONTROL_CFENDACK]++;
4813 break;
4814 }
4815 } else {
4816 /* data */
4817 stats->data_cnt++;
4818 stats->data_bytes += len;
4819 }
4820}
4821EXPORT_SYMBOL(il_update_stats);
4822#endif
4823
4824int 4577int
4825il_force_reset(struct il_priv *il, bool external) 4578il_force_reset(struct il_priv *il, bool external)
4826{ 4579{