Hi Vipin,
> -----Original Message----- > From: Varghese, Vipin > Sent: Tuesday, December 4, 2018 12:19 PM > To: Lu, Wenzhuo <wenzhuo...@intel.com>; dev@dpdk.org > Cc: Lu, Wenzhuo <wenzhuo...@intel.com> > Subject: RE: [dpdk-dev] [PATCH v2 01/20] net/ice: add base code > > Snipped > > > +Intel® ICE driver > > +================== > > + > > +This directory contains source code of FreeBSD ice driver of version > > +2018.10.30 released by the team which develops basic drivers for any > > +ice NIC. The directory of base/ contains the original source package. > > +This driver is valid for the product(s) listed below > > + > > +* Intel® Ethernet Network Adapters E810 > > + > > +Updating the driver > > +=================== > > + > > +NOTE: The source code in this directory should not be modified apart > > +from the following file(s): > > + > > + ice_osdep.h > > I this README persistent in upcoming releases of 'driver/net/ice'? Yes. > > Snipped > > > +/* Manage MAC address, write command - direct (0x0108) */ struct > > +ice_aqc_manage_mac_write { > > + u8 port_num; > > + u8 flags; > > +#define ICE_AQC_MAN_MAC_WR_MC_MAG_EN BIT(0) > > +#define ICE_AQC_MAN_MAC_WR_WOL_LAA_PFR_KEEP BIT(1) > > +#define ICE_AQC_MAN_MAC_WR_S 6 > > +#define ICE_AQC_MAN_MAC_WR_M (3 << > > ICE_AQC_MAN_MAC_WR_S) > > Is this value '3' or 'BIT(3)'? It's 3. > > > +#define ICE_AQC_MAN_MAC_UPDATE_LAA 0 > > +#define ICE_AQC_MAN_MAC_UPDATE_LAA_WOL (BIT(0) << > > ICE_AQC_MAN_MAC_WR_S) > > Can the code be rearranged for? We don’t want to change the base code for the sake of maintenance. > > #define ICE_AQC_MAN_MAC_WR_S 6 > #define ICE_AQC_MAN_MAC_UPDATE_LAA 0 > #define ICE_AQC_MAN_MAC_WR_M (3 << > ICE_AQC_MAN_MAC_WR_S) > #define ICE_AQC_MAN_MAC_UPDATE_LAA_WOL (BIT(0) << > ICE_AQC_MAN_MAC_WR_S) > > Snipped > > > +/* Each entry in the response buffer is of the following type: */ > > +struct ice_aqc_get_sw_cfg_resp_elem { > > + /* VSI/Port Number */ > > + __le16 vsi_port_num; > > +#define ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_S 0 > > +#define ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_M \ > > + (0x3FF << > > ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_S) > > +#define ICE_AQC_GET_SW_CONF_RESP_TYPE_S 14 > > +#define ICE_AQC_GET_SW_CONF_RESP_TYPE_M (0x3 << > > ICE_AQC_GET_SW_CONF_RESP_TYPE_S) > > +#define ICE_AQC_GET_SW_CONF_RESP_PHYS_PORT 0 > > +#define ICE_AQC_GET_SW_CONF_RESP_VIRT_PORT 1 > > +#define ICE_AQC_GET_SW_CONF_RESP_VSI 2 > > + > > Can the code be rearranged for? The same as above. > > #define ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_S 0 > #define ICE_AQC_GET_SW_CONF_RESP_TYPE_S 14 > #define ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_M \ > (0x3FF << > ICE_AQC_GET_SW_CONF_RESP_VSI_PORT_NUM_S) > #define ICE_AQC_GET_SW_CONF_RESP_TYPE_M (0x3 << > ICE_AQC_GET_SW_CONF_RESP_TYPE_S) > > snipped > > + > > +struct ice_aqc_get_phy_caps_data { > > + __le64 phy_type_low; /* Use values from ICE_PHY_TYPE_LOW_* */ > > + __le64 reserved; > > + u8 caps; > > +#define ICE_AQC_PHY_EN_TX_LINK_PAUSE BIT(0) > > +#define ICE_AQC_PHY_EN_RX_LINK_PAUSE BIT(1) > > +#define ICE_AQC_PHY_LOW_POWER_MODE BIT(2) > > +#define ICE_AQC_PHY_EN_LINK BIT(3) > > +#define ICE_AQC_PHY_AN_MODE BIT(4) > > +#define ICE_AQC_PHY_EN_MOD_QUAL BIT(5) > > +#define ICE_AQC_PHY_EN_LESM BIT(6) > > +#define ICE_AQC_PHY_EN_AUTO_FEC BIT(7) > > +#define ICE_AQC_PHY_CAPS_MASK > > MAKEMASK(0xff, 0) > > + u8 low_power_ctrl; > > +#define ICE_AQC_PHY_EN_D3COLD_LOW_POWER_AUTONEG > BIT(0) > > + __le16 eee_cap; > > +#define ICE_AQC_PHY_EEE_EN_100BASE_TX BIT(0) > > +#define ICE_AQC_PHY_EEE_EN_1000BASE_T BIT(1) > > +#define ICE_AQC_PHY_EEE_EN_10GBASE_T BIT(2) > > +#define ICE_AQC_PHY_EEE_EN_1000BASE_KX BIT(3) > > +#define ICE_AQC_PHY_EEE_EN_10GBASE_KR BIT(4) > > +#define ICE_AQC_PHY_EEE_EN_25GBASE_KR BIT(5) > > +#define ICE_AQC_PHY_EEE_EN_40GBASE_KR4 BIT(6) > > + __le16 eeer_value; > > + u8 phy_id_oui[4]; /* PHY/Module ID connected on the port */ > > + u8 phy_fw_ver[8]; > > + u8 link_fec_options; > > +#define ICE_AQC_PHY_FEC_10G_KR_40G_KR4_EN BIT(0) > > +#define ICE_AQC_PHY_FEC_10G_KR_40G_KR4_REQ BIT(1) > > +#define ICE_AQC_PHY_FEC_25G_RS_528_REQ BIT(2) > > +#define ICE_AQC_PHY_FEC_25G_KR_REQ BIT(3) > > +#define ICE_AQC_PHY_FEC_25G_RS_544_REQ BIT(4) > > +#define ICE_AQC_PHY_FEC_25G_RS_CLAUSE91_EN BIT(6) > > +#define ICE_AQC_PHY_FEC_25G_KR_CLAUSE74_EN BIT(7) > > +#define ICE_AQC_PHY_FEC_MASK > > MAKEMASK(0xdf, 0) > > + u8 extended_compliance_code; > > +#define ICE_MODULE_TYPE_TOTAL_BYTE 3 > > + u8 module_type[ICE_MODULE_TYPE_TOTAL_BYTE]; > > +#define ICE_AQC_MOD_TYPE_BYTE0_SFP_PLUS 0xA0 > > +#define ICE_AQC_MOD_TYPE_BYTE0_QSFP_PLUS 0x80 > > +#define ICE_AQC_MOD_TYPE_BYTE1_SFP_PLUS_CU_PASSIVE BIT(0) > > +#define ICE_AQC_MOD_TYPE_BYTE1_SFP_PLUS_CU_ACTIVE BIT(1) > > +#define ICE_AQC_MOD_TYPE_BYTE1_10G_BASE_SR BIT(4) > > +#define ICE_AQC_MOD_TYPE_BYTE1_10G_BASE_LR BIT(5) > > +#define ICE_AQC_MOD_TYPE_BYTE1_10G_BASE_LRM BIT(6) > > +#define ICE_AQC_MOD_TYPE_BYTE1_10G_BASE_ER BIT(7) > > +#define ICE_AQC_MOD_TYPE_BYTE2_SFP_PLUS 0xA0 > > +#define ICE_AQC_MOD_TYPE_BYTE2_QSFP_PLUS 0x86 > > + u8 qualified_module_count; > > +#define ICE_AQC_QUAL_MOD_COUNT_MAX 16 > > + struct { > > + u8 v_oui[3]; > > + u8 rsvd3; > > + u8 v_part[16]; > > + __le32 v_rev; > > + __le64 rsvd8; > > + } qual_modules[ICE_AQC_QUAL_MOD_COUNT_MAX]; > > +}; > > + > > Does the NIC support physical loopback? I am not able to find here. Not sure about it. But no plan for this at this stage. > > > +#define ICE_AQ_PHY_ENA_LOW_POWER BIT(2) > > Does Low Power PMD is exposed to DPDK? If yes, can you mention the > performance numbers or variance in Release documents? No plan for it at this release. > > Snipped > > > + > > +/* Memory types */ > > +enum ice_memset_type { > > + ICE_NONDMA_MEM = 0, > > + ICE_DMA_MEM > > +}; > > + > > +/* Memcpy types */ > > +enum ice_memcpy_type { > > + ICE_NONDMA_TO_NONDMA = 0, > > + ICE_NONDMA_TO_DMA, > > + ICE_DMA_TO_DMA, > > + ICE_DMA_TO_NONDMA > > +}; > > + > > Is this exposed to user (rte_eth_dev) API? If yes, can you please let know the > performance impact in RX|TX in release notes too. No plan for it at this release. > > Snipped > > Suggestion: patch 01/20 is bit too long Discussing in another thread.