enable swtichdev模式的时候,每个vport会创建一个devlink_rate,并且devlink_rate->priv设置为mlx5_vport。
mlx5_esw_offloads_devlink_port_register
devl_rate_leaf_create
创建devlink rate group时,用户态调用如下:
main
dl_cmd
cmd_port
cmd_port_function
cmd_port_function_rate
cmd_port_fn_rate_add
dl_argv_parse
dl_argv_handle_rate_node
mnlu_gen_socket_cmd_prepare(DEVLINK_CMD_RATE_NEW)
dl_opts_put
} else if (opts->present & DL_OPT_PORT_FN_RATE_NODE_NAME) {
mnl_attr_put_strz(nlh, DEVLINK_ATTR_BUS_NAME, opts->bus_name);
mnl_attr_put_strz(nlh, DEVLINK_ATTR_DEV_NAME, opts->dev_name);
mnl_attr_put_strz(nlh, DEVLINK_ATTR_RATE_NODE_NAME,
opts->rate_node_name);
}
内核态调用如下:
devlink_nl_ops
{
.cmd = DEVLINK_CMD_RATE_NEW,