net/mlx5: add OS specific flow type selection
[dpdk.git] / drivers / net / i40e / base / i40e_adminq_cmd.h
index 8306260..1905167 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2001-2018
+ * Copyright(c) 2001-2020 Intel Corporation
  */
 
 #ifndef _I40E_ADMINQ_CMD_H_
@@ -12,8 +12,8 @@
  */
 
 #define I40E_FW_API_VERSION_MAJOR      0x0001
-#define I40E_FW_API_VERSION_MINOR_X722 0x0006
-#define I40E_FW_API_VERSION_MINOR_X710 0x0007
+#define I40E_FW_API_VERSION_MINOR_X722 0x000A
+#define I40E_FW_API_VERSION_MINOR_X710 0x000A
 
 #define I40E_FW_MINOR_VERSION(_h) ((_h)->mac.type == I40E_MAC_XL710 ? \
                                        I40E_FW_API_VERSION_MINOR_X710 : \
@@ -21,6 +21,8 @@
 
 /* API version 1.7 implements additional link and PHY-specific APIs  */
 #define I40E_MINOR_VER_GET_LINK_INFO_XL710 0x0007
+/* API version 1.9 for X722 implements additional link and PHY-specific APIs */
+#define I40E_MINOR_VER_GET_LINK_INFO_X722 0x0009
 /* API version 1.6 for X722 devices adds ability to stop FW LLDP agent */
 #define I40E_MINOR_VER_FW_LLDP_STOPPABLE_X722 0x0006
 
@@ -265,6 +267,7 @@ enum i40e_admin_queue_opc {
        i40e_aqc_opc_get_cee_dcb_cfg    = 0x0A07,
        i40e_aqc_opc_lldp_set_local_mib = 0x0A08,
        i40e_aqc_opc_lldp_stop_start_spec_agent = 0x0A09,
+       i40e_aqc_opc_lldp_restore               = 0x0A0A,
 
        /* Tunnel commands */
        i40e_aqc_opc_add_udp_tunnel     = 0x0B00,
@@ -1401,6 +1404,9 @@ struct i40e_aqc_cloud_filters_element_data {
 #define I40E_AQC_ADD_CLOUD_FILTER_IMAC                 0x000A
 #define I40E_AQC_ADD_CLOUD_FILTER_OMAC_TEN_ID_IMAC     0x000B
 #define I40E_AQC_ADD_CLOUD_FILTER_IIP                  0x000C
+/* 0x000D reserved */
+/* 0x000E reserved */
+/* 0x000F reserved */
 /* 0x0010 to 0x0017 is for custom filters */
 #define I40E_AQC_ADD_CLOUD_FILTER_IP_PORT              0x0010 /* Dest IP + L4 Port */
 #define I40E_AQC_ADD_CLOUD_FILTER_MAC_PORT             0x0011 /* Dest MAC + L4 Port */
@@ -1440,8 +1446,7 @@ struct i40e_aqc_cloud_filters_element_data {
 };
 
 /* i40e_aqc_add_rm_cloud_filt_elem_ext is used when
- * I40E_AQC_ADD_REM_CLOUD_CMD_BIG_BUFFER flag is set. refer to
- * DCR288
+ * I40E_AQC_ADD_REM_CLOUD_CMD_BIG_BUFFER flag is set.
  */
 struct i40e_aqc_add_rm_cloud_filt_elem_ext {
        struct i40e_aqc_cloud_filters_element_data element;
@@ -1936,17 +1941,14 @@ enum i40e_aq_phy_type {
        I40E_PHY_TYPE_25GBASE_LR                = 0x22,
        I40E_PHY_TYPE_25GBASE_AOC               = 0x23,
        I40E_PHY_TYPE_25GBASE_ACC               = 0x24,
-#ifdef CARLSVILLE_HW
        I40E_PHY_TYPE_2_5GBASE_T                = 0x30,
        I40E_PHY_TYPE_5GBASE_T                  = 0x31,
-#endif
        I40E_PHY_TYPE_MAX,
        I40E_PHY_TYPE_NOT_SUPPORTED_HIGH_TEMP   = 0xFD,
        I40E_PHY_TYPE_EMPTY                     = 0xFE,
        I40E_PHY_TYPE_DEFAULT                   = 0xFF,
 };
 
-#ifdef CARLSVILLE_HW
 #define I40E_PHY_TYPES_BITMASK (BIT_ULL(I40E_PHY_TYPE_SGMII) | \
                                BIT_ULL(I40E_PHY_TYPE_1000BASE_KX) | \
                                BIT_ULL(I40E_PHY_TYPE_10GBASE_KX4) | \
@@ -1985,66 +1987,22 @@ enum i40e_aq_phy_type {
                                BIT_ULL(I40E_PHY_TYPE_25GBASE_ACC) | \
                                BIT_ULL(I40E_PHY_TYPE_2_5GBASE_T) | \
                                BIT_ULL(I40E_PHY_TYPE_5GBASE_T))
-#else
-#define I40E_PHY_TYPES_BITMASK (BIT_ULL(I40E_PHY_TYPE_SGMII) | \
-                               BIT_ULL(I40E_PHY_TYPE_1000BASE_KX) | \
-                               BIT_ULL(I40E_PHY_TYPE_10GBASE_KX4) | \
-                               BIT_ULL(I40E_PHY_TYPE_10GBASE_KR) | \
-                               BIT_ULL(I40E_PHY_TYPE_40GBASE_KR4) | \
-                               BIT_ULL(I40E_PHY_TYPE_XAUI) | \
-                               BIT_ULL(I40E_PHY_TYPE_XFI) | \
-                               BIT_ULL(I40E_PHY_TYPE_SFI) | \
-                               BIT_ULL(I40E_PHY_TYPE_XLAUI) | \
-                               BIT_ULL(I40E_PHY_TYPE_XLPPI) | \
-                               BIT_ULL(I40E_PHY_TYPE_40GBASE_CR4_CU) | \
-                               BIT_ULL(I40E_PHY_TYPE_10GBASE_CR1_CU) | \
-                               BIT_ULL(I40E_PHY_TYPE_10GBASE_AOC) | \
-                               BIT_ULL(I40E_PHY_TYPE_40GBASE_AOC) | \
-                               BIT_ULL(I40E_PHY_TYPE_UNRECOGNIZED) | \
-                               BIT_ULL(I40E_PHY_TYPE_UNSUPPORTED) | \
-                               BIT_ULL(I40E_PHY_TYPE_100BASE_TX) | \
-                               BIT_ULL(I40E_PHY_TYPE_1000BASE_T) | \
-                               BIT_ULL(I40E_PHY_TYPE_10GBASE_T) | \
-                               BIT_ULL(I40E_PHY_TYPE_10GBASE_SR) | \
-                               BIT_ULL(I40E_PHY_TYPE_10GBASE_LR) | \
-                               BIT_ULL(I40E_PHY_TYPE_10GBASE_SFPP_CU) | \
-                               BIT_ULL(I40E_PHY_TYPE_10GBASE_CR1) | \
-                               BIT_ULL(I40E_PHY_TYPE_40GBASE_CR4) | \
-                               BIT_ULL(I40E_PHY_TYPE_40GBASE_SR4) | \
-                               BIT_ULL(I40E_PHY_TYPE_40GBASE_LR4) | \
-                               BIT_ULL(I40E_PHY_TYPE_1000BASE_SX) | \
-                               BIT_ULL(I40E_PHY_TYPE_1000BASE_LX) | \
-                               BIT_ULL(I40E_PHY_TYPE_1000BASE_T_OPTICAL) | \
-                               BIT_ULL(I40E_PHY_TYPE_20GBASE_KR2) | \
-                               BIT_ULL(I40E_PHY_TYPE_25GBASE_KR) | \
-                               BIT_ULL(I40E_PHY_TYPE_25GBASE_CR) | \
-                               BIT_ULL(I40E_PHY_TYPE_25GBASE_SR) | \
-                               BIT_ULL(I40E_PHY_TYPE_25GBASE_LR) | \
-                               BIT_ULL(I40E_PHY_TYPE_25GBASE_AOC) | \
-                               BIT_ULL(I40E_PHY_TYPE_25GBASE_ACC))
-#endif
 
-#ifdef CARLSVILLE_HW
 #define I40E_LINK_SPEED_2_5GB_SHIFT    0x0
-#endif
 #define I40E_LINK_SPEED_100MB_SHIFT    0x1
 #define I40E_LINK_SPEED_1000MB_SHIFT   0x2
 #define I40E_LINK_SPEED_10GB_SHIFT     0x3
 #define I40E_LINK_SPEED_40GB_SHIFT     0x4
 #define I40E_LINK_SPEED_20GB_SHIFT     0x5
 #define I40E_LINK_SPEED_25GB_SHIFT     0x6
-#ifdef CARLSVILLE_HW
 #define I40E_LINK_SPEED_5GB_SHIFT      0x7
-#endif
 
 enum i40e_aq_link_speed {
        I40E_LINK_SPEED_UNKNOWN = 0,
        I40E_LINK_SPEED_100MB   = (1 << I40E_LINK_SPEED_100MB_SHIFT),
        I40E_LINK_SPEED_1GB     = (1 << I40E_LINK_SPEED_1000MB_SHIFT),
-#ifdef CARLSVILLE_HW
        I40E_LINK_SPEED_2_5GB   = (1 << I40E_LINK_SPEED_2_5GB_SHIFT),
        I40E_LINK_SPEED_5GB     = (1 << I40E_LINK_SPEED_5GB_SHIFT),
-#endif
        I40E_LINK_SPEED_10GB    = (1 << I40E_LINK_SPEED_10GB_SHIFT),
        I40E_LINK_SPEED_40GB    = (1 << I40E_LINK_SPEED_40GB_SHIFT),
        I40E_LINK_SPEED_20GB    = (1 << I40E_LINK_SPEED_20GB_SHIFT),
@@ -2074,12 +2032,15 @@ struct i40e_aq_get_phy_abilities_resp {
 #define I40E_AQ_PHY_FEC_ABILITY_KR     0x40
 #define I40E_AQ_PHY_FEC_ABILITY_RS     0x80
        __le16  eee_capability;
+#define I40E_AQ_EEE_AUTO               0x0001
 #define I40E_AQ_EEE_100BASE_TX         0x0002
 #define I40E_AQ_EEE_1000BASE_T         0x0004
 #define I40E_AQ_EEE_10GBASE_T          0x0008
 #define I40E_AQ_EEE_1000BASE_KX                0x0010
 #define I40E_AQ_EEE_10GBASE_KX4                0x0020
 #define I40E_AQ_EEE_10GBASE_KR         0x0040
+#define I40E_AQ_EEE_2_5GBASE_T         0x0100
+#define I40E_AQ_EEE_5GBASE_T           0x0200
        __le32  eeer_val;
        u8      d3_lpan;
 #define I40E_AQ_SET_PHY_D3_LPAN_ENA    0x01
@@ -2090,10 +2051,8 @@ struct i40e_aq_get_phy_abilities_resp {
 #define I40E_AQ_PHY_TYPE_EXT_25G_LR    0x08
 #define I40E_AQ_PHY_TYPE_EXT_25G_AOC   0x10
 #define I40E_AQ_PHY_TYPE_EXT_25G_ACC   0x20
-#ifdef CARLSVILLE_HW
 #define I40E_AQ_PHY_TYPE_EXT_2_5GBASE_T        0x40
 #define I40E_AQ_PHY_TYPE_EXT_5GBASE_T  0x80
-#endif
        u8      fec_cfg_curr_mod_ext_info;
 #define I40E_AQ_ENABLE_FEC_KR          0x01
 #define I40E_AQ_ENABLE_FEC_RS          0x02
@@ -2144,20 +2103,21 @@ I40E_CHECK_CMD_LENGTH(i40e_aq_set_phy_config);
 struct i40e_aq_set_mac_config {
        __le16  max_frame_size;
        u8      params;
-#define I40E_AQ_SET_MAC_CONFIG_CRC_EN          0x04
-#define I40E_AQ_SET_MAC_CONFIG_PACING_MASK     0x78
-#define I40E_AQ_SET_MAC_CONFIG_PACING_SHIFT    3
-#define I40E_AQ_SET_MAC_CONFIG_PACING_NONE     0x0
-#define I40E_AQ_SET_MAC_CONFIG_PACING_1B_13TX  0xF
-#define I40E_AQ_SET_MAC_CONFIG_PACING_1DW_9TX  0x9
-#define I40E_AQ_SET_MAC_CONFIG_PACING_1DW_4TX  0x8
-#define I40E_AQ_SET_MAC_CONFIG_PACING_3DW_7TX  0x7
-#define I40E_AQ_SET_MAC_CONFIG_PACING_2DW_3TX  0x6
-#define I40E_AQ_SET_MAC_CONFIG_PACING_1DW_1TX  0x5
-#define I40E_AQ_SET_MAC_CONFIG_PACING_3DW_2TX  0x4
-#define I40E_AQ_SET_MAC_CONFIG_PACING_7DW_3TX  0x3
-#define I40E_AQ_SET_MAC_CONFIG_PACING_4DW_1TX  0x2
-#define I40E_AQ_SET_MAC_CONFIG_PACING_9DW_1TX  0x1
+#define I40E_AQ_SET_MAC_CONFIG_CRC_EN                  0x04
+#define I40E_AQ_SET_MAC_CONFIG_PACING_MASK             0x78
+#define I40E_AQ_SET_MAC_CONFIG_PACING_SHIFT            3
+#define I40E_AQ_SET_MAC_CONFIG_PACING_NONE             0x0
+#define I40E_AQ_SET_MAC_CONFIG_PACING_1B_13TX          0xF
+#define I40E_AQ_SET_MAC_CONFIG_PACING_1DW_9TX          0x9
+#define I40E_AQ_SET_MAC_CONFIG_PACING_1DW_4TX          0x8
+#define I40E_AQ_SET_MAC_CONFIG_PACING_3DW_7TX          0x7
+#define I40E_AQ_SET_MAC_CONFIG_PACING_2DW_3TX          0x6
+#define I40E_AQ_SET_MAC_CONFIG_PACING_1DW_1TX          0x5
+#define I40E_AQ_SET_MAC_CONFIG_PACING_3DW_2TX          0x4
+#define I40E_AQ_SET_MAC_CONFIG_PACING_7DW_3TX          0x3
+#define I40E_AQ_SET_MAC_CONFIG_PACING_4DW_1TX          0x2
+#define I40E_AQ_SET_MAC_CONFIG_PACING_9DW_1TX          0x1
+#define I40E_AQ_SET_MAC_CONFIG_DROP_BLOCKING_PACKET_EN 0x80
        u8      tx_timer_priority; /* bitmap */
        __le16  tx_timer_value;
        __le16  fc_refresh_threshold;
@@ -2318,15 +2278,32 @@ enum i40e_aq_phy_reg_type {
        I40E_AQC_PHY_REG_EXERNAL_MODULE = 0x3
 };
 
+#pragma pack(1)
 /* Run PHY Activity (0x0626) */
 struct i40e_aqc_run_phy_activity {
-       __le16  activity_id;
-       u8      flags;
-       u8      reserved1;
-       __le32  control;
-       __le32  data;
-       u8      reserved2[4];
+       u8      cmd_flags;
+       __le16  activity_id;
+#define I40E_AQ_RUN_PHY_ACT_ID_USR_DFND                        0x10
+       u8      reserved;
+       union {
+               struct {
+                       __le32  dnl_opcode;
+#define I40E_AQ_RUN_PHY_ACT_DNL_OPCODE_GET_EEE_STAT_DUR        0x801a
+#define I40E_AQ_RUN_PHY_ACT_DNL_OPCODE_GET_EEE_STAT    0x801b
+#define I40E_AQ_RUN_PHY_ACT_DNL_OPCODE_GET_EEE_DUR     0x1801b
+                       __le32  data;
+                       u8      reserved2[4];
+               } cmd;
+               struct {
+                       __le32  cmd_status;
+#define I40E_AQ_RUN_PHY_ACT_CMD_STAT_SUCC              0x4
+#define I40E_AQ_RUN_PHY_ACT_CMD_STAT_MASK              0xFFFF
+                       __le32  data0;
+                       __le32  data1;
+               } resp;
+       } params;
 };
+#pragma pack()
 
 I40E_CHECK_CMD_LENGTH(i40e_aqc_run_phy_activity);
 
@@ -2339,7 +2316,11 @@ struct i40e_aqc_phy_register_access {
 #define I40E_AQ_PHY_REG_ACCESS_EXTERNAL_MODULE 2
        u8      dev_addres;
        u8      cmd_flags;
-#define I40E_AQ_PHY_REG_ACCESS_DONT_CHANGE_QSFP_PAGE   1
+#define I40E_AQ_PHY_REG_ACCESS_DONT_CHANGE_QSFP_PAGE   0x01
+#define I40E_AQ_PHY_REG_ACCESS_SET_MDIO_IF_NUMBER      0x02
+#define I40E_AQ_PHY_REG_ACCESS_MDIO_IF_NUMBER_SHIFT    2
+#define I40E_AQ_PHY_REG_ACCESS_MDIO_IF_NUMBER_MASK     (0x3 << \
+               I40E_AQ_PHY_REG_ACCESS_MDIO_IF_NUMBER_SHIFT)
        u8      reserved1;
        __le32  reg_address;
        __le32  reg_value;
@@ -2604,8 +2585,9 @@ I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_update_tlv);
 /* Stop LLDP (direct 0x0A05) */
 struct i40e_aqc_lldp_stop {
        u8      command;
-#define I40E_AQ_LLDP_AGENT_STOP                0x0
-#define I40E_AQ_LLDP_AGENT_SHUTDOWN    0x1
+#define I40E_AQ_LLDP_AGENT_STOP                        0x0
+#define I40E_AQ_LLDP_AGENT_SHUTDOWN            0x1
+#define I40E_AQ_LLDP_AGENT_STOP_PERSIST                0x2
        u8      reserved[15];
 };
 
@@ -2615,7 +2597,8 @@ I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_stop);
 
 struct i40e_aqc_lldp_start {
        u8      command;
-#define I40E_AQ_LLDP_AGENT_START       0x1
+#define I40E_AQ_LLDP_AGENT_START               0x1
+#define I40E_AQ_LLDP_AGENT_START_PERSIST       0x2
        u8      reserved[15];
 };
 
@@ -2735,6 +2718,16 @@ struct i40e_aqc_lldp_stop_start_specific_agent {
 
 I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_stop_start_specific_agent);
 
+/* Restore LLDP Agent factory settings (direct 0x0A0A) */
+struct i40e_aqc_lldp_restore {
+       u8      command;
+#define I40E_AQ_LLDP_AGENT_RESTORE_NOT         0x0
+#define I40E_AQ_LLDP_AGENT_RESTORE             0x1
+       u8      reserved[15];
+};
+
+I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_restore);
+
 /* Add Udp Tunnel command and completion (direct 0x0B00) */
 struct i40e_aqc_add_udp_tunnel {
        __le16  udp_port;