hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/drivers/scsi/fnic/fnic_trace.c
....@@ -138,7 +138,7 @@
138138 * Dump trace buffer entry to memory file
139139 * and increment read index @rd_idx
140140 */
141
- len += snprintf(fnic_dbgfs_prt->buffer + len,
141
+ len += scnprintf(fnic_dbgfs_prt->buffer + len,
142142 (trace_max_pages * PAGE_SIZE * 3) - len,
143143 "%16llu.%09lu %-50s %8x %8x %16llx %16llx "
144144 "%16llx %16llx %16llx\n", (u64)val.tv_sec,
....@@ -180,7 +180,7 @@
180180 * Dump trace buffer entry to memory file
181181 * and increment read index @rd_idx
182182 */
183
- len += snprintf(fnic_dbgfs_prt->buffer + len,
183
+ len += scnprintf(fnic_dbgfs_prt->buffer + len,
184184 (trace_max_pages * PAGE_SIZE * 3) - len,
185185 "%16llu.%09lu %-50s %8x %8x %16llx %16llx "
186186 "%16llx %16llx %16llx\n", (u64)val.tv_sec,
....@@ -220,12 +220,12 @@
220220 struct timespec64 val1, val2;
221221
222222 ktime_get_real_ts64(&val1);
223
- len = snprintf(debug->debug_buffer + len, buf_size - len,
223
+ len = scnprintf(debug->debug_buffer + len, buf_size - len,
224224 "------------------------------------------\n"
225225 "\t\tTime\n"
226226 "------------------------------------------\n");
227227
228
- len += snprintf(debug->debug_buffer + len, buf_size - len,
228
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
229229 "Current time : [%lld:%ld]\n"
230230 "Last stats reset time: [%lld:%09ld]\n"
231231 "Last stats read time: [%lld:%ld]\n"
....@@ -243,11 +243,11 @@
243243
244244 stats->stats_timestamps.last_read_time = val1;
245245
246
- len += snprintf(debug->debug_buffer + len, buf_size - len,
246
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
247247 "------------------------------------------\n"
248248 "\t\tIO Statistics\n"
249249 "------------------------------------------\n");
250
- len += snprintf(debug->debug_buffer + len, buf_size - len,
250
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
251251 "Number of Active IOs: %lld\nMaximum Active IOs: %lld\n"
252252 "Number of IOs: %lld\nNumber of IO Completions: %lld\n"
253253 "Number of IO Failures: %lld\nNumber of IO NOT Found: %lld\n"
....@@ -280,16 +280,16 @@
280280 (u64)atomic64_read(&stats->io_stats.io_btw_10000_to_30000_msec),
281281 (u64)atomic64_read(&stats->io_stats.io_greater_than_30000_msec));
282282
283
- len += snprintf(debug->debug_buffer + len, buf_size - len,
283
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
284284 "\nCurrent Max IO time : %lld\n",
285285 (u64)atomic64_read(&stats->io_stats.current_max_io_time));
286286
287
- len += snprintf(debug->debug_buffer + len, buf_size - len,
287
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
288288 "\n------------------------------------------\n"
289289 "\t\tAbort Statistics\n"
290290 "------------------------------------------\n");
291291
292
- len += snprintf(debug->debug_buffer + len, buf_size - len,
292
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
293293 "Number of Aborts: %lld\n"
294294 "Number of Abort Failures: %lld\n"
295295 "Number of Abort Driver Timeouts: %lld\n"
....@@ -318,12 +318,12 @@
318318 (u64)atomic64_read(&stats->abts_stats.abort_issued_btw_50_to_60_sec),
319319 (u64)atomic64_read(&stats->abts_stats.abort_issued_greater_than_60_sec));
320320
321
- len += snprintf(debug->debug_buffer + len, buf_size - len,
321
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
322322 "\n------------------------------------------\n"
323323 "\t\tTerminate Statistics\n"
324324 "------------------------------------------\n");
325325
326
- len += snprintf(debug->debug_buffer + len, buf_size - len,
326
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
327327 "Number of Terminates: %lld\n"
328328 "Maximum Terminates: %lld\n"
329329 "Number of Terminate Driver Timeouts: %lld\n"
....@@ -337,12 +337,12 @@
337337 (u64)atomic64_read(&stats->term_stats.terminate_io_not_found),
338338 (u64)atomic64_read(&stats->term_stats.terminate_failures));
339339
340
- len += snprintf(debug->debug_buffer + len, buf_size - len,
340
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
341341 "\n------------------------------------------\n"
342342 "\t\tReset Statistics\n"
343343 "------------------------------------------\n");
344344
345
- len += snprintf(debug->debug_buffer + len, buf_size - len,
345
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
346346 "Number of Device Resets: %lld\n"
347347 "Number of Device Reset Failures: %lld\n"
348348 "Number of Device Reset Aborts: %lld\n"
....@@ -368,12 +368,12 @@
368368 &stats->reset_stats.fnic_reset_completions),
369369 (u64)atomic64_read(&stats->reset_stats.fnic_reset_failures));
370370
371
- len += snprintf(debug->debug_buffer + len, buf_size - len,
371
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
372372 "\n------------------------------------------\n"
373373 "\t\tFirmware Statistics\n"
374374 "------------------------------------------\n");
375375
376
- len += snprintf(debug->debug_buffer + len, buf_size - len,
376
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
377377 "Number of Active FW Requests %lld\n"
378378 "Maximum FW Requests: %lld\n"
379379 "Number of FW out of resources: %lld\n"
....@@ -383,12 +383,12 @@
383383 (u64)atomic64_read(&stats->fw_stats.fw_out_of_resources),
384384 (u64)atomic64_read(&stats->fw_stats.io_fw_errs));
385385
386
- len += snprintf(debug->debug_buffer + len, buf_size - len,
386
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
387387 "\n------------------------------------------\n"
388388 "\t\tVlan Discovery Statistics\n"
389389 "------------------------------------------\n");
390390
391
- len += snprintf(debug->debug_buffer + len, buf_size - len,
391
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
392392 "Number of Vlan Discovery Requests Sent %lld\n"
393393 "Vlan Response Received with no FCF VLAN ID: %lld\n"
394394 "No solicitations recvd after vlan set, expiry count: %lld\n"
....@@ -398,7 +398,7 @@
398398 (u64)atomic64_read(&stats->vlan_stats.sol_expiry_count),
399399 (u64)atomic64_read(&stats->vlan_stats.flogi_rejects));
400400
401
- len += snprintf(debug->debug_buffer + len, buf_size - len,
401
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
402402 "\n------------------------------------------\n"
403403 "\t\tOther Important Statistics\n"
404404 "------------------------------------------\n");
....@@ -406,9 +406,12 @@
406406 jiffies_to_timespec64(stats->misc_stats.last_isr_time, &val1);
407407 jiffies_to_timespec64(stats->misc_stats.last_ack_time, &val2);
408408
409
- len += snprintf(debug->debug_buffer + len, buf_size - len,
409
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
410410 "Last ISR time: %llu (%8llu.%09lu)\n"
411411 "Last ACK time: %llu (%8llu.%09lu)\n"
412
+ "Max ISR jiffies: %llu\n"
413
+ "Max ISR time (ms) (0 denotes < 1 ms): %llu\n"
414
+ "Corr. work done: %llu\n"
412415 "Number of ISRs: %lld\n"
413416 "Maximum CQ Entries: %lld\n"
414417 "Number of ACK index out of range: %lld\n"
....@@ -428,6 +431,9 @@
428431 (s64)val1.tv_sec, val1.tv_nsec,
429432 (u64)stats->misc_stats.last_ack_time,
430433 (s64)val2.tv_sec, val2.tv_nsec,
434
+ (u64)atomic64_read(&stats->misc_stats.max_isr_jiffies),
435
+ (u64)atomic64_read(&stats->misc_stats.max_isr_time_ms),
436
+ (u64)atomic64_read(&stats->misc_stats.corr_work_done),
431437 (u64)atomic64_read(&stats->misc_stats.isr_count),
432438 (u64)atomic64_read(&stats->misc_stats.max_cq_entries),
433439 (u64)atomic64_read(&stats->misc_stats.ack_index_out_of_range),
....@@ -445,6 +451,11 @@
445451 (u64)atomic64_read(&stats->misc_stats.queue_fulls),
446452 (u64)atomic64_read(&stats->misc_stats.rport_not_ready),
447453 (u64)atomic64_read(&stats->misc_stats.frame_errors));
454
+
455
+ len += scnprintf(debug->debug_buffer + len, buf_size - len,
456
+ "Firmware reported port speed: %llu\n",
457
+ (u64)atomic64_read(
458
+ &stats->misc_stats.current_port_speed));
448459
449460 return len;
450461
....@@ -468,14 +479,13 @@
468479 fnic_max_trace_entries = (trace_max_pages * PAGE_SIZE)/
469480 FNIC_ENTRY_SIZE_BYTES;
470481
471
- fnic_trace_buf_p = (unsigned long)vmalloc((trace_max_pages * PAGE_SIZE));
482
+ fnic_trace_buf_p = (unsigned long)vzalloc(trace_max_pages * PAGE_SIZE);
472483 if (!fnic_trace_buf_p) {
473484 printk(KERN_ERR PFX "Failed to allocate memory "
474485 "for fnic_trace_buf_p\n");
475486 err = -ENOMEM;
476487 goto err_fnic_trace_buf_init;
477488 }
478
- memset((void *)fnic_trace_buf_p, 0, (trace_max_pages * PAGE_SIZE));
479489
480490 fnic_trace_entries.page_offset =
481491 vmalloc(array_size(fnic_max_trace_entries,
....@@ -504,15 +514,10 @@
504514 fnic_trace_entries.page_offset[i] = fnic_buf_head;
505515 fnic_buf_head += FNIC_ENTRY_SIZE_BYTES;
506516 }
507
- err = fnic_trace_debugfs_init();
508
- if (err < 0) {
509
- pr_err("fnic: Failed to initialize debugfs for tracing\n");
510
- goto err_fnic_trace_debugfs_init;
511
- }
517
+ fnic_trace_debugfs_init();
512518 pr_info("fnic: Successfully Initialized Trace Buffer\n");
513519 return err;
514
-err_fnic_trace_debugfs_init:
515
- fnic_trace_free();
520
+
516521 err_fnic_trace_buf_init:
517522 return err;
518523 }
....@@ -597,16 +602,10 @@
597602 fc_trace_entries.page_offset[i] = fc_trace_buf_head;
598603 fc_trace_buf_head += FC_TRC_SIZE_BYTES;
599604 }
600
- err = fnic_fc_trace_debugfs_init();
601
- if (err < 0) {
602
- pr_err("fnic: Failed to initialize FC_CTLR tracing.\n");
603
- goto err_fnic_fc_ctlr_trace_debugfs_init;
604
- }
605
+ fnic_fc_trace_debugfs_init();
605606 pr_info("fnic: Successfully Initialized FC_CTLR Trace Buffer\n");
606607 return err;
607608
608
-err_fnic_fc_ctlr_trace_debugfs_init:
609
- fnic_fc_trace_free();
610609 err_fnic_fc_ctlr_trace_buf_init:
611610 return err;
612611 }
....@@ -743,7 +742,7 @@
743742 rd_idx = fc_trace_entries.rd_idx;
744743 wr_idx = fc_trace_entries.wr_idx;
745744 if (rdata_flag == 0) {
746
- len += snprintf(fnic_dbgfs_prt->buffer + len,
745
+ len += scnprintf(fnic_dbgfs_prt->buffer + len,
747746 (fnic_fc_trace_max_pages * PAGE_SIZE * 3) - len,
748747 "Time Stamp (UTC)\t\t"
749748 "Host No: F Type: len: FCoE_FRAME:\n");
....@@ -763,11 +762,11 @@
763762 } else {
764763 fc_trace = (char *)tdata;
765764 for (j = 0; j < FC_TRC_SIZE_BYTES; j++) {
766
- len += snprintf(fnic_dbgfs_prt->buffer + len,
765
+ len += scnprintf(fnic_dbgfs_prt->buffer + len,
767766 (fnic_fc_trace_max_pages * PAGE_SIZE * 3)
768767 - len, "%02x", fc_trace[j] & 0xff);
769768 } /* for loop */
770
- len += snprintf(fnic_dbgfs_prt->buffer + len,
769
+ len += scnprintf(fnic_dbgfs_prt->buffer + len,
771770 (fnic_fc_trace_max_pages * PAGE_SIZE * 3) - len,
772771 "\n");
773772 }
....@@ -811,7 +810,7 @@
811810 time64_to_tm(tdata->time_stamp.tv_sec, 0, &tm);
812811
813812 fmt = "%02d:%02d:%04ld %02d:%02d:%02d.%09lu ns%8x %c%8x\t";
814
- len += snprintf(fnic_dbgfs_prt->buffer + len,
813
+ len += scnprintf(fnic_dbgfs_prt->buffer + len,
815814 max_size - len,
816815 fmt,
817816 tm.tm_mon + 1, tm.tm_mday, tm.tm_year + 1900,
....@@ -824,25 +823,25 @@
824823 for (j = 0; j < min_t(u8, tdata->frame_len,
825824 (u8)(FC_TRC_SIZE_BYTES - FC_TRC_HEADER_SIZE)); j++) {
826825 if (tdata->frame_type == FNIC_FC_LE) {
827
- len += snprintf(fnic_dbgfs_prt->buffer + len,
826
+ len += scnprintf(fnic_dbgfs_prt->buffer + len,
828827 max_size - len, "%c", fc_trace[j]);
829828 } else {
830
- len += snprintf(fnic_dbgfs_prt->buffer + len,
829
+ len += scnprintf(fnic_dbgfs_prt->buffer + len,
831830 max_size - len, "%02x", fc_trace[j] & 0xff);
832
- len += snprintf(fnic_dbgfs_prt->buffer + len,
831
+ len += scnprintf(fnic_dbgfs_prt->buffer + len,
833832 max_size - len, " ");
834833 if (j == ethhdr_len ||
835834 j == ethhdr_len + fcoehdr_len ||
836835 j == ethhdr_len + fcoehdr_len + fchdr_len ||
837836 (i > 3 && j%fchdr_len == 0)) {
838
- len += snprintf(fnic_dbgfs_prt->buffer
837
+ len += scnprintf(fnic_dbgfs_prt->buffer
839838 + len, max_size - len,
840839 "\n\t\t\t\t\t\t\t\t");
841840 i++;
842841 }
843842 } /* end of else*/
844843 } /* End of for loop*/
845
- len += snprintf(fnic_dbgfs_prt->buffer + len,
844
+ len += scnprintf(fnic_dbgfs_prt->buffer + len,
846845 max_size - len, "\n");
847846 *orig_len = len;
848847 }