1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 /* Copyright (C) 2019 Netronome Systems, Inc. */
4 #include <linux/proc_fs.h>
5 #include <linux/seq_file.h>
12 static const struct snmp_mib tls_mib_list
[] = {
13 SNMP_MIB_ITEM("TlsCurrTxSw", LINUX_MIB_TLSCURRTXSW
),
14 SNMP_MIB_ITEM("TlsCurrRxSw", LINUX_MIB_TLSCURRRXSW
),
15 SNMP_MIB_ITEM("TlsCurrTxDevice", LINUX_MIB_TLSCURRTXDEVICE
),
16 SNMP_MIB_ITEM("TlsCurrRxDevice", LINUX_MIB_TLSCURRRXDEVICE
),
17 SNMP_MIB_ITEM("TlsTxSw", LINUX_MIB_TLSTXSW
),
18 SNMP_MIB_ITEM("TlsRxSw", LINUX_MIB_TLSRXSW
),
19 SNMP_MIB_ITEM("TlsTxDevice", LINUX_MIB_TLSTXDEVICE
),
20 SNMP_MIB_ITEM("TlsRxDevice", LINUX_MIB_TLSRXDEVICE
),
21 SNMP_MIB_ITEM("TlsDecryptError", LINUX_MIB_TLSDECRYPTERROR
),
22 SNMP_MIB_ITEM("TlsRxDeviceResync", LINUX_MIB_TLSRXDEVICERESYNC
),
23 SNMP_MIB_ITEM("TlsDecryptRetry", LINUX_MIB_TLSDECRYPTRETRY
),
24 SNMP_MIB_ITEM("TlsRxNoPadViolation", LINUX_MIB_TLSRXNOPADVIOL
),
28 static int tls_statistics_seq_show(struct seq_file
*seq
, void *v
)
30 unsigned long buf
[LINUX_MIB_TLSMAX
] = {};
31 struct net
*net
= seq
->private;
34 snmp_get_cpu_field_batch(buf
, tls_mib_list
, net
->mib
.tls_statistics
);
35 for (i
= 0; tls_mib_list
[i
].name
; i
++)
36 seq_printf(seq
, "%-32s\t%lu\n", tls_mib_list
[i
].name
, buf
[i
]);
42 int __net_init
tls_proc_init(struct net
*net
)
45 if (!proc_create_net_single("tls_stat", 0444, net
->proc_net
,
46 tls_statistics_seq_show
, NULL
))
48 #endif /* CONFIG_PROC_FS */
53 void __net_exit
tls_proc_fini(struct net
*net
)
55 remove_proc_entry("tls_stat", net
->proc_net
);