net/ice/base: add functions to initialize FW logging
[dpdk.git] / drivers / net / ice / base / ice_adminq_cmd.h
index 3003efd..7430c63 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2001-2018
+ * Copyright(c) 2001-2019
  */
 
 #ifndef _ICE_ADMINQ_CMD_H_
@@ -38,6 +38,17 @@ struct ice_aqc_get_ver {
 };
 
 
+/* Send driver version (indirect 0x0002) */
+struct ice_aqc_driver_ver {
+       u8 major_ver;
+       u8 minor_ver;
+       u8 build_ver;
+       u8 subbuild_ver;
+       u8 reserved[4];
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
 
 /* Queue Shutdown (direct 0x0003) */
 struct ice_aqc_q_shutdown {
@@ -71,7 +82,7 @@ struct ice_aqc_req_res {
 #define ICE_AQ_RES_NVM_WRITE_DFLT_TIMEOUT_MS   180000
 #define ICE_AQ_RES_CHNG_LOCK_DFLT_TIMEOUT_MS   1000
 #define ICE_AQ_RES_GLBL_LOCK_DFLT_TIMEOUT_MS   3000
-       /* For SDP: pin id of the SDP */
+       /* For SDP: pin ID of the SDP */
        __le32 res_number;
        /* Status is only used for ICE_AQC_RES_ID_GLBL_LOCK */
        __le16 status;
@@ -100,10 +111,12 @@ struct ice_aqc_list_caps_elem {
        __le16 cap;
 #define ICE_AQC_CAPS_VALID_FUNCTIONS                   0x0005
 #define ICE_AQC_CAPS_VSI                               0x0017
+#define ICE_AQC_CAPS_DCB                               0x0018
 #define ICE_AQC_CAPS_RSS                               0x0040
 #define ICE_AQC_CAPS_RXQS                              0x0041
 #define ICE_AQC_CAPS_TXQS                              0x0042
 #define ICE_AQC_CAPS_MSIX                              0x0043
+#define ICE_AQC_CAPS_FD                                        0x0045
 #define ICE_AQC_CAPS_MAX_MTU                           0x0047
 
        u8 major_ver;
@@ -177,6 +190,13 @@ struct ice_aqc_clear_pxe {
 };
 
 
+/* Configure No-Drop Policy Command (direct 0x0112) */
+struct ice_aqc_config_no_drop_policy {
+       u8 opts;
+#define ICE_AQC_FORCE_NO_DROP                  BIT(0)
+       u8 rsvd[15];
+};
+
 /* Get switch configuration (0x0200) */
 struct ice_aqc_get_sw_cfg {
        /* Reserved for command and copy of request flags for response */
@@ -274,6 +294,34 @@ struct ice_aqc_get_sw_cfg_resp {
 
 #define ICE_AQC_RES_TYPE_FLAG_DEDICATED                        0x00
 
+#define ICE_AQC_RES_TYPE_S     0
+#define ICE_AQC_RES_TYPE_M     (0x07F << ICE_AQC_RES_TYPE_S)
+
+/* Get Resource Allocation command (indirect 0x0204) */
+struct ice_aqc_get_res_alloc {
+       __le16 resp_elem_num; /* Used in response, reserved in command */
+       u8 reserved[6];
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+/* Get Resource Allocation Response Buffer per response */
+struct ice_aqc_get_res_resp_elem {
+       __le16 res_type; /* Types defined above cmd 0x0204 */
+       __le16 total_capacity; /* Resources available to all PF's */
+       __le16 total_function; /* Resources allocated for a PF */
+       __le16 total_shared; /* Resources allocated as shared */
+       __le16 total_free; /* Resources un-allocated/not reserved by any PF */
+};
+
+/* Buffer for Get Resource command */
+struct ice_aqc_get_res_resp {
+       /* Number of resource entries to be calculated using
+        * datalen/sizeof(struct ice_aqc_cmd_resp)).
+        * Value of 'datalen' gets updated as part of response.
+        */
+       struct ice_aqc_get_res_resp_elem elem[1];
+};
 
 
 /* Allocate Resources command (indirect 0x0208)
@@ -307,6 +355,28 @@ struct ice_aqc_alloc_free_res_elem {
 };
 
 
+/* Get Allocated Resource Descriptors Command (indirect 0x020A) */
+struct ice_aqc_get_allocd_res_desc {
+       union {
+               struct {
+                       __le16 res; /* Types defined above cmd 0x0204 */
+                       __le16 first_desc;
+                       __le32 reserved;
+               } cmd;
+               struct {
+                       __le16 res;
+                       __le16 next_desc;
+                       __le16 num_desc;
+                       __le16 reserved;
+               } resp;
+       } ops;
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+struct ice_aqc_get_allocd_res_desc_resp {
+       struct ice_aqc_res_elem elem[1];
+};
 
 
 /* Add VSI (indirect 0x0210)
@@ -350,6 +420,19 @@ struct ice_aqc_add_update_free_vsi_resp {
 };
 
 
+struct ice_aqc_get_vsi_resp {
+       __le16 vsi_num;
+       u8 vf_id;
+       /* The vsi_flags field uses the ICE_AQ_VSI_TYPE_* defines for values.
+        * These are found above in struct ice_aqc_add_get_update_free_vsi.
+        */
+       u8 vsi_flags;
+       __le16 vsi_used;
+       __le16 vsi_free;
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
 
 struct ice_aqc_vsi_props {
        __le16 valid_sections;
@@ -506,9 +589,180 @@ struct ice_aqc_vsi_props {
 };
 
 
+/* Add/update mirror rule - direct (0x0260) */
+#define ICE_AQC_RULE_ID_VALID_S                7
+#define ICE_AQC_RULE_ID_VALID_M                (0x1 << ICE_AQC_RULE_ID_VALID_S)
+#define ICE_AQC_RULE_ID_S              0
+#define ICE_AQC_RULE_ID_M              (0x3F << ICE_AQC_RULE_ID_S)
+
+/* Following defines to be used while processing caller specified mirror list
+ * of VSI indexes.
+ */
+/* Action: Byte.bit (1.7)
+ *     0 = Remove VSI from mirror rule
+ *     1 = Add VSI to mirror rule
+ */
+#define ICE_AQC_RULE_ACT_S     15
+#define ICE_AQC_RULE_ACT_M     (0x1 << ICE_AQC_RULE_ACT_S)
+/* Action: 1.2:0.0 = Mirrored VSI */
+#define ICE_AQC_RULE_MIRRORED_VSI_S    0
+#define ICE_AQC_RULE_MIRRORED_VSI_M    (0x7FF << ICE_AQC_RULE_MIRRORED_VSI_S)
+
+/* This is to be used by add/update mirror rule Admin Queue command.
+ * In case of add mirror rule - if rule ID is specified as
+ * INVAL_MIRROR_RULE_ID, new rule ID is allocated from shared pool.
+ * If specified rule_id is valid, then it is used. If specified rule_id
+ * is in use then new mirroring rule is added.
+ */
+#define ICE_INVAL_MIRROR_RULE_ID       0xFFFF
+
+struct ice_aqc_add_update_mir_rule {
+       __le16 rule_id;
+
+       __le16 rule_type;
+#define ICE_AQC_RULE_TYPE_S            0
+#define ICE_AQC_RULE_TYPE_M            (0x7 << ICE_AQC_RULE_TYPE_S)
+       /* VPORT ingress/egress */
+#define ICE_AQC_RULE_TYPE_VPORT_INGRESS        0x1
+#define ICE_AQC_RULE_TYPE_VPORT_EGRESS 0x2
+       /* Physical port ingress mirroring.
+        * All traffic received by this port
+        */
+#define ICE_AQC_RULE_TYPE_PPORT_INGRESS        0x6
+       /* Physical port egress mirroring. All traffic sent by this port */
+#define ICE_AQC_RULE_TYPE_PPORT_EGRESS 0x7
+
+       /* Number of mirrored entries.
+        * The values are in the command buffer
+        */
+       __le16 num_entries;
+
+       /* Destination VSI */
+       __le16 dest;
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+/* Delete mirror rule - direct(0x0261) */
+struct ice_aqc_delete_mir_rule {
+       __le16 rule_id;
+       __le16 rsvd;
+
+       /* Byte.bit: 20.0 = Keep allocation. If set VSI stays part of
+        * the PF allocated resources, otherwise it is returned to the
+        * shared pool
+        */
+#define ICE_AQC_FLAG_KEEP_ALLOCD_S     0
+#define ICE_AQC_FLAG_KEEP_ALLOCD_M     (0x1 << ICE_AQC_FLAG_KEEP_ALLOCD_S)
+       __le16 flags;
+
+       u8 reserved[10];
+};
+
+/* Set/Get storm config - (direct 0x0280, 0x0281) */
+/* This structure holds get storm configuration response and same structure
+ * is used to perform set_storm_cfg
+ */
+struct ice_aqc_storm_cfg {
+       __le32 bcast_thresh_size;
+       __le32 mcast_thresh_size;
+       /* Bit 18:0 - Traffic upper threshold size
+        * Bit 31:19 - Reserved
+        */
+#define ICE_AQ_THRESHOLD_S     0
+#define ICE_AQ_THRESHOLD_M     (0x7FFFF << ICE_AQ_THRESHOLD_S)
+
+       __le32 storm_ctrl_ctrl;
+       /* Bit 0: MDIPW - Drop Multicast packets in previous window
+        * Bit 1: MDICW - Drop multicast packets in current window
+        * Bit 2: BDIPW - Drop broadcast packets in previous window
+        * Bit 3: BDICW - Drop broadcast packets in current window
+        */
+#define ICE_AQ_STORM_CTRL_MDIPW_DROP_MULTICAST BIT(0)
+#define ICE_AQ_STORM_CTRL_MDICW_DROP_MULTICAST BIT(1)
+#define ICE_AQ_STORM_CTRL_BDIPW_DROP_MULTICAST BIT(2)
+#define ICE_AQ_STORM_CTRL_BDICW_DROP_MULTICAST BIT(3)
+       /* Bit 7:5 : Reserved */
+       /* Bit 27:8 : Interval - BSC/MSC Time-interval specification: The
+        * interval size for applying ingress broadcast or multicast storm
+        * control.
+        */
+#define ICE_AQ_STORM_BSC_MSC_TIME_INTERVAL_S   8
+#define ICE_AQ_STORM_BSC_MSC_TIME_INTERVAL_M   \
+                       (0xFFFFF << ICE_AQ_STORM_BSC_MSC_TIME_INTERVAL_S)
+       __le32 reserved;
+};
+
 
 #define ICE_MAX_NUM_RECIPES 64
 
+/* Add/Get Recipe (indirect 0x0290/0x0292)*/
+struct ice_aqc_add_get_recipe {
+       __le16 num_sub_recipes; /* Input in Add cmd, Output in Get cmd */
+       __le16 return_index;    /* Input, used for Get cmd only */
+       u8 reserved[4];
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+struct ice_aqc_recipe_content {
+       u8 rid;
+#define ICE_AQ_RECIPE_ID_S             0
+#define ICE_AQ_RECIPE_ID_M             (0x3F << ICE_AQ_RECIPE_ID_S)
+#define ICE_AQ_RECIPE_ID_IS_ROOT       BIT(7)
+#define ICE_AQ_SW_ID_LKUP_IDX          0
+       u8 lkup_indx[5];
+#define ICE_AQ_RECIPE_LKUP_DATA_S      0
+#define ICE_AQ_RECIPE_LKUP_DATA_M      (0x3F << ICE_AQ_RECIPE_LKUP_DATA_S)
+#define ICE_AQ_RECIPE_LKUP_IGNORE      BIT(7)
+#define ICE_AQ_SW_ID_LKUP_MASK         0x00FF
+       __le16 mask[5];
+       u8 result_indx;
+#define ICE_AQ_RECIPE_RESULT_DATA_S    0
+#define ICE_AQ_RECIPE_RESULT_DATA_M    (0x3F << ICE_AQ_RECIPE_RESULT_DATA_S)
+#define ICE_AQ_RECIPE_RESULT_EN                BIT(7)
+       u8 rsvd0[3];
+       u8 act_ctrl_join_priority;
+       u8 act_ctrl_fwd_priority;
+#define ICE_AQ_RECIPE_FWD_PRIORITY_S   0
+#define ICE_AQ_RECIPE_FWD_PRIORITY_M   (0xF << ICE_AQ_RECIPE_FWD_PRIORITY_S)
+       u8 act_ctrl;
+#define ICE_AQ_RECIPE_ACT_NEED_PASS_L2 BIT(0)
+#define ICE_AQ_RECIPE_ACT_ALLOW_PASS_L2        BIT(1)
+#define ICE_AQ_RECIPE_ACT_INV_ACT      BIT(2)
+#define ICE_AQ_RECIPE_ACT_PRUNE_INDX_S 4
+#define ICE_AQ_RECIPE_ACT_PRUNE_INDX_M (0x3 << ICE_AQ_RECIPE_ACT_PRUNE_INDX_S)
+       u8 rsvd1;
+       __le32 dflt_act;
+#define ICE_AQ_RECIPE_DFLT_ACT_S       0
+#define ICE_AQ_RECIPE_DFLT_ACT_M       (0x7FFFF << ICE_AQ_RECIPE_DFLT_ACT_S)
+#define ICE_AQ_RECIPE_DFLT_ACT_VALID   BIT(31)
+};
+
+struct ice_aqc_recipe_data_elem {
+       u8 recipe_indx;
+       u8 resp_bits;
+#define ICE_AQ_RECIPE_WAS_UPDATED      BIT(0)
+       u8 rsvd0[2];
+       u8 recipe_bitmap[8];
+       u8 rsvd1[4];
+       struct ice_aqc_recipe_content content;
+       u8 rsvd2[20];
+};
+
+/* This struct contains a number of entries as per the
+ * num_sub_recipes in the command
+ */
+struct ice_aqc_add_get_recipe_data {
+       struct ice_aqc_recipe_data_elem recipe[1];
+};
+
+/* Set/Get Recipes to Profile Association (direct 0x0291/0x0293) */
+struct ice_aqc_recipe_to_profile {
+       __le16 profile_id;
+       u8 rsvd[6];
+       ice_declare_bitmap(recipe_assoc, ICE_MAX_NUM_RECIPES);
+};
 
 /* Add/Update/Remove/Get switch rules (indirect 0x02A0, 0x02A1, 0x02A2, 0x02A3)
  */
@@ -720,6 +974,40 @@ struct ice_aqc_sw_rules_elem {
 #pragma pack()
 
 
+/* PFC Ignore (direct 0x0301)
+ * The command and response use the same descriptor structure
+ */
+struct ice_aqc_pfc_ignore {
+       u8      tc_bitmap;
+       u8      cmd_flags; /* unused in response */
+#define ICE_AQC_PFC_IGNORE_SET         BIT(7)
+#define ICE_AQC_PFC_IGNORE_CLEAR       0
+       u8      reserved[14];
+};
+
+/* Set PFC Mode (direct 0x0303)
+ * Query PFC Mode (direct 0x0302)
+ */
+struct ice_aqc_set_query_pfc_mode {
+       u8      pfc_mode;
+/* For Set Command response, reserved in all other cases */
+#define ICE_AQC_PFC_NOT_CONFIGURED     0
+/* For Query Command response, reserved in all other cases */
+#define ICE_AQC_DCB_DIS                0
+#define ICE_AQC_PFC_VLAN_BASED_PFC     1
+#define ICE_AQC_PFC_DSCP_BASED_PFC     2
+       u8      rsvd[15];
+};
+
+/* Set DCB Parameters (direct 0x0306) */
+struct ice_aqc_set_dcb_params {
+       u8 cmd_flags; /* unused in response */
+#define ICE_AQC_LINK_UP_DCB_CFG    BIT(0)
+       u8 valid_flags; /* unused in response */
+#define ICE_AQC_LINK_UP_DCB_CFG_VALID    BIT(0)
+       u8 rsvd[14];
+};
+
 
 /* Get Default Topology (indirect 0x0400) */
 struct ice_aqc_get_topo {
@@ -853,6 +1141,31 @@ struct ice_aqc_delete_elem {
 };
 
 
+/* Query Port ETS (indirect 0x040E)
+ *
+ * This indirect command is used to query port TC node configuration.
+ */
+struct ice_aqc_query_port_ets {
+       __le32 port_teid;
+       __le32 reserved;
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+struct ice_aqc_port_ets_elem {
+       u8 tc_valid_bits;
+       u8 reserved[3];
+       /* 3 bits for UP per TC 0-7, 4th byte reserved */
+       __le32 up2tc;
+       u8 tc_bw_share[8];
+       __le32 port_eir_prof_id;
+       __le32 port_cir_prof_id;
+       /* 3 bits per Node priority to TC 0-7, 4th byte reserved */
+       __le32 tc_node_prio;
+#define ICE_TC_NODE_PRIO_S     0x4
+       u8 reserved1[4];
+       __le32 tc_node_teid[8]; /* Used for response, reserved in command */
+};
 
 
 /* Rate limiting profile for
@@ -1154,8 +1467,9 @@ struct ice_aqc_set_phy_cfg_data {
        __le64 phy_type_low; /* Use values from ICE_PHY_TYPE_LOW_* */
        __le64 phy_type_high; /* Use values from ICE_PHY_TYPE_HIGH_* */
        u8 caps;
-#define ICE_AQ_PHY_ENA_TX_PAUSE_ABILITY                BIT(0)
-#define ICE_AQ_PHY_ENA_RX_PAUSE_ABILITY                BIT(1)
+#define ICE_AQ_PHY_ENA_VALID_MASK      MAKEMASK(0xef, 0)
+#define ICE_AQ_PHY_ENA_TX_PAUSE_ABILITY        BIT(0)
+#define ICE_AQ_PHY_ENA_RX_PAUSE_ABILITY        BIT(1)
 #define ICE_AQ_PHY_ENA_LOW_POWER       BIT(2)
 #define ICE_AQ_PHY_ENA_LINK            BIT(3)
 #define ICE_AQ_PHY_ENA_AUTO_LINK_UPDT  BIT(5)
@@ -1169,6 +1483,25 @@ struct ice_aqc_set_phy_cfg_data {
 };
 
 
+/* Set MAC Config command data structure (direct 0x0603) */
+struct ice_aqc_set_mac_cfg {
+       __le16 max_frame_size;
+       u8 params;
+#define ICE_AQ_SET_MAC_PACE_S          3
+#define ICE_AQ_SET_MAC_PACE_M          (0xF << ICE_AQ_SET_MAC_PACE_S)
+#define ICE_AQ_SET_MAC_PACE_TYPE_M     BIT(7)
+#define ICE_AQ_SET_MAC_PACE_TYPE_RATE  0
+#define ICE_AQ_SET_MAC_PACE_TYPE_FIXED ICE_AQ_SET_MAC_PACE_TYPE_M
+       u8 tx_tmr_priority;
+       __le16 tx_tmr_value;
+       __le16 fc_refresh_threshold;
+       u8 drop_opts;
+#define ICE_AQ_SET_MAC_AUTO_DROP_MASK          BIT(0)
+#define ICE_AQ_SET_MAC_AUTO_DROP_NONE          0
+#define ICE_AQ_SET_MAC_AUTO_DROP_BLOCKING_PKTS BIT(0)
+       u8 reserved[7];
+};
+
 
 /* Restart AN command data structure (direct 0x0605)
  * Also used for response, with only the lport_num field present.
@@ -1206,7 +1539,12 @@ struct ice_aqc_get_link_status_data {
 #define ICE_AQ_LINK_TOPO_CONFLICT      BIT(0)
 #define ICE_AQ_LINK_MEDIA_CONFLICT     BIT(1)
 #define ICE_AQ_LINK_TOPO_CORRUPT       BIT(2)
-       u8 reserved1;
+#define ICE_AQ_LINK_TOPO_UNREACH_PRT   BIT(4)
+#define ICE_AQ_LINK_TOPO_UNDRUTIL_PRT  BIT(5)
+#define ICE_AQ_LINK_TOPO_UNDRUTIL_MEDIA        BIT(6)
+#define ICE_AQ_LINK_TOPO_UNSUPP_MEDIA  BIT(7)
+       u8 link_cfg_err;
+#define ICE_AQ_LINK_CFG_ERR            BIT(0)
        u8 link_info;
 #define ICE_AQ_LINK_UP                 BIT(0)  /* Link Status */
 #define ICE_AQ_LINK_FAULT              BIT(1)
@@ -1228,7 +1566,7 @@ struct ice_aqc_get_link_status_data {
        u8 ext_info;
 #define ICE_AQ_LINK_PHY_TEMP_ALARM     BIT(0)
 #define ICE_AQ_LINK_EXCESSIVE_ERRORS   BIT(1)  /* Excessive Link Errors */
-       /* Port TX Suspended */
+       /* Port Tx Suspended */
 #define ICE_AQ_LINK_TX_S               2
 #define ICE_AQ_LINK_TX_M               (0x03 << ICE_AQ_LINK_TX_S)
 #define ICE_AQ_LINK_TX_ACTIVE          0
@@ -1380,6 +1718,157 @@ struct ice_aqc_nvm_checksum {
 
 
 
+/* Get LLDP MIB (indirect 0x0A00)
+ * Note: This is also used by the LLDP MIB Change Event (0x0A01)
+ * as the format is the same.
+ */
+struct ice_aqc_lldp_get_mib {
+       u8 type;
+#define ICE_AQ_LLDP_MIB_TYPE_S                 0
+#define ICE_AQ_LLDP_MIB_TYPE_M                 (0x3 << ICE_AQ_LLDP_MIB_TYPE_S)
+#define ICE_AQ_LLDP_MIB_LOCAL                  0
+#define ICE_AQ_LLDP_MIB_REMOTE                 1
+#define ICE_AQ_LLDP_MIB_LOCAL_AND_REMOTE       2
+#define ICE_AQ_LLDP_BRID_TYPE_S                        2
+#define ICE_AQ_LLDP_BRID_TYPE_M                        (0x3 << ICE_AQ_LLDP_BRID_TYPE_S)
+#define ICE_AQ_LLDP_BRID_TYPE_NEAREST_BRID     0
+#define ICE_AQ_LLDP_BRID_TYPE_NON_TPMR         1
+/* Tx pause flags in the 0xA01 event use ICE_AQ_LLDP_TX_* */
+#define ICE_AQ_LLDP_TX_S                       0x4
+#define ICE_AQ_LLDP_TX_M                       (0x03 << ICE_AQ_LLDP_TX_S)
+#define ICE_AQ_LLDP_TX_ACTIVE                  0
+#define ICE_AQ_LLDP_TX_SUSPENDED               1
+#define ICE_AQ_LLDP_TX_FLUSHED                 3
+/* The following bytes are reserved for the Get LLDP MIB command (0x0A00)
+ * and in the LLDP MIB Change Event (0x0A01). They are valid for the
+ * Get LLDP MIB (0x0A00) response only.
+ */
+       u8 reserved1;
+       __le16 local_len;
+       __le16 remote_len;
+       u8 reserved2[2];
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+/* Configure LLDP MIB Change Event (direct 0x0A01) */
+/* For MIB Change Event use ice_aqc_lldp_get_mib structure above */
+struct ice_aqc_lldp_set_mib_change {
+       u8 command;
+#define ICE_AQ_LLDP_MIB_UPDATE_ENABLE          0x0
+#define ICE_AQ_LLDP_MIB_UPDATE_DIS             0x1
+       u8 reserved[15];
+};
+
+/* Add LLDP TLV (indirect 0x0A02)
+ * Delete LLDP TLV (indirect 0x0A04)
+ */
+struct ice_aqc_lldp_add_delete_tlv {
+       u8 type; /* only nearest bridge and non-TPMR from 0x0A00 */
+       u8 reserved1[1];
+       __le16 len;
+       u8 reserved2[4];
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+/* Update LLDP TLV (indirect 0x0A03) */
+struct ice_aqc_lldp_update_tlv {
+       u8 type; /* only nearest bridge and non-TPMR from 0x0A00 */
+       u8 reserved;
+       __le16 old_len;
+       __le16 new_offset;
+       __le16 new_len;
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+/* Stop LLDP (direct 0x0A05) */
+struct ice_aqc_lldp_stop {
+       u8 command;
+#define ICE_AQ_LLDP_AGENT_STATE_MASK   BIT(0)
+#define ICE_AQ_LLDP_AGENT_STOP         0x0
+#define ICE_AQ_LLDP_AGENT_SHUTDOWN     ICE_AQ_LLDP_AGENT_STATE_MASK
+#define ICE_AQ_LLDP_AGENT_PERSIST_DIS  BIT(1)
+       u8 reserved[15];
+};
+
+/* Start LLDP (direct 0x0A06) */
+struct ice_aqc_lldp_start {
+       u8 command;
+#define ICE_AQ_LLDP_AGENT_START                BIT(0)
+#define ICE_AQ_LLDP_AGENT_PERSIST_ENA  BIT(1)
+       u8 reserved[15];
+};
+
+/* Get CEE DCBX Oper Config (0x0A07)
+ * The command uses the generic descriptor struct and
+ * returns the struct below as an indirect response.
+ */
+struct ice_aqc_get_cee_dcb_cfg_resp {
+       u8 oper_num_tc;
+       u8 oper_prio_tc[4];
+       u8 oper_tc_bw[8];
+       u8 oper_pfc_en;
+       __le16 oper_app_prio;
+#define ICE_AQC_CEE_APP_FCOE_S         0
+#define ICE_AQC_CEE_APP_FCOE_M         (0x7 << ICE_AQC_CEE_APP_FCOE_S)
+#define ICE_AQC_CEE_APP_ISCSI_S                3
+#define ICE_AQC_CEE_APP_ISCSI_M                (0x7 << ICE_AQC_CEE_APP_ISCSI_S)
+#define ICE_AQC_CEE_APP_FIP_S          8
+#define ICE_AQC_CEE_APP_FIP_M          (0x7 << ICE_AQC_CEE_APP_FIP_S)
+       __le32 tlv_status;
+#define ICE_AQC_CEE_PG_STATUS_S                0
+#define ICE_AQC_CEE_PG_STATUS_M                (0x7 << ICE_AQC_CEE_PG_STATUS_S)
+#define ICE_AQC_CEE_PFC_STATUS_S       3
+#define ICE_AQC_CEE_PFC_STATUS_M       (0x7 << ICE_AQC_CEE_PFC_STATUS_S)
+#define ICE_AQC_CEE_FCOE_STATUS_S      8
+#define ICE_AQC_CEE_FCOE_STATUS_M      (0x7 << ICE_AQC_CEE_FCOE_STATUS_S)
+#define ICE_AQC_CEE_ISCSI_STATUS_S     11
+#define ICE_AQC_CEE_ISCSI_STATUS_M     (0x7 << ICE_AQC_CEE_ISCSI_STATUS_S)
+#define ICE_AQC_CEE_FIP_STATUS_S       16
+#define ICE_AQC_CEE_FIP_STATUS_M       (0x7 << ICE_AQC_CEE_FIP_STATUS_S)
+       u8 reserved[12];
+};
+
+/* Set Local LLDP MIB (indirect 0x0A08)
+ * Used to replace the local MIB of a given LLDP agent. e.g. DCBx
+ */
+struct ice_aqc_lldp_set_local_mib {
+       u8 type;
+#define SET_LOCAL_MIB_TYPE_DCBX_M              BIT(0)
+#define SET_LOCAL_MIB_TYPE_LOCAL_MIB           0
+#define SET_LOCAL_MIB_TYPE_CEE_M               BIT(1)
+#define SET_LOCAL_MIB_TYPE_CEE_WILLING         0
+#define SET_LOCAL_MIB_TYPE_CEE_NON_WILLING     SET_LOCAL_MIB_TYPE_CEE_M
+       u8 reserved0;
+       __le16 length;
+       u8 reserved1[4];
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+struct ice_aqc_lldp_set_local_mib_resp {
+       u8 status;
+#define SET_LOCAL_MIB_RESP_EVENT_M             BIT(0)
+#define SET_LOCAL_MIB_RESP_MIB_CHANGE_SILENT   0
+#define SET_LOCAL_MIB_RESP_MIB_CHANGE_EVENT    SET_LOCAL_MIB_RESP_EVENT_M
+       u8 reserved[15];
+};
+
+/* Stop/Start LLDP Agent (direct 0x0A09)
+ * Used for stopping/starting specific LLDP agent. e.g. DCBx.
+ * The same structure is used for the response, with the command field
+ * being used as the status field.
+ */
+struct ice_aqc_lldp_stop_start_specific_agent {
+       u8 command;
+#define ICE_AQC_START_STOP_AGENT_M             BIT(0)
+#define ICE_AQC_START_STOP_AGENT_STOP_DCBX     0
+#define ICE_AQC_START_STOP_AGENT_START_DCBX    ICE_AQC_START_STOP_AGENT_M
+       u8 reserved[15];
+};
+
 
 /* Get/Set RSS key (indirect 0x0B04/0x0B02) */
 struct ice_aqc_get_set_rss_key {
@@ -1395,7 +1884,20 @@ struct ice_aqc_get_set_rss_key {
 
 #define ICE_AQC_GET_SET_RSS_KEY_DATA_RSS_KEY_SIZE      0x28
 #define ICE_AQC_GET_SET_RSS_KEY_DATA_HASH_KEY_SIZE     0xC
+#define ICE_GET_SET_RSS_KEY_EXTEND_KEY_SIZE \
+                               (ICE_AQC_GET_SET_RSS_KEY_DATA_RSS_KEY_SIZE + \
+                                ICE_AQC_GET_SET_RSS_KEY_DATA_HASH_KEY_SIZE)
 
+/**
+ * struct ice_aqc_get_set_rss_keys - Get/Set RSS hash key command buffer
+ * @standard_rss_key: 40 most significant bytes of hash key
+ * @extended_hash_key: 12 least significant bytes of hash key
+ *
+ * Set/Get 40 byte hash key using standard_rss_key field, and set
+ * extended_hash_key field to zero. Set/Get 52 byte hash key using
+ * standard_rss_key field for 40 most significant bytes and the
+ * extended_hash_key field for the 12 least significant bytes of hash key.
+ */
 struct ice_aqc_get_set_rss_keys {
        u8 standard_rss_key[ICE_AQC_GET_SET_RSS_KEY_DATA_RSS_KEY_SIZE];
        u8 extended_hash_key[ICE_AQC_GET_SET_RSS_KEY_DATA_HASH_KEY_SIZE];
@@ -1438,10 +1940,20 @@ struct ice_aqc_get_set_rss_lut {
 };
 
 
+/* Clear FD Table Command (direct, 0x0B06) */
+struct ice_aqc_clear_fd_table {
+       u8 clear_type;
+#define CL_FD_VM_VF_TYPE_VSI_IDX       1
+#define CL_FD_VM_VF_TYPE_PF_IDX                2
+       u8 rsvd;
+       __le16 vsi_index;
+       u8 reserved[12];
+};
+
 
 
 
-/* Add TX LAN Queues (indirect 0x0C30) */
+/* Add Tx LAN Queues (indirect 0x0C30) */
 struct ice_aqc_add_txqs {
        u8 num_qgrps;
        u8 reserved[3];
@@ -1451,7 +1963,7 @@ struct ice_aqc_add_txqs {
 };
 
 
-/* This is the descriptor of each queue entry for the Add TX LAN Queues
+/* This is the descriptor of each queue entry for the Add Tx LAN Queues
  * command (0x0C30). Only used within struct ice_aqc_add_tx_qgrp.
  */
 struct ice_aqc_add_txqs_perq {
@@ -1464,7 +1976,7 @@ struct ice_aqc_add_txqs_perq {
 };
 
 
-/* The format of the command buffer for Add TX LAN Queues (0x0C30)
+/* The format of the command buffer for Add Tx LAN Queues (0x0C30)
  * is an array of the following structs. Please note that the length of
  * each struct ice_aqc_add_tx_qgrp is variable due
  * to the variable number of queues in each group!
@@ -1477,7 +1989,7 @@ struct ice_aqc_add_tx_qgrp {
 };
 
 
-/* Disable TX LAN Queues (indirect 0x0C31) */
+/* Disable Tx LAN Queues (indirect 0x0C31) */
 struct ice_aqc_dis_txqs {
        u8 cmd_type;
 #define ICE_AQC_Q_DIS_CMD_S            0
@@ -1500,7 +2012,7 @@ struct ice_aqc_dis_txqs {
 };
 
 
-/* The buffer for Disable TX LAN Queues (indirect 0x0C31)
+/* The buffer for Disable Tx LAN Queues (indirect 0x0C31)
  * contains the following structures, arrayed one after the
  * other.
  * Note: Since the q_id is 16 bits wide, if the
@@ -1528,7 +2040,7 @@ struct ice_aqc_dis_txq {
 };
 
 
-/* TX LAN Queues Cleanup Event (0x0C31) */
+/* Tx LAN Queues Cleanup Event (0x0C31) */
 struct ice_aqc_txqs_cleanup {
        __le16 caller_opc;
        __le16 cmd_tag;
@@ -1536,7 +2048,7 @@ struct ice_aqc_txqs_cleanup {
 };
 
 
-/* Move / Reconfigure TX Queues (indirect 0x0C32) */
+/* Move / Reconfigure Tx Queues (indirect 0x0C32) */
 struct ice_aqc_move_txqs {
        u8 cmd_type;
 #define ICE_AQC_Q_CMD_TYPE_S           0
@@ -1557,7 +2069,7 @@ struct ice_aqc_move_txqs {
 };
 
 
-/* This is the descriptor of each queue entry for the move TX LAN Queues
+/* This is the descriptor of each queue entry for the move Tx LAN Queues
  * command (0x0C32).
  */
 struct ice_aqc_move_txqs_elem {
@@ -1576,6 +2088,57 @@ struct ice_aqc_move_txqs_data {
 
 
 
+/* Download Package (indirect 0x0C40) */
+/* Also used for Update Package (indirect 0x0C42) */
+struct ice_aqc_download_pkg {
+       u8 flags;
+#define ICE_AQC_DOWNLOAD_PKG_LAST_BUF  0x01
+       u8 reserved[3];
+       __le32 reserved1;
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+struct ice_aqc_download_pkg_resp {
+       __le32 error_offset;
+       __le32 error_info;
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+/* Get Package Info List (indirect 0x0C43) */
+struct ice_aqc_get_pkg_info_list {
+       __le32 reserved1;
+       __le32 reserved2;
+       __le32 addr_high;
+       __le32 addr_low;
+};
+
+/* Version format for packages */
+struct ice_pkg_ver {
+       u8 major;
+       u8 minor;
+       u8 update;
+       u8 draft;
+};
+
+#define ICE_PKG_NAME_SIZE      32
+
+struct ice_aqc_get_pkg_info {
+       struct ice_pkg_ver ver;
+       char name[ICE_PKG_NAME_SIZE];
+       u8 is_in_nvm;
+       u8 is_active;
+       u8 is_active_at_boot;
+       u8 is_modified;
+};
+
+/* Get Package Info List response buffer format (0x0C43) */
+struct ice_aqc_get_pkg_info_resp {
+       __le32 count;
+       struct ice_aqc_get_pkg_info pkg_info[1];
+};
+
 
 
 
@@ -1634,6 +2197,7 @@ enum ice_aqc_fw_logging_mod {
        ICE_AQC_FW_LOG_ID_WATCHDOG,
        ICE_AQC_FW_LOG_ID_TASK_DISPATCH,
        ICE_AQC_FW_LOG_ID_MNG,
+       ICE_AQC_FW_LOG_ID_SYNCE,
        ICE_AQC_FW_LOG_ID_MAX,
 };
 
@@ -1697,11 +2261,15 @@ struct ice_aq_desc {
                u8 raw[16];
                struct ice_aqc_generic generic;
                struct ice_aqc_get_ver get_ver;
+               struct ice_aqc_driver_ver driver_ver;
                struct ice_aqc_q_shutdown q_shutdown;
                struct ice_aqc_req_res res_owner;
                struct ice_aqc_manage_mac_read mac_read;
                struct ice_aqc_manage_mac_write mac_write;
                struct ice_aqc_clear_pxe clear_pxe;
+               struct ice_aqc_config_no_drop_policy no_drop;
+               struct ice_aqc_add_update_mir_rule add_update_rule;
+               struct ice_aqc_delete_mir_rule del_rule;
                struct ice_aqc_list_caps get_cap;
                struct ice_aqc_get_phy_caps get_phy;
                struct ice_aqc_set_phy_cfg set_phy;
@@ -1709,27 +2277,48 @@ struct ice_aq_desc {
                struct ice_aqc_set_port_id_led set_port_id_led;
                struct ice_aqc_get_sw_cfg get_sw_conf;
                struct ice_aqc_sw_rules sw_rules;
+               struct ice_aqc_storm_cfg storm_conf;
+               struct ice_aqc_add_get_recipe add_get_recipe;
+               struct ice_aqc_recipe_to_profile recipe_to_profile;
                struct ice_aqc_get_topo get_topo;
                struct ice_aqc_sched_elem_cmd sched_elem_cmd;
                struct ice_aqc_query_txsched_res query_sched_res;
                struct ice_aqc_query_node_to_root query_node_to_root;
                struct ice_aqc_cfg_l2_node_cgd cfg_l2_node_cgd;
+               struct ice_aqc_query_port_ets port_ets;
                struct ice_aqc_rl_profile rl_profile;
-
                struct ice_aqc_nvm nvm;
                struct ice_aqc_nvm_cfg nvm_cfg;
                struct ice_aqc_nvm_checksum nvm_checksum;
+               struct ice_aqc_pfc_ignore pfc_ignore;
+               struct ice_aqc_set_query_pfc_mode set_query_pfc_mode;
+               struct ice_aqc_set_dcb_params set_dcb_params;
+               struct ice_aqc_lldp_get_mib lldp_get_mib;
+               struct ice_aqc_lldp_set_mib_change lldp_set_event;
+               struct ice_aqc_lldp_add_delete_tlv lldp_add_delete_tlv;
+               struct ice_aqc_lldp_update_tlv lldp_update_tlv;
+               struct ice_aqc_lldp_stop lldp_stop;
+               struct ice_aqc_lldp_start lldp_start;
+               struct ice_aqc_lldp_set_local_mib lldp_set_mib;
+               struct ice_aqc_lldp_stop_start_specific_agent lldp_agent_ctrl;
                struct ice_aqc_get_set_rss_lut get_set_rss_lut;
                struct ice_aqc_get_set_rss_key get_set_rss_key;
+               struct ice_aqc_clear_fd_table clear_fd_table;
                struct ice_aqc_add_txqs add_txqs;
                struct ice_aqc_dis_txqs dis_txqs;
                struct ice_aqc_txqs_cleanup txqs_cleanup;
                struct ice_aqc_add_get_update_free_vsi vsi_cmd;
                struct ice_aqc_add_update_free_vsi_resp add_update_free_vsi_res;
+               struct ice_aqc_get_vsi_resp get_vsi_resp;
+               struct ice_aqc_download_pkg download_pkg;
+               struct ice_aqc_get_pkg_info_list get_pkg_info_list;
                struct ice_aqc_fw_logging fw_logging;
                struct ice_aqc_get_clear_fw_log get_clear_fw_log;
                struct ice_aqc_set_mac_lb set_mac_lb;
                struct ice_aqc_alloc_free_res_cmd sw_res_ctrl;
+               struct ice_aqc_get_res_alloc get_res;
+               struct ice_aqc_get_allocd_res_desc get_res_desc;
+               struct ice_aqc_set_mac_cfg set_mac_cfg;
                struct ice_aqc_set_event_mask set_event_mask;
                struct ice_aqc_get_link_status get_link_status;
        } params;
@@ -1825,6 +2414,8 @@ enum ice_adminq_opc {
        /* PXE */
        ice_aqc_opc_clear_pxe_mode                      = 0x0110,
 
+       ice_aqc_opc_config_no_drop_policy               = 0x0112,
+
        /* internal switch commands */
        ice_aqc_opc_get_sw_cfg                          = 0x0200,
 
@@ -1840,7 +2431,19 @@ enum ice_adminq_opc {
        ice_aqc_opc_get_vsi_params                      = 0x0212,
        ice_aqc_opc_free_vsi                            = 0x0213,
 
+       /* Mirroring rules - add/update, delete */
+       ice_aqc_opc_add_update_mir_rule                 = 0x0260,
+       ice_aqc_opc_del_mir_rule                        = 0x0261,
+
+       /* storm configuration */
+       ice_aqc_opc_set_storm_cfg                       = 0x0280,
+       ice_aqc_opc_get_storm_cfg                       = 0x0281,
 
+       /* recipe commands */
+       ice_aqc_opc_add_recipe                          = 0x0290,
+       ice_aqc_opc_recipe_to_profile                   = 0x0291,
+       ice_aqc_opc_get_recipe                          = 0x0292,
+       ice_aqc_opc_get_recipe_to_profile               = 0x0293,
 
        /* switch rules population commands */
        ice_aqc_opc_add_sw_rules                        = 0x02A0,
@@ -1849,6 +2452,11 @@ enum ice_adminq_opc {
        ice_aqc_opc_get_sw_rules                        = 0x02A3,
        ice_aqc_opc_clear_pf_cfg                        = 0x02A4,
 
+       /* DCB commands */
+       ice_aqc_opc_pfc_ignore                          = 0x0301,
+       ice_aqc_opc_query_pfc_mode                      = 0x0302,
+       ice_aqc_opc_set_pfc_mode                        = 0x0303,
+       ice_aqc_opc_set_dcb_params                      = 0x0306,
 
        /* transmit scheduler commands */
        ice_aqc_opc_get_dflt_topo                       = 0x0400,
@@ -1858,8 +2466,7 @@ enum ice_adminq_opc {
        ice_aqc_opc_move_sched_elems                    = 0x0408,
        ice_aqc_opc_suspend_sched_elems                 = 0x0409,
        ice_aqc_opc_resume_sched_elems                  = 0x040A,
-       ice_aqc_opc_suspend_sched_traffic               = 0x040B,
-       ice_aqc_opc_resume_sched_traffic                = 0x040C,
+       ice_aqc_opc_query_port_ets                      = 0x040E,
        ice_aqc_opc_delete_sched_elems                  = 0x040F,
        ice_aqc_opc_add_rl_profiles                     = 0x0410,
        ice_aqc_opc_query_rl_profiles                   = 0x0411,
@@ -1890,19 +2497,36 @@ enum ice_adminq_opc {
        ice_aqc_opc_nvm_cfg_write                       = 0x0705,
        ice_aqc_opc_nvm_checksum                        = 0x0706,
 
+       /* LLDP commands */
+       ice_aqc_opc_lldp_get_mib                        = 0x0A00,
+       ice_aqc_opc_lldp_set_mib_change                 = 0x0A01,
+       ice_aqc_opc_lldp_add_tlv                        = 0x0A02,
+       ice_aqc_opc_lldp_update_tlv                     = 0x0A03,
+       ice_aqc_opc_lldp_delete_tlv                     = 0x0A04,
+       ice_aqc_opc_lldp_stop                           = 0x0A05,
+       ice_aqc_opc_lldp_start                          = 0x0A06,
+       ice_aqc_opc_get_cee_dcb_cfg                     = 0x0A07,
+       ice_aqc_opc_lldp_set_local_mib                  = 0x0A08,
+       ice_aqc_opc_lldp_stop_start_specific_agent      = 0x0A09,
 
        /* RSS commands */
        ice_aqc_opc_set_rss_key                         = 0x0B02,
        ice_aqc_opc_set_rss_lut                         = 0x0B03,
        ice_aqc_opc_get_rss_key                         = 0x0B04,
        ice_aqc_opc_get_rss_lut                         = 0x0B05,
+       ice_aqc_opc_clear_fd_table                      = 0x0B06,
 
-       /* TX queue handling commands/events */
+       /* Tx queue handling commands/events */
        ice_aqc_opc_add_txqs                            = 0x0C30,
        ice_aqc_opc_dis_txqs                            = 0x0C31,
        ice_aqc_opc_txqs_cleanup                        = 0x0C31,
        ice_aqc_opc_move_recfg_txqs                     = 0x0C32,
 
+       /* package commands */
+       ice_aqc_opc_download_pkg                        = 0x0C40,
+       ice_aqc_opc_upload_section                      = 0x0C41,
+       ice_aqc_opc_update_pkg                          = 0x0C42,
+       ice_aqc_opc_get_pkg_info_list                   = 0x0C43,