[1/2] net/ice/base: get PF ID of VF's parent

Message ID 20210818083226.795256-1-dapengx.yu@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Qi Zhang
Headers
Series [1/2] net/ice/base: get PF ID of VF's parent |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Yu, DapengX Aug. 18, 2021, 8:32 a.m. UTC
  From: Dapeng Yu <dapengx.yu@intel.com>

In original implementation, when one or more VFs are created, and VF0
is used as DCF, there is no way to get the physical function ID of their
parent adapter via VF0. The physical function ID is critical for
initializing ACL feature, if wrong physical function ID is used, the ACL
cannot be initialized successfully, and the ACL rule cannot take effect.

This patch makes VF able to get its parent's physical function ID.

Signed-off-by: Dapeng Yu <dapengx.yu@intel.com>
---
 drivers/net/ice/base/ice_switch.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)
  

Patch

diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c
index 5926635088..a1caa9c45d 100644
--- a/drivers/net/ice/base/ice_switch.c
+++ b/drivers/net/ice/base/ice_switch.c
@@ -3413,6 +3413,10 @@  ice_init_port_info(struct ice_port_info *pi, u16 vsi_port_num, u8 type,
 		pi->dflt_tx_vsi_num = ICE_DFLT_VSI_INVAL;
 		pi->dflt_rx_vsi_num = ICE_DFLT_VSI_INVAL;
 		break;
+	case ICE_AQC_GET_SW_CONF_RESP_VSI:
+		pi->is_vf = is_vf;
+		pi->pf_vf_num = pf_vf_num;
+		break;
 	default:
 		ice_debug(pi->hw, ICE_DBG_SW, "incorrect VSI/port type received\n");
 		break;
@@ -3487,6 +3491,14 @@  enum ice_status ice_get_initial_sw_cfg(struct ice_hw *hw)
 						   pf_vf_num, is_vf);
 				j++;
 				break;
+			case ICE_AQC_GET_SW_CONF_RESP_VSI:
+				/* get PF ID of VF's parent */
+				if (!is_vf)
+					ice_init_port_info(hw->port_info,
+							   vsi_port_num,
+							   res_type, swid,
+							   pf_vf_num, is_vf);
+				break;
 			default:
 				break;
 			}