@@ -93,58 +93,14 @@ void ath11k_debugfs_add_dbring_entry(struct ath11k *ar,
9393 spin_unlock_bh (& dbr_data -> lock );
9494}
9595
96- static void ath11k_debugfs_fw_stats_reset (struct ath11k * ar )
97- {
98- spin_lock_bh (& ar -> data_lock );
99- ath11k_fw_stats_pdevs_free (& ar -> fw_stats .pdevs );
100- ath11k_fw_stats_vdevs_free (& ar -> fw_stats .vdevs );
101- ar -> fw_stats .num_vdev_recvd = 0 ;
102- ar -> fw_stats .num_bcn_recvd = 0 ;
103- spin_unlock_bh (& ar -> data_lock );
104- }
105-
10696void ath11k_debugfs_fw_stats_process (struct ath11k * ar , struct ath11k_fw_stats * stats )
10797{
10898 struct ath11k_base * ab = ar -> ab ;
109- struct ath11k_pdev * pdev ;
11099 bool is_end = true;
111- size_t total_vdevs_started = 0 ;
112- int i ;
113-
114- /* WMI_REQUEST_PDEV_STAT request has been already processed */
115-
116- if (stats -> stats_id == WMI_REQUEST_RSSI_PER_CHAIN_STAT ) {
117- complete (& ar -> fw_stats_done );
118- return ;
119- }
120-
121- if (stats -> stats_id == WMI_REQUEST_VDEV_STAT ) {
122- if (list_empty (& stats -> vdevs )) {
123- ath11k_warn (ab , "empty vdev stats" );
124- return ;
125- }
126- /* FW sends all the active VDEV stats irrespective of PDEV,
127- * hence limit until the count of all VDEVs started
128- */
129- for (i = 0 ; i < ab -> num_radios ; i ++ ) {
130- pdev = rcu_dereference (ab -> pdevs_active [i ]);
131- if (pdev && pdev -> ar )
132- total_vdevs_started += ar -> num_started_vdevs ;
133- }
134-
135- if (total_vdevs_started )
136- is_end = ((++ ar -> fw_stats .num_vdev_recvd ) ==
137- total_vdevs_started );
138-
139- list_splice_tail_init (& stats -> vdevs ,
140- & ar -> fw_stats .vdevs );
141-
142- if (is_end )
143- complete (& ar -> fw_stats_done );
144-
145- return ;
146- }
147100
101+ /* WMI_REQUEST_PDEV_STAT, WMI_REQUEST_RSSI_PER_CHAIN_STAT and
102+ * WMI_REQUEST_VDEV_STAT requests have been already processed.
103+ */
148104 if (stats -> stats_id == WMI_REQUEST_BCN_STAT ) {
149105 if (list_empty (& stats -> bcn )) {
150106 ath11k_warn (ab , "empty bcn stats" );
@@ -165,76 +121,6 @@ void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats *
165121 }
166122}
167123
168- static int ath11k_debugfs_fw_stats_request (struct ath11k * ar ,
169- struct stats_request_params * req_param )
170- {
171- struct ath11k_base * ab = ar -> ab ;
172- unsigned long time_left ;
173- int ret ;
174-
175- lockdep_assert_held (& ar -> conf_mutex );
176-
177- ath11k_debugfs_fw_stats_reset (ar );
178-
179- reinit_completion (& ar -> fw_stats_complete );
180- reinit_completion (& ar -> fw_stats_done );
181-
182- ret = ath11k_wmi_send_stats_request_cmd (ar , req_param );
183-
184- if (ret ) {
185- ath11k_warn (ab , "could not request fw stats (%d)\n" ,
186- ret );
187- return ret ;
188- }
189-
190- time_left = wait_for_completion_timeout (& ar -> fw_stats_complete , 1 * HZ );
191- if (!time_left )
192- return - ETIMEDOUT ;
193-
194- /* FW stats can get split when exceeding the stats data buffer limit.
195- * In that case, since there is no end marking for the back-to-back
196- * received 'update stats' event, we keep a 3 seconds timeout in case,
197- * fw_stats_done is not marked yet
198- */
199- time_left = wait_for_completion_timeout (& ar -> fw_stats_done , 3 * HZ );
200- if (!time_left )
201- return - ETIMEDOUT ;
202-
203- return 0 ;
204- }
205-
206- int ath11k_debugfs_get_fw_stats (struct ath11k * ar , u32 pdev_id ,
207- u32 vdev_id , u32 stats_id )
208- {
209- struct ath11k_base * ab = ar -> ab ;
210- struct stats_request_params req_param ;
211- int ret ;
212-
213- mutex_lock (& ar -> conf_mutex );
214-
215- if (ar -> state != ATH11K_STATE_ON ) {
216- ret = - ENETDOWN ;
217- goto err_unlock ;
218- }
219-
220- req_param .pdev_id = pdev_id ;
221- req_param .vdev_id = vdev_id ;
222- req_param .stats_id = stats_id ;
223-
224- ret = ath11k_debugfs_fw_stats_request (ar , & req_param );
225- if (ret )
226- ath11k_warn (ab , "failed to request fw stats: %d\n" , ret );
227-
228- ath11k_dbg (ab , ATH11K_DBG_WMI ,
229- "debug get fw stat pdev id %d vdev id %d stats id 0x%x\n" ,
230- pdev_id , vdev_id , stats_id );
231-
232- err_unlock :
233- mutex_unlock (& ar -> conf_mutex );
234-
235- return ret ;
236- }
237-
238124static int ath11k_open_pdev_stats (struct inode * inode , struct file * file )
239125{
240126 struct ath11k * ar = inode -> i_private ;
@@ -260,7 +146,7 @@ static int ath11k_open_pdev_stats(struct inode *inode, struct file *file)
260146 req_param .vdev_id = 0 ;
261147 req_param .stats_id = WMI_REQUEST_PDEV_STAT ;
262148
263- ret = ath11k_debugfs_fw_stats_request (ar , & req_param );
149+ ret = ath11k_mac_fw_stats_request (ar , & req_param );
264150 if (ret ) {
265151 ath11k_warn (ab , "failed to request fw pdev stats: %d\n" , ret );
266152 goto err_free ;
@@ -331,7 +217,7 @@ static int ath11k_open_vdev_stats(struct inode *inode, struct file *file)
331217 req_param .vdev_id = 0 ;
332218 req_param .stats_id = WMI_REQUEST_VDEV_STAT ;
333219
334- ret = ath11k_debugfs_fw_stats_request (ar , & req_param );
220+ ret = ath11k_mac_fw_stats_request (ar , & req_param );
335221 if (ret ) {
336222 ath11k_warn (ar -> ab , "failed to request fw vdev stats: %d\n" , ret );
337223 goto err_free ;
@@ -407,7 +293,7 @@ static int ath11k_open_bcn_stats(struct inode *inode, struct file *file)
407293 continue ;
408294
409295 req_param .vdev_id = arvif -> vdev_id ;
410- ret = ath11k_debugfs_fw_stats_request (ar , & req_param );
296+ ret = ath11k_mac_fw_stats_request (ar , & req_param );
411297 if (ret ) {
412298 ath11k_warn (ar -> ab , "failed to request fw bcn stats: %d\n" , ret );
413299 goto err_free ;
0 commit comments