Skip to content

dpdk网卡link up迟了之后,导致后来即使link up后混杂模式和MTU也不会去进行设置 #760

Open
@kennydaili

Description

@kennydaili

以下这段代码可以看到,当30秒后dpdk网卡才启动的话netif_port_start函数就会直接返回,导致后续的混杂模式、MTU、flush_fdir都不会执行到,后续网卡link up也不会进行重新配置了,建议是否可以在link up之前就可以进行这些配置,因为这些都是基础网卡配置,即使没有link up也可以进行设置。

// wait the device link up
RTE_LOG(INFO, NETIF, "Waiting for %s link up, be patient ...\n", port->name);
for (ii = 0; ii < wait_link_up_msecs; ii++) {
rte_eth_link_get_nowait(port->id, &link);
if (link.link_status) {
RTE_LOG(INFO, NETIF, ">> %s: link up - speed %u Mbps - %s\n",
port->name, (unsigned)link.link_speed,
(link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
"full-duplex" : "half-duplex");
break;
}
rte_delay_ms(1);
}
if (!link.link_status) {
RTE_LOG(ERR, NETIF, "%s: fail to bring up %s\n", func, port->name);
return EDPVS_DPDKAPIFAIL;
}

port->flag |= NETIF_PORT_FLAG_RUNNING;

// enable promicuous mode if configured
if (promisc_on) {
    RTE_LOG(INFO, NETIF, "promiscous mode enabled for device %s\n", port->name);
    rte_eth_promiscuous_enable(port->id);
}

ret = rte_eth_dev_set_mtu(port->id, NETIF_JUMBO_FRAME_SIZE);
if (ret < 0) {
    RTE_LOG(ERR, NETIF, "%s: fail to set %s mtu\n", __func__, port->name);
}

rte_eth_dev_get_mtu(port->id, &port->mtu);

/* bonding device's macaddr is updated by its primary device when start,
 * so we should update its macaddr after start. */
if (port->type == PORT_TYPE_BOND_MASTER)
    update_bond_macaddr(port);

/* add in6_addr multicast address */
/* The MLNX doesn't support rte_eth_dev_set_mc_addr_list
ret = idev_add_mcast_init(port);
if (ret != EDPVS_OK) {
    RTE_LOG(WARNING, NETIF, "multicast address add failed for device %s\n", port->name);
    return ret;
}
*/

/* flush FDIR filters */
ret = fdir_filter_flush(port);
if (ret != EDPVS_OK) {
    RTE_LOG(WARNING, NETIF, "fail to flush FDIR filters for device %s\n", port->name);
    return ret;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    issue/to-solveissues await answers tobe solved

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions