| 1 | |
| 2 | |
| 3 | * Copyright (C) 2017, Microsoft Corporation.
|
| 4 | * Copyright (c) 2025, Stefan Metzmacher
|
| 5 |
|
| 6 |
|
| 7 | #include "internal.h"
|
| 8 | #include <linux/seq_file.h>
|
| 9 |
|
| 10 | void smbdirect_connection_legacy_debug_proc_show(struct smbdirect_socket *sc,
|
| 11 | unsigned int rdma_readwrite_threshold,
|
| 12 | struct seq_file *m)
|
| 13 | {
|
| 14 | const struct smbdirect_socket_parameters *sp;
|
| 15 |
|
| 16 | if (!sc)
|
| 17 | return;
|
| 18 | sp = &sc->parameters;
|
| 19 |
|
| 20 | seq_puts(m, "\n");
|
| 21 | seq_printf(m, "SMBDirect protocol version: 0x%x ",
|
| 22 | SMBDIRECT_V1);
|
| 23 | seq_printf(m, "transport status: %s (%u)",
|
| 24 | smbdirect_socket_status_string(sc->status),
|
| 25 | sc->status);
|
| 26 |
|
| 27 | seq_puts(m, "\n");
|
| 28 | seq_printf(m, "Conn receive_credit_max: %u ",
|
| 29 | sp->recv_credit_max);
|
| 30 | seq_printf(m, "send_credit_target: %u max_send_size: %u",
|
| 31 | sp->send_credit_target,
|
| 32 | sp->max_send_size);
|
| 33 |
|
| 34 | seq_puts(m, "\n");
|
| 35 | seq_printf(m, "Conn max_fragmented_recv_size: %u ",
|
| 36 | sp->max_fragmented_recv_size);
|
| 37 | seq_printf(m, "max_fragmented_send_size: %u max_receive_size:%u",
|
| 38 | sp->max_fragmented_send_size,
|
| 39 | sp->max_recv_size);
|
| 40 |
|
| 41 | seq_puts(m, "\n");
|
| 42 | seq_printf(m, "Conn keep_alive_interval: %u ",
|
| 43 | sp->keepalive_interval_msec / 1000);
|
| 44 | seq_printf(m, "max_readwrite_size: %u rdma_readwrite_threshold: %u",
|
| 45 | sp->max_read_write_size,
|
| 46 | rdma_readwrite_threshold);
|
| 47 |
|
| 48 | seq_puts(m, "\n");
|
| 49 | seq_printf(m, "Debug count_get_receive_buffer: %llu ",
|
| 50 | sc->statistics.get_receive_buffer);
|
| 51 | seq_printf(m, "count_put_receive_buffer: %llu count_send_empty: %llu",
|
| 52 | sc->statistics.put_receive_buffer,
|
| 53 | sc->statistics.send_empty);
|
| 54 |
|
| 55 | seq_puts(m, "\n");
|
| 56 | seq_printf(m, "Read Queue count_enqueue_reassembly_queue: %llu ",
|
| 57 | sc->statistics.enqueue_reassembly_queue);
|
| 58 | seq_printf(m, "count_dequeue_reassembly_queue: %llu ",
|
| 59 | sc->statistics.dequeue_reassembly_queue);
|
| 60 | seq_printf(m, "reassembly_data_length: %u ",
|
| 61 | sc->recv_io.reassembly.data_length);
|
| 62 | seq_printf(m, "reassembly_queue_length: %u",
|
| 63 | sc->recv_io.reassembly.queue_length);
|
| 64 |
|
| 65 | seq_puts(m, "\n");
|
| 66 | seq_printf(m, "Current Credits send_credits: %u ",
|
| 67 | atomic_read(&sc->send_io.credits.count));
|
| 68 | seq_printf(m, "receive_credits: %u receive_credit_target: %u",
|
| 69 | atomic_read(&sc->recv_io.credits.count),
|
| 70 | sc->recv_io.credits.target);
|
| 71 |
|
| 72 | seq_puts(m, "\n");
|
| 73 | seq_printf(m, "Pending send_pending: %u ",
|
| 74 | atomic_read(&sc->send_io.pending.count));
|
| 75 |
|
| 76 | seq_puts(m, "\n");
|
| 77 | seq_printf(m, "MR responder_resources: %u ",
|
| 78 | sp->responder_resources);
|
| 79 | seq_printf(m, "max_frmr_depth: %u mr_type: 0x%x",
|
| 80 | sp->max_frmr_depth,
|
| 81 | sc->mr_io.type);
|
| 82 |
|
| 83 | seq_puts(m, "\n");
|
| 84 | seq_printf(m, "MR mr_ready_count: %u mr_used_count: %u",
|
| 85 | atomic_read(&sc->mr_io.ready.count),
|
| 86 | atomic_read(&sc->mr_io.used.count));
|
| 87 | }
|
| 88 | EXPORT_SYMBOL_GPL(smbdirect_connection_legacy_debug_proc_show);
|