src/dpdk/drivers/net/ice/base/ice_common.c
enum ice_status
ice_aq_get_phy_caps(struct ice_port_info *pi, bool qual_mods, u8 report_mode,
		    struct ice_aqc_get_phy_caps_data *pcaps,
		    struct ice_sq_cd *cd)
{
	struct ice_aqc_get_phy_caps *cmd;
	u16 pcaps_size = sizeof(*pcaps);
	struct ice_aq_desc desc;
	enum ice_status status;
	struct ice_hw *hw;

	cmd = &desc.params.get_phy;

	if (!pcaps || (report_mode & ~ICE_AQC_REPORT_MODE_M) || !pi)
		return ICE_ERR_PARAM;
	hw = pi->hw;

	if (report_mode == ICE_AQC_REPORT_DFLT_CFG &&
	    !ice_fw_supports_report_dflt_cfg(hw))
		return ICE_ERR_PARAM;

	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_get_phy_caps);

	if (qual_mods)
		cmd->param0 |= CPU_TO_LE16(ICE_AQC_GET_PHY_RQM);

	cmd->param0 |= CPU_TO_LE16(report_mode);
	status = ice_aq_send_cmd(hw, &desc, pcaps, pcaps_size, cd);

	ice_debug(hw, ICE_DBG_LINK, "get phy caps - report_mode = 0x%x\n",
		  report_mode);
	ice_debug(hw, ICE_DBG_LINK, "	phy_type_low = 0x%llx\n",
		  (unsigned long long)LE64_TO_CPU(pcaps->phy_type_low));
	ice_debug(hw, ICE_DBG_LINK, "	phy_type_high = 0x%llx\n",
		  (unsigned long long)LE64_TO_CPU(pcaps->phy_type_high));
	ice_debug(hw, ICE_DBG_LINK, "	caps = 0x%x\n", pcaps->caps);
	ice_debug(hw, ICE_DBG_LINK, "	low_power_ctrl_an = 0x%x\n",
		  pcaps->low_power_ctrl_an);
	ice_debug(hw, ICE_DBG_LINK, "	eee_cap = 0x%x\n", pcaps->eee_cap);
	ice_debug(hw, ICE_DBG_LINK, "	eeer_value = 0x%x\n",
		  pcaps->eeer_value);
	ice_debug(hw, ICE_DBG_LINK, "	link_fec_options = 0x%x\n",
		  pcaps->link_fec_options);
	ice_debug(hw, ICE_DBG_LINK, "	module_compliance_enforcement = 0x%x\n",
		  pcaps->module_compliance_enforcement);
	ice_debug(hw, ICE_DBG_LINK, "   extended_compliance_code = 0x%x\n",
		  pcaps->extended_compliance_code);
	ice_debug(hw, ICE_DBG_LINK, "   module_type[0] = 0x%x\n",
		  pcaps->module_type[0]);
	ice_debug(hw, ICE_DBG_LINK, "   module_type[1] = 0x%x\n",
		  pcaps->module_type[1]);
	ice_debug(hw, ICE_DBG_LINK, "   module_type[2] = 0x%x\n",
		  pcaps->module_type[2]);

	if (status == ICE_SUCCESS && report_mode == ICE_AQC_REPORT_TOPO_CAP_MEDIA) {
		pi->phy.phy_type_low = LE64_TO_CPU(pcaps->phy_type_low);
		pi->phy.phy_type_high = LE64_TO_CPU(pcaps->phy_type_high);
		ice_memcpy(pi->phy.link_info.module_type, &pcaps->module_type,
			   sizeof(pi->phy.link_info.module_type),
			   ICE_NONDMA_TO_NONDMA);
	}

	return status;
}
/**
 * ice_aq_get_phy_caps - returns PHY capabilities
 * @pi: port information structure
 * @qual_mods: report qualified modules
 * @report_mode: report mode capabilities
 * @pcaps: structure for PHY capabilities to be filled
 * @cd: pointer to command details structure or NULL
 *
 * Returns the various PHY capabilities supported on the Port (0x0600)
 */


Returns the various PHY capabilities supported on the Port (0x0600)
Returns the various PHY capabilities supported on the Port ( 0x0600 )
enum ice_status
ice_aq_get_phy_caps(struct ice_port_info *pi, bool qual_mods, u8 report_mode,
		    struct ice_aqc_get_phy_caps_data *pcaps,
		    struct ice_sq_cd *cd)
{
	struct ice_aqc_get_phy_caps *cmd;
	u16 pcaps_size = sizeof(*pcaps);
	struct ice_aq_desc desc;
	enum ice_status status;
	struct ice_hw *hw;
	cmd = &desc.params.get_phy;
	if (!pcaps || (report_mode & ~ICE_AQC_REPORT_MODE_M) || !pi)
		return ICE_ERR_PARAM;
	hw = pi->hw;
	if (report_mode == ICE_AQC_REPORT_DFLT_CFG &&
	    !ice_fw_supports_report_dflt_cfg(hw))
		return ICE_ERR_PARAM;
	ice_fill_dflt_direct_cmd_desc(&desc, ice_aqc_opc_get_phy_caps);
	if (qual_mods)
		cmd->param0 |= CPU_TO_LE16(ICE_AQC_GET_PHY_RQM);
	cmd->param0 |= CPU_TO_LE16(report_mode);
	status = ice_aq_send_cmd(hw, &desc, pcaps, pcaps_size, cd);
	ice_debug(hw, ICE_DBG_LINK, "get phy caps - report_mode = 0x%x\n",
		  report_mode);
	ice_debug(hw, ICE_DBG_LINK, "	phy_type_low = 0x%llx\n",
		  (unsigned long long)LE64_TO_CPU(pcaps->phy_type_low));
	ice_debug(hw, ICE_DBG_LINK, "	phy_type_high = 0x%llx\n",
		  (unsigned long long)LE64_TO_CPU(pcaps->phy_type_high));
	ice_debug(hw, ICE_DBG_LINK, "	caps = 0x%x\n", pcaps->caps);
	ice_debug(hw, ICE_DBG_LINK, "	low_power_ctrl_an = 0x%x\n",
		  pcaps->low_power_ctrl_an);
	ice_debug(hw, ICE_DBG_LINK, "	eee_cap = 0x%x\n", pcaps->eee_cap);
	ice_debug(hw, ICE_DBG_LINK, "	eeer_value = 0x%x\n",
		  pcaps->eeer_value);
	ice_debug(hw, ICE_DBG_LINK, "	link_fec_options = 0x%x\n",
		  pcaps->link_fec_options);
	ice_debug(hw, ICE_DBG_LINK, "	module_compliance_enforcement = 0x%x\n",
		  pcaps->module_compliance_enforcement);
	ice_debug(hw, ICE_DBG_LINK, "   extended_compliance_code = 0x%x\n",
		  pcaps->extended_compliance_code);
	ice_debug(hw, ICE_DBG_LINK, "   module_type[0] = 0x%x\n",
		  pcaps->module_type[0]);
	ice_debug(hw, ICE_DBG_LINK, "   module_type[1] = 0x%x\n",
		  pcaps->module_type[1]);
	ice_debug(hw, ICE_DBG_LINK, "   module_type[2] = 0x%x\n",
		  pcaps->module_type[2]);
	if (status == ICE_SUCCESS && report_mode == ICE_AQC_REPORT_TOPO_CAP_MEDIA) {
		pi->phy.phy_type_low = LE64_TO_CPU(pcaps->phy_type_low);
		pi->phy.phy_type_high = LE64_TO_CPU(pcaps->phy_type_high);
		ice_memcpy(pi->phy.link_info.module_type, &pcaps->module_type,
			   sizeof(pi->phy.link_info.module_type),
			   ICE_NONDMA_TO_NONDMA);
	}
	return status;
}
enum ice_status ice_aq_get_phy_caps ( struct ice_port_info * pi , bool qual_mods , u8 report_mode , struct ice_aqc_get_phy_caps_data * pcaps , struct ice_sq_cd * cd ) { struct ice_aqc_get_phy_caps * cmd ; u16 pcaps_size = sizeof ( * pcaps ) ; struct ice_aq_desc desc ; enum ice_status status ; struct ice_hw * hw ; cmd = & desc . params . get_phy ; if ( ! pcaps || ( report_mode & ~ ICE_AQC_REPORT_MODE_M ) || ! pi ) return ICE_ERR_PARAM ; hw = pi -> hw ; if ( report_mode == ICE_AQC_REPORT_DFLT_CFG && ! ice_fw_supports_report_dflt_cfg ( hw ) ) return ICE_ERR_PARAM ; ice_fill_dflt_direct_cmd_desc ( & desc , ice_aqc_opc_get_phy_caps ) ; if ( qual_mods ) cmd -> param0 |= CPU_TO_LE16 ( ICE_AQC_GET_PHY_RQM ) ; cmd -> param0 |= CPU_TO_LE16 ( report_mode ) ; status = ice_aq_send_cmd ( hw , & desc , pcaps , pcaps_size , cd ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , report_mode ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , ( unsigned long long ) LE64_TO_CPU ( pcaps -> phy_type_low ) ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , ( unsigned long long ) LE64_TO_CPU ( pcaps -> phy_type_high ) ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , pcaps -> caps ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , pcaps -> low_power_ctrl_an ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , pcaps -> eee_cap ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , pcaps -> eeer_value ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , pcaps -> link_fec_options ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , pcaps -> module_compliance_enforcement ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , pcaps -> extended_compliance_code ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , pcaps -> module_type [ 0 ] ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , pcaps -> module_type [ 1 ] ) ; ice_debug ( hw , ICE_DBG_LINK , " \n " , pcaps -> module_type [ 2 ] ) ; if ( status == ICE_SUCCESS && report_mode == ICE_AQC_REPORT_TOPO_CAP_MEDIA ) { pi -> phy . phy_type_low = LE64_TO_CPU ( pcaps -> phy_type_low ) ; pi -> phy . phy_type_high = LE64_TO_CPU ( pcaps -> phy_type_high ) ; ice_memcpy ( pi -> phy . link_info . module_type , & pcaps -> module_type , sizeof ( pi -> phy . link_info . module_type ) , ICE_NONDMA_TO_NONDMA ) ; } return status ; }
ice_aq_get_phy_caps - returns PHY capabilities
 @pi: port information structure
 @qual_mods: report qualified modules
 @report_mode: report mode capabilities
 @pcaps: structure for PHY capabilities to be filled
 @cd: pointer to command details structure or NULL
ice_aq_get_phy_caps - returns PHY capabilities @pi : port information structure @qual_mods : report qualified modules @report_mode : report mode capabilities @pcaps : structure for PHY capabilities to be filled @cd : pointer to command details structure or NULL