drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
Extension
.c
Size
30669 bytes
Lines
1188
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 (ptrn_arg) {
			for (i = 0; i < action->rewrite->num_of_actions; i++) {
				ret = snprintf(buff, MLX5DR_DEBUG_DUMP_BUFF_LENGTH,
					       ",0x%016llx",
					       be64_to_cpu(((__be64 *)rewrite_data)[i]));
				if (ret < 0)
					return ret;

				ret = mlx5dr_dbg_dump_data_print(file, buff, ret);
				if (ret)
					return ret;
			}
		}

		ret = snprintf(buff, MLX5DR_DEBUG_DUMP_BUFF_LENGTH, "\n");
		if (ret < 0)
			return ret;
		ret = mlx5dr_dbg_dump_data_print(file, buff, ret);
		if (ret)
			return ret;
		break;
	}
	case DR_ACTION_TYP_VPORT:
		ret = snprintf(buff, MLX5DR_DEBUG_DUMP_BUFF_LENGTH,
			       "%d,0x%llx,0x%llx,0x%x\n",
			       DR_DUMP_REC_TYPE_ACTION_VPORT, action_id, rule_id,
			       action->vport->caps->num);
		if (ret < 0)
			return ret;

		ret = mlx5dr_dbg_dump_data_print(file, buff, ret);
		if (ret)
			return ret;
		break;
	case DR_ACTION_TYP_TNL_L2_TO_L2:
		ret = snprintf(buff, MLX5DR_DEBUG_DUMP_BUFF_LENGTH,
			       "%d,0x%llx,0x%llx\n",
			       DR_DUMP_REC_TYPE_ACTION_DECAP_L2, action_id,
			       rule_id);
		if (ret < 0)
			return ret;

		ret = mlx5dr_dbg_dump_data_print(file, buff, ret);
		if (ret)
			return ret;
		break;
	case DR_ACTION_TYP_TNL_L3_TO_L2:
		ret = snprintf(buff, MLX5DR_DEBUG_DUMP_BUFF_LENGTH,
			       "%d,0x%llx,0x%llx,0x%x\n",
			       DR_DUMP_REC_TYPE_ACTION_DECAP_L3, action_id,
			       rule_id,
			       (action->rewrite->ptrn && action->rewrite->arg) ?
			       mlx5dr_arg_get_obj_id(action->rewrite->arg) :
			       action->rewrite->index);
		if (ret < 0)
			return ret;

		ret = mlx5dr_dbg_dump_data_print(file, buff, ret);
		if (ret)
			return ret;
		break;
	case DR_ACTION_TYP_L2_TO_TNL_L2:
		ret = snprintf(buff, MLX5DR_DEBUG_DUMP_BUFF_LENGTH,
			       "%d,0x%llx,0x%llx,0x%x\n",
			       DR_DUMP_REC_TYPE_ACTION_ENCAP_L2, action_id,
			       rule_id, action->reformat->id);
		if (ret < 0)
			return ret;

		ret = mlx5dr_dbg_dump_data_print(file, buff, ret);
		if (ret)
			return ret;
		break;
	case DR_ACTION_TYP_L2_TO_TNL_L3:
		ret = snprintf(buff, MLX5DR_DEBUG_DUMP_BUFF_LENGTH,
			       "%d,0x%llx,0x%llx,0x%x\n",
			       DR_DUMP_REC_TYPE_ACTION_ENCAP_L3, action_id,
			       rule_id, action->reformat->id);
		if (ret < 0)
			return ret;

		ret = mlx5dr_dbg_dump_data_print(file, buff, ret);
		if (ret)
			return ret;
		break;
	case DR_ACTION_TYP_POP_VLAN:
		ret = snprintf(buff, MLX5DR_DEBUG_DUMP_BUFF_LENGTH,
			       "%d,0x%llx,0x%llx\n",
			       DR_DUMP_REC_TYPE_ACTION_POP_VLAN, action_id,
			       rule_id);

Annotation

Implementation Notes