src/dpdk/drivers/common/mlx5/linux/mlx5_common_os.c
void
mlx5_translate_port_name(const char *port_name_in,
			 struct mlx5_switch_info *port_info_out)
{
	char pf_c1, pf_c2, vf_c1, vf_c2, eol;
	char *end;
	int sc_items;

	/*
	 * Check for port-name as a string of the form pf0vf0
	 * (support kernel ver >= 5.0 or OFED ver >= 4.6).
	 */
	sc_items = sscanf(port_name_in, "%c%c%d%c%c%d%c",
			  &pf_c1, &pf_c2, &port_info_out->pf_num,
			  &vf_c1, &vf_c2, &port_info_out->port_name, &eol);
	if (sc_items == 6 &&
	    pf_c1 == 'p' && pf_c2 == 'f' &&
	    vf_c1 == 'v' && vf_c2 == 'f') {
		port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_PFVF;
		return;
	}
	/*
	 * Check for port-name as a string of the form p0
	 * (support kernel ver >= 5.0, or OFED ver >= 4.6).
	 */
	sc_items = sscanf(port_name_in, "%c%d%c",
			  &pf_c1, &port_info_out->port_name, &eol);
	if (sc_items == 2 && pf_c1 == 'p') {
		port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_UPLINK;
		return;
	}
	/*
	 * Check for port-name as a string of the form pf0
	 * (support kernel ver >= 5.7 for HPF representor on BF).
	 */
	sc_items = sscanf(port_name_in, "%c%c%d%c",
			  &pf_c1, &pf_c2, &port_info_out->pf_num, &eol);
	if (sc_items == 3 && pf_c1 == 'p' && pf_c2 == 'f') {
		port_info_out->port_name = -1;
		port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_PFHPF;
		return;
	}
	/* Check for port-name as a number (support kernel ver < 5.0 */
	errno = 0;
	port_info_out->port_name = strtol(port_name_in, &end, 0);
	if (!errno &&
	    (size_t)(end - port_name_in) == strlen(port_name_in)) {
		port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_LEGACY;
		return;
	}
	port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_UNKNOWN;
}
/**
 * Extract port name, as a number, from sysfs or netlink information.
 *
 * @param[in] port_name_in
 *   String representing the port name.
 * @param[out] port_info_out
 *   Port information, including port name as a number and port name
 *   type if recognized
 *
 * @return
 *   port_name field set according to recognized name format.
 */
Extract port name, as a number, from sysfs or netlink information.
@param[in] port_name_in
String representing the port name.
@param[out] port_info_out
Port information, including port name as a number and port name
type if recognized

@return
port_name field set according to recognized name format.
Extract port name as a number from sysfs or netlink information . @param [ in ] port_name_in String representing the port name . @param [ out ] port_info_out Port information including port name as a number and port name type if recognized @return port_name field set according to recognized name format .
void
mlx5_translate_port_name(const char *port_name_in,
			 struct mlx5_switch_info *port_info_out)
{
	char pf_c1, pf_c2, vf_c1, vf_c2, eol;
	char *end;
	int sc_items;
	sc_items = sscanf(port_name_in, "%c%c%d%c%c%d%c",
			  &pf_c1, &pf_c2, &port_info_out->pf_num,
			  &vf_c1, &vf_c2, &port_info_out->port_name, &eol);
	if (sc_items == 6 &&
	    pf_c1 == 'p' && pf_c2 == 'f' &&
	    vf_c1 == 'v' && vf_c2 == 'f') {
		port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_PFVF;
		return;
	}
	sc_items = sscanf(port_name_in, "%c%d%c",
			  &pf_c1, &port_info_out->port_name, &eol);
	if (sc_items == 2 && pf_c1 == 'p') {
		port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_UPLINK;
		return;
	}
	sc_items = sscanf(port_name_in, "%c%c%d%c",
			  &pf_c1, &pf_c2, &port_info_out->pf_num, &eol);
	if (sc_items == 3 && pf_c1 == 'p' && pf_c2 == 'f') {
		port_info_out->port_name = -1;
		port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_PFHPF;
		return;
	}
	errno = 0;
	port_info_out->port_name = strtol(port_name_in, &end, 0);
	if (!errno &&
	    (size_t)(end - port_name_in) == strlen(port_name_in)) {
		port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_LEGACY;
		return;
	}
	port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_UNKNOWN;
}
void mlx5_translate_port_name ( const char * port_name_in , struct mlx5_switch_info * port_info_out ) { char pf_c1 , pf_c2 , vf_c1 , vf_c2 , eol ; char * end ; int sc_items ; sc_items = sscanf ( port_name_in , " " , & pf_c1 , & pf_c2 , & port_info_out -> pf_num , & vf_c1 , & vf_c2 , & port_info_out -> port_name , & eol ) ; if ( sc_items == 6 && pf_c1 == ' ' && pf_c2 == ' ' && vf_c1 == ' ' && vf_c2 == ' ' ) { port_info_out -> name_type = MLX5_PHYS_PORT_NAME_TYPE_PFVF ; return ; } sc_items = sscanf ( port_name_in , " " , & pf_c1 , & port_info_out -> port_name , & eol ) ; if ( sc_items == 2 && pf_c1 == ' ' ) { port_info_out -> name_type = MLX5_PHYS_PORT_NAME_TYPE_UPLINK ; return ; } sc_items = sscanf ( port_name_in , " " , & pf_c1 , & pf_c2 , & port_info_out -> pf_num , & eol ) ; if ( sc_items == 3 && pf_c1 == ' ' && pf_c2 == ' ' ) { port_info_out -> port_name = -1 ; port_info_out -> name_type = MLX5_PHYS_PORT_NAME_TYPE_PFHPF ; return ; } errno = 0 ; port_info_out -> port_name = strtol ( port_name_in , & end , 0 ) ; if ( ! errno && ( size_t ) ( end - port_name_in ) == strlen ( port_name_in ) ) { port_info_out -> name_type = MLX5_PHYS_PORT_NAME_TYPE_LEGACY ; return ; } port_info_out -> name_type = MLX5_PHYS_PORT_NAME_TYPE_UNKNOWN ; }
Extract port name, as a number, from sysfs or netlink information.
Extract port name as a number from sysfs or netlink information .
/*
	 * Check for port-name as a string of the form pf0vf0
	 * (support kernel ver >= 5.0 or OFED ver >= 4.6).
	 */ /*
	 * Check for port-name as a string of the form p0
	 * (support kernel ver >= 5.0, or OFED ver >= 4.6).
	 */ /*
	 * Check for port-name as a string of the form pf0
	 * (support kernel ver >= 5.7 for HPF representor on BF).
	 */ /* Check for port-name as a number (support kernel ver < 5.0 */