@@ -1023,7 +1023,7 @@ nfp_net_init(struct rte_eth_dev *eth_dev,
10231023 if (pf_dev -> multi_pf .enabled )
10241024 hw -> ctrl_bar = pf_dev -> ctrl_bar ;
10251025 else
1026- hw -> ctrl_bar = pf_dev -> ctrl_bar + (port * NFP_NET_CFG_BAR_SZ );
1026+ hw -> ctrl_bar = pf_dev -> ctrl_bar + (port * pf_dev -> ctrl_bar_size );
10271027
10281028 net_hw -> mac_stats = pf_dev -> mac_stats_bar +
10291029 (net_hw -> nfp_idx * NFP_MAC_STATS_SIZE );
@@ -1556,9 +1556,10 @@ nfp_enable_multi_pf(struct nfp_pf_dev *pf_dev)
15561556 memset (& net_hw , 0 , sizeof (struct nfp_net_hw ));
15571557
15581558 /* Map the symbol table */
1559+ pf_dev -> ctrl_bar_size = NFP_NET_CFG_BAR_SZ_MIN ;
15591560 snprintf (name , sizeof (name ), "_pf%u_net_bar0" ,
15601561 pf_dev -> multi_pf .function_id );
1561- ctrl_bar = nfp_rtsym_map (pf_dev -> sym_tbl , name , NFP_NET_CFG_BAR_SZ ,
1562+ ctrl_bar = nfp_rtsym_map (pf_dev -> sym_tbl , name , pf_dev -> ctrl_bar_size ,
15621563 & area );
15631564 if (ctrl_bar == NULL ) {
15641565 PMD_INIT_LOG (ERR , "Failed to find data vNIC memory symbol" );
@@ -1575,6 +1576,9 @@ nfp_enable_multi_pf(struct nfp_pf_dev *pf_dev)
15751576 goto end ;
15761577 }
15771578
1579+ /* Set the ctrl bar size */
1580+ nfp_net_ctrl_bar_size_set (pf_dev );
1581+
15781582 if (!pf_dev -> multi_pf .enabled )
15791583 goto end ;
15801584
@@ -1671,7 +1675,7 @@ nfp_init_app_fw_nic(struct nfp_net_hw_priv *hw_priv)
16711675 /* Map the symbol table */
16721676 snprintf (bar_name , sizeof (bar_name ), "_pf%u_net_bar0" , id );
16731677 pf_dev -> ctrl_bar = nfp_rtsym_map (pf_dev -> sym_tbl , bar_name ,
1674- pf_dev -> total_phyports * NFP_NET_CFG_BAR_SZ ,
1678+ pf_dev -> total_phyports * pf_dev -> ctrl_bar_size ,
16751679 & pf_dev -> ctrl_area );
16761680 if (pf_dev -> ctrl_bar == NULL ) {
16771681 PMD_INIT_LOG (ERR , "nfp_rtsym_map fails for %s" , bar_name );
@@ -2066,11 +2070,11 @@ nfp_net_vf_config_init(struct nfp_pf_dev *pf_dev)
20662070 if (pf_dev -> sriov_vf == 0 )
20672071 return 0 ;
20682072
2069- min_size = NFP_NET_CFG_BAR_SZ * pf_dev -> sriov_vf ;
2073+ min_size = pf_dev -> ctrl_bar_size * pf_dev -> sriov_vf ;
20702074 snprintf (vf_bar_name , sizeof (vf_bar_name ), "_pf%d_net_vf_bar" ,
20712075 pf_dev -> multi_pf .function_id );
20722076 pf_dev -> vf_bar = nfp_rtsym_map_offset (pf_dev -> sym_tbl , vf_bar_name ,
2073- NFP_NET_CFG_BAR_SZ * pf_dev -> vf_base_id ,
2077+ pf_dev -> ctrl_bar_size * pf_dev -> vf_base_id ,
20742078 min_size , & pf_dev -> vf_area );
20752079 if (pf_dev -> vf_bar == NULL ) {
20762080 PMD_INIT_LOG (ERR , "Failed to get vf cfg." );
@@ -2296,15 +2300,15 @@ nfp_pf_init(struct rte_pci_device *pci_dev)
22962300 goto hwqueues_cleanup ;
22972301 }
22982302
2303+ ret = nfp_enable_multi_pf (pf_dev );
2304+ if (ret != 0 )
2305+ goto mac_stats_cleanup ;
2306+
22992307 ret = nfp_net_vf_config_init (pf_dev );
23002308 if (ret != 0 ) {
23012309 PMD_INIT_LOG (ERR , "Failed to init VF config." );
2302- goto mac_stats_cleanup ;
2303- }
2304-
2305- ret = nfp_enable_multi_pf (pf_dev );
2306- if (ret != 0 )
23072310 goto vf_cfg_tbl_cleanup ;
2311+ }
23082312
23092313 hw_priv -> is_pf = true;
23102314 hw_priv -> pf_dev = pf_dev ;
0 commit comments