drivers/net/ethernet/mellanox/mlx5/core/en/health.c

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

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/mellanox/mlx5/core/en/health.c
Extension
.c
Size
6184 bytes
Lines
239
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

if (cmd_err < 0) {
			err = cmd_err;
			goto destroy_cmd;
		}

		mlx5e_health_rsc_fmsg_binary(fmsg, page_address(page), size);
	} while (cmd_err > 0);

destroy_cmd:
	mlx5_rsc_dump_cmd_destroy(cmd);
	devlink_fmsg_binary_pair_nest_end(fmsg);
free_page:
	__free_page(page);
	return err;
}

void mlx5e_health_queue_dump(struct mlx5e_priv *priv, struct devlink_fmsg *fmsg,
			     int queue_idx, char *lbl)
{
	struct mlx5_rsc_key key = {};

	key.rsc = MLX5_SGMT_TYPE_FULL_QPC;
	key.index1 = queue_idx;
	key.size = PAGE_SIZE;
	key.num_of_obj1 = 1;

	devlink_fmsg_obj_nest_start(fmsg);
	mlx5e_health_fmsg_named_obj_nest_start(fmsg, lbl);
	devlink_fmsg_u32_pair_put(fmsg, "index", queue_idx);
	mlx5e_health_rsc_fmsg_dump(priv, &key, fmsg);
	mlx5e_health_fmsg_named_obj_nest_end(fmsg);
	devlink_fmsg_obj_nest_end(fmsg);
}

Annotation

Implementation Notes