drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_stats.c

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_stats.c

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_stats.c
Extension
.c
Size
2792 bytes
Lines
89
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#include <linux/ethtool.h>
#include <net/sock.h>

#include "en.h"
#include "fpga/sdk.h"
#include "en_accel/ktls.h"

static const struct counter_desc mlx5e_ktls_sw_stats_desc[] = {
	{ MLX5E_DECLARE_STAT(struct mlx5e_tls_sw_stats, tx_tls_ctx) },
	{ MLX5E_DECLARE_STAT(struct mlx5e_tls_sw_stats, tx_tls_del) },
	{ MLX5E_DECLARE_STAT(struct mlx5e_tls_sw_stats, tx_tls_pool_alloc) },
	{ MLX5E_DECLARE_STAT(struct mlx5e_tls_sw_stats, tx_tls_pool_free) },
	{ MLX5E_DECLARE_STAT(struct mlx5e_tls_sw_stats, rx_tls_ctx) },
	{ MLX5E_DECLARE_STAT(struct mlx5e_tls_sw_stats, rx_tls_del) },
};

#define MLX5E_READ_CTR_ATOMIC64(ptr, dsc, i) \
	atomic64_read((atomic64_t *)((char *)(ptr) + (dsc)[i].offset))

int mlx5e_ktls_get_count(struct mlx5e_priv *priv)
{
	if (!priv->tls)
		return 0;

	return ARRAY_SIZE(mlx5e_ktls_sw_stats_desc);
}

void mlx5e_ktls_get_strings(struct mlx5e_priv *priv, u8 **data)
{
	unsigned int i, n;

	if (!priv->tls)
		return;

	n = mlx5e_ktls_get_count(priv);

	for (i = 0; i < n; i++)
		ethtool_puts(data, mlx5e_ktls_sw_stats_desc[i].format);
}

void mlx5e_ktls_get_stats(struct mlx5e_priv *priv, u64 **data)
{
	unsigned int i, n;

	if (!priv->tls)
		return;

	n = mlx5e_ktls_get_count(priv);

	for (i = 0; i < n; i++)
		mlx5e_ethtool_put_stat(
			data,
			MLX5E_READ_CTR_ATOMIC64(&priv->tls->sw_stats,
						mlx5e_ktls_sw_stats_desc, i));
}

Annotation

Implementation Notes