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