diff options
author | Stanislaw Gruszka <sgruszka@redhat.com> | 2012-02-13 05:23:20 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-02-22 14:51:15 -0500 |
commit | 288f9954132cd64f60fbb8051e31d62d8c35875f (patch) | |
tree | 5defaae6d77d4babd0a8bf5b9e3eefe3f1d19ee6 /drivers/net/wireless/iwlegacy/common.c | |
parent | c936355172a7e4aeadbbdcaae48f10e31f604899 (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.c | 247 |
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 | } |
4575 | EXPORT_SYMBOL(il_txq_mem); | 4575 | EXPORT_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 | |||
4581 | void | ||
4582 | il_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 | |||
4592 | int | ||
4593 | il_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 | } | ||
4614 | EXPORT_SYMBOL(il_alloc_traffic_mem); | ||
4615 | |||
4616 | void | ||
4617 | il_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 | } | ||
4625 | EXPORT_SYMBOL(il_free_traffic_mem); | ||
4626 | |||
4627 | void | ||
4628 | il_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 | } | ||
4652 | EXPORT_SYMBOL(il_dbg_log_tx_data_frame); | ||
4653 | |||
4654 | void | ||
4655 | il_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 | } | ||
4679 | EXPORT_SYMBOL(il_dbg_log_rx_data_frame); | ||
4680 | |||
4681 | const char * | ||
4682 | il_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 | |||
4703 | const char * | ||
4704 | il_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 | |||
4721 | void | ||
4722 | il_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 | */ | ||
4739 | void | ||
4740 | il_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 | } | ||
4821 | EXPORT_SYMBOL(il_update_stats); | ||
4822 | #endif | ||
4823 | |||
4824 | int | 4577 | int |
4825 | il_force_reset(struct il_priv *il, bool external) | 4578 | il_force_reset(struct il_priv *il, bool external) |
4826 | { | 4579 | { |