aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/mvm
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2013-06-30 00:43:28 -0400
committerJohannes Berg <johannes.berg@intel.com>2013-10-02 12:00:43 -0400
commit2de13caebcb7ee78a4ceadb22617ec4bc1b3c776 (patch)
tree810193cd86707cfa604c6a3a2989d773d5a688fc /drivers/net/wireless/iwlwifi/mvm
parent39149911ba28d17b4657a9a65b3dc8ba54145ca0 (diff)
iwlwifi: mvm: BT Coex - adapt debugfs to new API
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm')
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/bt-coex.c11
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/debugfs.c50
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mvm.h8
3 files changed, 55 insertions, 14 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/bt-coex.c b/drivers/net/wireless/iwlwifi/mvm/bt-coex.c
index 908a8a9ca564..a17e2cc2bedb 100644
--- a/drivers/net/wireless/iwlwifi/mvm/bt-coex.c
+++ b/drivers/net/wireless/iwlwifi/mvm/bt-coex.c
@@ -112,20 +112,13 @@ int iwl_send_bt_prio_tbl(struct iwl_mvm *mvm)
112 &iwl_bt_prio_tbl); 112 &iwl_bt_prio_tbl);
113} 113}
114 114
115enum iwl_bt_kill_msk { 115const u32 iwl_bt_ack_kill_msk[BT_KILL_MSK_MAX] = {
116 BT_KILL_MSK_DEFAULT,
117 BT_KILL_MSK_SCO_HID_A2DP,
118 BT_KILL_MSK_REDUCED_TXPOW,
119 BT_KILL_MSK_MAX,
120};
121
122static const u32 iwl_bt_ack_kill_msk[BT_KILL_MSK_MAX] = {
123 [BT_KILL_MSK_DEFAULT] = 0xffff0000, 116 [BT_KILL_MSK_DEFAULT] = 0xffff0000,
124 [BT_KILL_MSK_SCO_HID_A2DP] = 0xffffffff, 117 [BT_KILL_MSK_SCO_HID_A2DP] = 0xffffffff,
125 [BT_KILL_MSK_REDUCED_TXPOW] = 0, 118 [BT_KILL_MSK_REDUCED_TXPOW] = 0,
126}; 119};
127 120
128static const u32 iwl_bt_cts_kill_msk[BT_KILL_MSK_MAX] = { 121const u32 iwl_bt_cts_kill_msk[BT_KILL_MSK_MAX] = {
129 [BT_KILL_MSK_DEFAULT] = 0xffff0000, 122 [BT_KILL_MSK_DEFAULT] = 0xffff0000,
130 [BT_KILL_MSK_SCO_HID_A2DP] = 0xffffffff, 123 [BT_KILL_MSK_SCO_HID_A2DP] = 0xffffffff,
131 [BT_KILL_MSK_REDUCED_TXPOW] = 0, 124 [BT_KILL_MSK_REDUCED_TXPOW] = 0,
diff --git a/drivers/net/wireless/iwlwifi/mvm/debugfs.c b/drivers/net/wireless/iwlwifi/mvm/debugfs.c
index 26c53b37007e..e943ee125d23 100644
--- a/drivers/net/wireless/iwlwifi/mvm/debugfs.c
+++ b/drivers/net/wireless/iwlwifi/mvm/debugfs.c
@@ -584,15 +584,21 @@ static ssize_t iwl_dbgfs_bt_notif_read(struct file *file, char __user *user_buf,
584 BT_MBOX_PRINT(3, UPDATE_REQUEST, true); 584 BT_MBOX_PRINT(3, UPDATE_REQUEST, true);
585 585
586 pos += scnprintf(buf+pos, bufsz-pos, "bt_status = %d\n", 586 pos += scnprintf(buf+pos, bufsz-pos, "bt_status = %d\n",
587 notif->bt_status); 587 notif->bt_status);
588 pos += scnprintf(buf+pos, bufsz-pos, "bt_open_conn = %d\n", 588 pos += scnprintf(buf+pos, bufsz-pos, "bt_open_conn = %d\n",
589 notif->bt_open_conn); 589 notif->bt_open_conn);
590 pos += scnprintf(buf+pos, bufsz-pos, "bt_traffic_load = %d\n", 590 pos += scnprintf(buf+pos, bufsz-pos, "bt_traffic_load = %d\n",
591 notif->bt_traffic_load); 591 notif->bt_traffic_load);
592 pos += scnprintf(buf+pos, bufsz-pos, "bt_agg_traffic_load = %d\n", 592 pos += scnprintf(buf+pos, bufsz-pos, "bt_agg_traffic_load = %d\n",
593 notif->bt_agg_traffic_load); 593 notif->bt_agg_traffic_load);
594 pos += scnprintf(buf+pos, bufsz-pos, "bt_ci_compliance = %d\n", 594 pos += scnprintf(buf+pos, bufsz-pos, "bt_ci_compliance = %d\n",
595 notif->bt_ci_compliance); 595 notif->bt_ci_compliance);
596 pos += scnprintf(buf+pos, bufsz-pos, "primary_ch_lut = %d\n",
597 le32_to_cpu(notif->primary_ch_lut));
598 pos += scnprintf(buf+pos, bufsz-pos, "secondary_ch_lut = %d\n",
599 le32_to_cpu(notif->secondary_ch_lut));
600 pos += scnprintf(buf+pos, bufsz-pos, "bt_activity_grading = %d\n",
601 le32_to_cpu(notif->bt_activity_grading));
596 602
597 mutex_unlock(&mvm->mutex); 603 mutex_unlock(&mvm->mutex);
598 604
@@ -603,6 +609,38 @@ static ssize_t iwl_dbgfs_bt_notif_read(struct file *file, char __user *user_buf,
603} 609}
604#undef BT_MBOX_PRINT 610#undef BT_MBOX_PRINT
605 611
612static ssize_t iwl_dbgfs_bt_cmd_read(struct file *file, char __user *user_buf,
613 size_t count, loff_t *ppos)
614{
615 struct iwl_mvm *mvm = file->private_data;
616 struct iwl_bt_coex_ci_cmd *cmd = &mvm->last_bt_ci_cmd;
617 char buf[256];
618 int bufsz = sizeof(buf);
619 int pos = 0;
620
621 mutex_lock(&mvm->mutex);
622
623 pos += scnprintf(buf+pos, bufsz-pos, "Channel inhibition CMD\n");
624 pos += scnprintf(buf+pos, bufsz-pos,
625 "\tPrimary Channel Bitmap 0x%016llx Fat: %d\n",
626 le64_to_cpu(cmd->bt_primary_ci),
627 !!cmd->co_run_bw_primary);
628 pos += scnprintf(buf+pos, bufsz-pos,
629 "\tSecondary Channel Bitmap 0x%016llx Fat: %d\n",
630 le64_to_cpu(cmd->bt_secondary_ci),
631 !!cmd->co_run_bw_secondary);
632
633 pos += scnprintf(buf+pos, bufsz-pos, "BT Configuration CMD\n");
634 pos += scnprintf(buf+pos, bufsz-pos, "\tACK Kill Mask 0x%08x\n",
635 iwl_bt_ack_kill_msk[mvm->bt_kill_msk]);
636 pos += scnprintf(buf+pos, bufsz-pos, "\tCTS Kill Mask 0x%08x\n",
637 iwl_bt_cts_kill_msk[mvm->bt_kill_msk]);
638
639 mutex_unlock(&mvm->mutex);
640
641 return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
642}
643
606#define PRINT_STATS_LE32(_str, _val) \ 644#define PRINT_STATS_LE32(_str, _val) \
607 pos += scnprintf(buf + pos, bufsz - pos, \ 645 pos += scnprintf(buf + pos, bufsz - pos, \
608 fmt_table, _str, \ 646 fmt_table, _str, \
@@ -1120,6 +1158,7 @@ MVM_DEBUGFS_WRITE_FILE_OPS(sta_drain);
1120MVM_DEBUGFS_READ_WRITE_FILE_OPS(sram); 1158MVM_DEBUGFS_READ_WRITE_FILE_OPS(sram);
1121MVM_DEBUGFS_READ_FILE_OPS(stations); 1159MVM_DEBUGFS_READ_FILE_OPS(stations);
1122MVM_DEBUGFS_READ_FILE_OPS(bt_notif); 1160MVM_DEBUGFS_READ_FILE_OPS(bt_notif);
1161MVM_DEBUGFS_READ_FILE_OPS(bt_cmd);
1123MVM_DEBUGFS_WRITE_FILE_OPS(power_down_allow); 1162MVM_DEBUGFS_WRITE_FILE_OPS(power_down_allow);
1124MVM_DEBUGFS_WRITE_FILE_OPS(power_down_d3_allow); 1163MVM_DEBUGFS_WRITE_FILE_OPS(power_down_d3_allow);
1125MVM_DEBUGFS_READ_FILE_OPS(fw_rx_stats); 1164MVM_DEBUGFS_READ_FILE_OPS(fw_rx_stats);
@@ -1146,6 +1185,7 @@ int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir)
1146 MVM_DEBUGFS_ADD_FILE(sram, mvm->debugfs_dir, S_IWUSR | S_IRUSR); 1185 MVM_DEBUGFS_ADD_FILE(sram, mvm->debugfs_dir, S_IWUSR | S_IRUSR);
1147 MVM_DEBUGFS_ADD_FILE(stations, dbgfs_dir, S_IRUSR); 1186 MVM_DEBUGFS_ADD_FILE(stations, dbgfs_dir, S_IRUSR);
1148 MVM_DEBUGFS_ADD_FILE(bt_notif, dbgfs_dir, S_IRUSR); 1187 MVM_DEBUGFS_ADD_FILE(bt_notif, dbgfs_dir, S_IRUSR);
1188 MVM_DEBUGFS_ADD_FILE(bt_cmd, dbgfs_dir, S_IRUSR);
1149 MVM_DEBUGFS_ADD_FILE(power_down_allow, mvm->debugfs_dir, S_IWUSR); 1189 MVM_DEBUGFS_ADD_FILE(power_down_allow, mvm->debugfs_dir, S_IWUSR);
1150 MVM_DEBUGFS_ADD_FILE(power_down_d3_allow, mvm->debugfs_dir, S_IWUSR); 1190 MVM_DEBUGFS_ADD_FILE(power_down_d3_allow, mvm->debugfs_dir, S_IWUSR);
1151 MVM_DEBUGFS_ADD_FILE(fw_rx_stats, mvm->debugfs_dir, S_IRUSR); 1191 MVM_DEBUGFS_ADD_FILE(fw_rx_stats, mvm->debugfs_dir, S_IRUSR);
diff --git a/drivers/net/wireless/iwlwifi/mvm/mvm.h b/drivers/net/wireless/iwlwifi/mvm/mvm.h
index 2d65fe2474e9..33dbc7cefeba 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/iwlwifi/mvm/mvm.h
@@ -791,6 +791,14 @@ int iwl_mvm_rx_bt_coex_notif(struct iwl_mvm *mvm,
791void iwl_mvm_bt_rssi_event(struct iwl_mvm *mvm, struct ieee80211_vif *vif, 791void iwl_mvm_bt_rssi_event(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
792 enum ieee80211_rssi_event rssi_event); 792 enum ieee80211_rssi_event rssi_event);
793void iwl_mvm_bt_coex_vif_change(struct iwl_mvm *mvm, struct ieee80211_vif *vif); 793void iwl_mvm_bt_coex_vif_change(struct iwl_mvm *mvm, struct ieee80211_vif *vif);
794enum iwl_bt_kill_msk {
795 BT_KILL_MSK_DEFAULT,
796 BT_KILL_MSK_SCO_HID_A2DP,
797 BT_KILL_MSK_REDUCED_TXPOW,
798 BT_KILL_MSK_MAX,
799};
800extern const u32 iwl_bt_ack_kill_msk[BT_KILL_MSK_MAX];
801extern const u32 iwl_bt_cts_kill_msk[BT_KILL_MSK_MAX];
794 802
795/* beacon filtering */ 803/* beacon filtering */
796#ifdef CONFIG_IWLWIFI_DEBUGFS 804#ifdef CONFIG_IWLWIFI_DEBUGFS