dpvs icon indicating copy to clipboard operation
dpvs copied to clipboard

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

Open kennydaili opened this issue 2 years ago • 0 comments

以下这段代码可以看到,当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;
}

kennydaili avatar Sep 26 '21 09:09 kennydaili