fm10k: make default VID available in initialization
When the PF establishes a connection with Switch Manager(SM), it receives a logical port range from SM, and registers certain logical ports from that range. Then a default VID will be sent back from the SM. This whole transaction - finishing with the default VID being set - needs to be completed before dev_init returns. If not, the interrupt setting will subsequently be changed in dev_start according to the RX queue number, and that can cause this transaction to fail. Signed-off-by: Shaopeng He <shaopeng.he@intel.com> Acked-by: Jing Chen <jing.d.chen@intel.com> Acked-by: Michael Qiu <michael.qiu@intel.com>
This commit is contained in:
parent
1a985cab1a
commit
8bd8bae9c3
@ -2818,6 +2818,21 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev)
|
||||
|
||||
fm10k_mbx_unlock(hw);
|
||||
|
||||
/* Make sure default VID is ready before going forward. */
|
||||
if (hw->mac.type == fm10k_mac_pf) {
|
||||
for (i = 0; i < MAX_QUERY_SWITCH_STATE_TIMES; i++) {
|
||||
if (hw->mac.default_vid)
|
||||
break;
|
||||
/* Delay some time to acquire async port VLAN info. */
|
||||
rte_delay_us(WAIT_SWITCH_MSG_US);
|
||||
}
|
||||
|
||||
if (!hw->mac.default_vid) {
|
||||
PMD_INIT_LOG(ERR, "default VID is not ready");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Add default mac address */
|
||||
fm10k_MAC_filter_set(dev, hw->mac.addr, true,
|
||||
MAIN_VSI_POOL_NUMBER);
|
||||
|
Loading…
Reference in New Issue
Block a user