1 /* Broadcom NetXtreme-C/E network driver. 2 * 3 * Copyright (c) 2014-2016 Broadcom Corporation 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation. 8 */ 9 10 #ifndef BNXT_HSI_H 11 #define BNXT_HSI_H 12 13 /* per-context HW statistics -- chip view */ 14 struct ctx_hw_stats { 15 __le64 rx_ucast_pkts; 16 __le64 rx_mcast_pkts; 17 __le64 rx_bcast_pkts; 18 __le64 rx_discard_pkts; 19 __le64 rx_drop_pkts; 20 __le64 rx_ucast_bytes; 21 __le64 rx_mcast_bytes; 22 __le64 rx_bcast_bytes; 23 __le64 tx_ucast_pkts; 24 __le64 tx_mcast_pkts; 25 __le64 tx_bcast_pkts; 26 __le64 tx_discard_pkts; 27 __le64 tx_drop_pkts; 28 __le64 tx_ucast_bytes; 29 __le64 tx_mcast_bytes; 30 __le64 tx_bcast_bytes; 31 __le64 tpa_pkts; 32 __le64 tpa_bytes; 33 __le64 tpa_events; 34 __le64 tpa_aborts; 35 }; 36 37 /* Statistics Ejection Buffer Completion Record (16 bytes) */ 38 struct eject_cmpl { 39 __le16 type; 40 #define EJECT_CMPL_TYPE_MASK 0x3fUL 41 #define EJECT_CMPL_TYPE_SFT 0 42 #define EJECT_CMPL_TYPE_STAT_EJECT 0x1aUL 43 __le16 len; 44 __le32 opaque; 45 __le32 v; 46 #define EJECT_CMPL_V 0x1UL 47 __le32 unused_2; 48 }; 49 50 /* HWRM Completion Record (16 bytes) */ 51 struct hwrm_cmpl { 52 __le16 type; 53 #define HWRM_CMPL_TYPE_MASK 0x3fUL 54 #define HWRM_CMPL_TYPE_SFT 0 55 #define HWRM_CMPL_TYPE_HWRM_DONE 0x20UL 56 __le16 sequence_id; 57 __le32 unused_1; 58 __le32 v; 59 #define HWRM_CMPL_V 0x1UL 60 __le32 unused_3; 61 }; 62 63 /* HWRM Forwarded Request (16 bytes) */ 64 struct hwrm_fwd_req_cmpl { 65 __le16 req_len_type; 66 #define HWRM_FWD_REQ_CMPL_TYPE_MASK 0x3fUL 67 #define HWRM_FWD_REQ_CMPL_TYPE_SFT 0 68 #define HWRM_FWD_REQ_CMPL_TYPE_HWRM_FWD_REQ 0x22UL 69 #define HWRM_FWD_REQ_CMPL_REQ_LEN_MASK 0xffc0UL 70 #define HWRM_FWD_REQ_CMPL_REQ_LEN_SFT 6 71 __le16 source_id; 72 __le32 unused_0; 73 __le32 req_buf_addr_v[2]; 74 #define HWRM_FWD_REQ_CMPL_V 0x1UL 75 #define HWRM_FWD_REQ_CMPL_REQ_BUF_ADDR_MASK 0xfffffffeUL 76 #define HWRM_FWD_REQ_CMPL_REQ_BUF_ADDR_SFT 1 77 }; 78 79 /* HWRM Forwarded Response (16 bytes) */ 80 struct hwrm_fwd_resp_cmpl { 81 __le16 type; 82 #define HWRM_FWD_RESP_CMPL_TYPE_MASK 0x3fUL 83 #define HWRM_FWD_RESP_CMPL_TYPE_SFT 0 84 #define HWRM_FWD_RESP_CMPL_TYPE_HWRM_FWD_RESP 0x24UL 85 __le16 source_id; 86 __le16 resp_len; 87 __le16 unused_1; 88 __le32 resp_buf_addr_v[2]; 89 #define HWRM_FWD_RESP_CMPL_V 0x1UL 90 #define HWRM_FWD_RESP_CMPL_RESP_BUF_ADDR_MASK 0xfffffffeUL 91 #define HWRM_FWD_RESP_CMPL_RESP_BUF_ADDR_SFT 1 92 }; 93 94 /* HWRM Asynchronous Event Completion Record (16 bytes) */ 95 struct hwrm_async_event_cmpl { 96 __le16 type; 97 #define HWRM_ASYNC_EVENT_CMPL_TYPE_MASK 0x3fUL 98 #define HWRM_ASYNC_EVENT_CMPL_TYPE_SFT 0 99 #define HWRM_ASYNC_EVENT_CMPL_TYPE_HWRM_ASYNC_EVENT 0x2eUL 100 __le16 event_id; 101 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE 0x0UL 102 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_MTU_CHANGE 0x1UL 103 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CHANGE 0x2UL 104 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_DCB_CONFIG_CHANGE 0x3UL 105 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED 0x4UL 106 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED 0x5UL 107 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE 0x6UL 108 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_PHY_CFG_CHANGE 0x7UL 109 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_UNLOAD 0x10UL 110 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_LOAD 0x11UL 111 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_FUNC_FLR_PROC_CMPLT 0x12UL 112 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD 0x20UL 113 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_LOAD 0x21UL 114 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_FLR 0x30UL 115 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_MAC_ADDR_CHANGE 0x31UL 116 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_VF_COMM_STATUS_CHANGE 0x32UL 117 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE 0x33UL 118 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR 0xffUL 119 __le32 event_data2; 120 u8 opaque_v; 121 #define HWRM_ASYNC_EVENT_CMPL_V 0x1UL 122 #define HWRM_ASYNC_EVENT_CMPL_OPAQUE_MASK 0xfeUL 123 #define HWRM_ASYNC_EVENT_CMPL_OPAQUE_SFT 1 124 u8 timestamp_lo; 125 __le16 timestamp_hi; 126 __le32 event_data1; 127 }; 128 129 /* HWRM Asynchronous Event Completion Record for link status change (16 bytes) */ 130 struct hwrm_async_event_cmpl_link_status_change { 131 __le16 type; 132 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_MASK 0x3fUL 133 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_SFT 0 134 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 135 __le16 event_id; 136 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_ID_LINK_STATUS_CHANGE 0x0UL 137 __le32 event_data2; 138 u8 opaque_v; 139 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_V 0x1UL 140 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_OPAQUE_MASK 0xfeUL 141 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_OPAQUE_SFT 1 142 u8 timestamp_lo; 143 __le16 timestamp_hi; 144 __le32 event_data1; 145 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE 0x1UL 146 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_DOWN (0x0UL << 0) 147 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP (0x1UL << 0) 148 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_LAST HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP 149 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_MASK 0xeUL 150 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_SFT 1 151 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffff0UL 152 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_ID_SFT 4 153 }; 154 155 /* HWRM Asynchronous Event Completion Record for link MTU change (16 bytes) */ 156 struct hwrm_async_event_cmpl_link_mtu_change { 157 __le16 type; 158 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_MASK 0x3fUL 159 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_SFT 0 160 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 161 __le16 event_id; 162 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_ID_LINK_MTU_CHANGE 0x1UL 163 __le32 event_data2; 164 u8 opaque_v; 165 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_V 0x1UL 166 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_OPAQUE_MASK 0xfeUL 167 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_OPAQUE_SFT 1 168 u8 timestamp_lo; 169 __le16 timestamp_hi; 170 __le32 event_data1; 171 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_DATA1_NEW_MTU_MASK 0xffffUL 172 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_DATA1_NEW_MTU_SFT 0 173 }; 174 175 /* HWRM Asynchronous Event Completion Record for link speed change (16 bytes) */ 176 struct hwrm_async_event_cmpl_link_speed_change { 177 __le16 type; 178 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_MASK 0x3fUL 179 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_SFT 0 180 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 181 __le16 event_id; 182 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_ID_LINK_SPEED_CHANGE 0x2UL 183 __le32 event_data2; 184 u8 opaque_v; 185 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_V 0x1UL 186 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_OPAQUE_MASK 0xfeUL 187 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_OPAQUE_SFT 1 188 u8 timestamp_lo; 189 __le16 timestamp_hi; 190 __le32 event_data1; 191 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_FORCE 0x1UL 192 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_MASK 0xfffeUL 193 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_SFT 1 194 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_100MB (0x1UL << 1) 195 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_1GB (0xaUL << 1) 196 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_2GB (0x14UL << 1) 197 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_2_5GB (0x19UL << 1) 198 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_10GB (0x64UL << 1) 199 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_20GB (0xc8UL << 1) 200 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_25GB (0xfaUL << 1) 201 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_40GB (0x190UL << 1) 202 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_50GB (0x1f4UL << 1) 203 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_100GB (0x3e8UL << 1) 204 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_LAST HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_100GB 205 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffff0000UL 206 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_SFT 16 207 }; 208 209 /* HWRM Asynchronous Event Completion Record for DCB Config change (16 bytes) */ 210 struct hwrm_async_event_cmpl_dcb_config_change { 211 __le16 type; 212 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_MASK 0x3fUL 213 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_SFT 0 214 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 215 __le16 event_id; 216 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_ID_DCB_CONFIG_CHANGE 0x3UL 217 __le32 event_data2; 218 u8 opaque_v; 219 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_V 0x1UL 220 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_OPAQUE_MASK 0xfeUL 221 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_OPAQUE_SFT 1 222 u8 timestamp_lo; 223 __le16 timestamp_hi; 224 __le32 event_data1; 225 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffffUL 226 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_DATA1_PORT_ID_SFT 0 227 }; 228 229 /* HWRM Asynchronous Event Completion Record for port connection not allowed (16 bytes) */ 230 struct hwrm_async_event_cmpl_port_conn_not_allowed { 231 __le16 type; 232 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_MASK 0x3fUL 233 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_SFT 0 234 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT 0x2eUL 235 __le16 event_id; 236 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_ID_PORT_CONN_NOT_ALLOWED 0x4UL 237 __le32 event_data2; 238 u8 opaque_v; 239 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_V 0x1UL 240 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_OPAQUE_MASK 0xfeUL 241 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_OPAQUE_SFT 1 242 u8 timestamp_lo; 243 __le16 timestamp_hi; 244 __le32 event_data1; 245 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_MASK 0xffffUL 246 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_SFT 0 247 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_MASK 0xff0000UL 248 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_SFT 16 249 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_NONE (0x0UL << 16) 250 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_DISABLETX (0x1UL << 16) 251 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_WARNINGMSG (0x2UL << 16) 252 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_PWRDOWN (0x3UL << 16) 253 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_LAST HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_PWRDOWN 254 }; 255 256 /* HWRM Asynchronous Event Completion Record for link speed config not allowed (16 bytes) */ 257 struct hwrm_async_event_cmpl_link_speed_cfg_not_allowed { 258 __le16 type; 259 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_MASK 0x3fUL 260 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_SFT 0 261 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT 0x2eUL 262 __le16 event_id; 263 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED 0x5UL 264 __le32 event_data2; 265 u8 opaque_v; 266 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_V 0x1UL 267 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_OPAQUE_MASK 0xfeUL 268 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_OPAQUE_SFT 1 269 u8 timestamp_lo; 270 __le16 timestamp_hi; 271 __le32 event_data1; 272 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_DATA1_PORT_ID_MASK 0xffffUL 273 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_DATA1_PORT_ID_SFT 0 274 }; 275 276 /* HWRM Asynchronous Event Completion Record for link speed configuration change (16 bytes) */ 277 struct hwrm_async_event_cmpl_link_speed_cfg_change { 278 __le16 type; 279 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_MASK 0x3fUL 280 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_SFT 0 281 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 282 __le16 event_id; 283 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LINK_SPEED_CFG_CHANGE 0x6UL 284 __le32 event_data2; 285 u8 opaque_v; 286 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_V 0x1UL 287 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_OPAQUE_MASK 0xfeUL 288 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_OPAQUE_SFT 1 289 u8 timestamp_lo; 290 __le16 timestamp_hi; 291 __le32 event_data1; 292 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffffUL 293 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_PORT_ID_SFT 0 294 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_SUPPORTED_LINK_SPEEDS_CHANGE 0x10000UL 295 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_ILLEGAL_LINK_SPEED_CFG 0x20000UL 296 }; 297 298 /* HWRM Asynchronous Event Completion Record for Function Driver Unload (16 bytes) */ 299 struct hwrm_async_event_cmpl_func_drvr_unload { 300 __le16 type; 301 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_MASK 0x3fUL 302 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_SFT 0 303 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL 304 __le16 event_id; 305 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_ID_FUNC_DRVR_UNLOAD 0x10UL 306 __le32 event_data2; 307 u8 opaque_v; 308 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_V 0x1UL 309 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_OPAQUE_MASK 0xfeUL 310 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_OPAQUE_SFT 1 311 u8 timestamp_lo; 312 __le16 timestamp_hi; 313 __le32 event_data1; 314 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL 315 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_SFT 0 316 }; 317 318 /* HWRM Asynchronous Event Completion Record for Function Driver load (16 bytes) */ 319 struct hwrm_async_event_cmpl_func_drvr_load { 320 __le16 type; 321 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_MASK 0x3fUL 322 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_SFT 0 323 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL 324 __le16 event_id; 325 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_ID_FUNC_DRVR_LOAD 0x11UL 326 __le32 event_data2; 327 u8 opaque_v; 328 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_V 0x1UL 329 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_OPAQUE_MASK 0xfeUL 330 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_OPAQUE_SFT 1 331 u8 timestamp_lo; 332 __le16 timestamp_hi; 333 __le32 event_data1; 334 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL 335 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_DATA1_FUNC_ID_SFT 0 336 }; 337 338 /* HWRM Asynchronous Event Completion Record for PF Driver Unload (16 bytes) */ 339 struct hwrm_async_event_cmpl_pf_drvr_unload { 340 __le16 type; 341 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_MASK 0x3fUL 342 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_SFT 0 343 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL 344 __le16 event_id; 345 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_ID_PF_DRVR_UNLOAD 0x20UL 346 __le32 event_data2; 347 u8 opaque_v; 348 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_V 0x1UL 349 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_OPAQUE_MASK 0xfeUL 350 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_OPAQUE_SFT 1 351 u8 timestamp_lo; 352 __le16 timestamp_hi; 353 __le32 event_data1; 354 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL 355 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_FUNC_ID_SFT 0 356 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_PORT_MASK 0x70000UL 357 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_DATA1_PORT_SFT 16 358 }; 359 360 /* HWRM Asynchronous Event Completion Record for PF Driver load (16 bytes) */ 361 struct hwrm_async_event_cmpl_pf_drvr_load { 362 __le16 type; 363 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_MASK 0x3fUL 364 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_SFT 0 365 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL 366 __le16 event_id; 367 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_ID_PF_DRVR_LOAD 0x21UL 368 __le32 event_data2; 369 u8 opaque_v; 370 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_V 0x1UL 371 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_OPAQUE_MASK 0xfeUL 372 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_OPAQUE_SFT 1 373 u8 timestamp_lo; 374 __le16 timestamp_hi; 375 __le32 event_data1; 376 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_FUNC_ID_MASK 0xffffUL 377 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_FUNC_ID_SFT 0 378 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_PORT_MASK 0x70000UL 379 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_DATA1_PORT_SFT 16 380 }; 381 382 /* HWRM Asynchronous Event Completion Record for VF FLR (16 bytes) */ 383 struct hwrm_async_event_cmpl_vf_flr { 384 __le16 type; 385 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_TYPE_MASK 0x3fUL 386 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_TYPE_SFT 0 387 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_TYPE_HWRM_ASYNC_EVENT 0x2eUL 388 __le16 event_id; 389 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_EVENT_ID_VF_FLR 0x30UL 390 __le32 event_data2; 391 u8 opaque_v; 392 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_V 0x1UL 393 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_OPAQUE_MASK 0xfeUL 394 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_OPAQUE_SFT 1 395 u8 timestamp_lo; 396 __le16 timestamp_hi; 397 __le32 event_data1; 398 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_VF_ID_MASK 0xffffUL 399 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_EVENT_DATA1_VF_ID_SFT 0 400 }; 401 402 /* HWRM Asynchronous Event Completion Record for VF MAC Addr change (16 bytes) */ 403 struct hwrm_async_event_cmpl_vf_mac_addr_change { 404 __le16 type; 405 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_MASK 0x3fUL 406 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_SFT 0 407 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 408 __le16 event_id; 409 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_ID_VF_MAC_ADDR_CHANGE 0x31UL 410 __le32 event_data2; 411 u8 opaque_v; 412 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_V 0x1UL 413 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_OPAQUE_MASK 0xfeUL 414 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_OPAQUE_SFT 1 415 u8 timestamp_lo; 416 __le16 timestamp_hi; 417 __le32 event_data1; 418 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_DATA1_VF_ID_MASK 0xffffUL 419 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_DATA1_VF_ID_SFT 0 420 }; 421 422 /* HWRM Asynchronous Event Completion Record for PF-VF communication status change (16 bytes) */ 423 struct hwrm_async_event_cmpl_pf_vf_comm_status_change { 424 __le16 type; 425 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_MASK 0x3fUL 426 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_SFT 0 427 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 428 __le16 event_id; 429 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_ID_PF_VF_COMM_STATUS_CHANGE 0x32UL 430 __le32 event_data2; 431 u8 opaque_v; 432 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_V 0x1UL 433 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_OPAQUE_MASK 0xfeUL 434 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_OPAQUE_SFT 1 435 u8 timestamp_lo; 436 __le16 timestamp_hi; 437 __le32 event_data1; 438 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_DATA1_COMM_ESTABLISHED 0x1UL 439 }; 440 441 /* HWRM Asynchronous Event Completion Record for VF configuration change (16 bytes) */ 442 struct hwrm_async_event_cmpl_vf_cfg_change { 443 __le16 type; 444 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_MASK 0x3fUL 445 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_SFT 0 446 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 447 __le16 event_id; 448 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_VF_CFG_CHANGE 0x33UL 449 __le32 event_data2; 450 u8 opaque_v; 451 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_V 0x1UL 452 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_OPAQUE_MASK 0xfeUL 453 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_OPAQUE_SFT 1 454 u8 timestamp_lo; 455 __le16 timestamp_hi; 456 __le32 event_data1; 457 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_MTU_CHANGE 0x1UL 458 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_MRU_CHANGE 0x2UL 459 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_DFLT_MAC_ADDR_CHANGE 0x4UL 460 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_DFLT_VLAN_CHANGE 0x8UL 461 }; 462 463 /* HWRM Asynchronous Event Completion Record for HWRM Error (16 bytes) */ 464 struct hwrm_async_event_cmpl_hwrm_error { 465 __le16 type; 466 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_MASK 0x3fUL 467 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_SFT 0 468 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_HWRM_ASYNC_EVENT 0x2eUL 469 __le16 event_id; 470 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_ID_HWRM_ERROR 0xffUL 471 __le32 event_data2; 472 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_MASK 0xffUL 473 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_SFT 0 474 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_WARNING 0x0UL 475 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_NONFATAL 0x1UL 476 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL 0x2UL 477 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_LAST HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL 478 u8 opaque_v; 479 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_V 0x1UL 480 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_OPAQUE_MASK 0xfeUL 481 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_OPAQUE_SFT 1 482 u8 timestamp_lo; 483 __le16 timestamp_hi; 484 __le32 event_data1; 485 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA1_TIMESTAMP 0x1UL 486 }; 487 488 /* HW Resource Manager Specification 1.5.1 */ 489 #define HWRM_VERSION_MAJOR 1 490 #define HWRM_VERSION_MINOR 5 491 #define HWRM_VERSION_UPDATE 1 492 493 #define HWRM_VERSION_STR "1.5.1" 494 /* 495 * Following is the signature for HWRM message field that indicates not 496 * applicable (All F's). Need to cast it the size of the field if needed. 497 */ 498 #define HWRM_NA_SIGNATURE ((__le32)(-1)) 499 #define HWRM_MAX_REQ_LEN (128) /* hwrm_func_buf_rgtr */ 500 #define HWRM_MAX_RESP_LEN (176) /* hwrm_func_qstats */ 501 #define HW_HASH_INDEX_SIZE 0x80 /* 7 bit indirection table index. */ 502 #define HW_HASH_KEY_SIZE 40 503 #define HWRM_RESP_VALID_KEY 1 /* valid key for HWRM response */ 504 /* Input (16 bytes) */ 505 struct input { 506 __le16 req_type; 507 __le16 cmpl_ring; 508 __le16 seq_id; 509 __le16 target_id; 510 __le64 resp_addr; 511 }; 512 513 /* Output (8 bytes) */ 514 struct output { 515 __le16 error_code; 516 __le16 req_type; 517 __le16 seq_id; 518 __le16 resp_len; 519 }; 520 521 /* Command numbering (8 bytes) */ 522 struct cmd_nums { 523 __le16 req_type; 524 #define HWRM_VER_GET (0x0UL) 525 #define HWRM_FUNC_BUF_UNRGTR (0xeUL) 526 #define HWRM_FUNC_VF_CFG (0xfUL) 527 #define RESERVED1 (0x10UL) 528 #define HWRM_FUNC_RESET (0x11UL) 529 #define HWRM_FUNC_GETFID (0x12UL) 530 #define HWRM_FUNC_VF_ALLOC (0x13UL) 531 #define HWRM_FUNC_VF_FREE (0x14UL) 532 #define HWRM_FUNC_QCAPS (0x15UL) 533 #define HWRM_FUNC_QCFG (0x16UL) 534 #define HWRM_FUNC_CFG (0x17UL) 535 #define HWRM_FUNC_QSTATS (0x18UL) 536 #define HWRM_FUNC_CLR_STATS (0x19UL) 537 #define HWRM_FUNC_DRV_UNRGTR (0x1aUL) 538 #define HWRM_FUNC_VF_RESC_FREE (0x1bUL) 539 #define HWRM_FUNC_VF_VNIC_IDS_QUERY (0x1cUL) 540 #define HWRM_FUNC_DRV_RGTR (0x1dUL) 541 #define HWRM_FUNC_DRV_QVER (0x1eUL) 542 #define HWRM_FUNC_BUF_RGTR (0x1fUL) 543 #define HWRM_PORT_PHY_CFG (0x20UL) 544 #define HWRM_PORT_MAC_CFG (0x21UL) 545 #define HWRM_PORT_TS_QUERY (0x22UL) 546 #define HWRM_PORT_QSTATS (0x23UL) 547 #define HWRM_PORT_LPBK_QSTATS (0x24UL) 548 #define HWRM_PORT_CLR_STATS (0x25UL) 549 #define HWRM_PORT_LPBK_CLR_STATS (0x26UL) 550 #define HWRM_PORT_PHY_QCFG (0x27UL) 551 #define HWRM_PORT_MAC_QCFG (0x28UL) 552 #define HWRM_PORT_BLINK_LED (0x29UL) 553 #define HWRM_PORT_PHY_QCAPS (0x2aUL) 554 #define HWRM_PORT_PHY_I2C_WRITE (0x2bUL) 555 #define HWRM_PORT_PHY_I2C_READ (0x2cUL) 556 #define HWRM_QUEUE_QPORTCFG (0x30UL) 557 #define HWRM_QUEUE_QCFG (0x31UL) 558 #define HWRM_QUEUE_CFG (0x32UL) 559 #define RESERVED2 (0x33UL) 560 #define RESERVED3 (0x34UL) 561 #define HWRM_QUEUE_PFCENABLE_QCFG (0x35UL) 562 #define HWRM_QUEUE_PFCENABLE_CFG (0x36UL) 563 #define HWRM_QUEUE_PRI2COS_QCFG (0x37UL) 564 #define HWRM_QUEUE_PRI2COS_CFG (0x38UL) 565 #define HWRM_QUEUE_COS2BW_QCFG (0x39UL) 566 #define HWRM_QUEUE_COS2BW_CFG (0x3aUL) 567 #define HWRM_VNIC_ALLOC (0x40UL) 568 #define HWRM_VNIC_FREE (0x41UL) 569 #define HWRM_VNIC_CFG (0x42UL) 570 #define HWRM_VNIC_QCFG (0x43UL) 571 #define HWRM_VNIC_TPA_CFG (0x44UL) 572 #define HWRM_VNIC_TPA_QCFG (0x45UL) 573 #define HWRM_VNIC_RSS_CFG (0x46UL) 574 #define HWRM_VNIC_RSS_QCFG (0x47UL) 575 #define HWRM_VNIC_PLCMODES_CFG (0x48UL) 576 #define HWRM_VNIC_PLCMODES_QCFG (0x49UL) 577 #define HWRM_VNIC_QCAPS (0x4aUL) 578 #define HWRM_RING_ALLOC (0x50UL) 579 #define HWRM_RING_FREE (0x51UL) 580 #define HWRM_RING_CMPL_RING_QAGGINT_PARAMS (0x52UL) 581 #define HWRM_RING_CMPL_RING_CFG_AGGINT_PARAMS (0x53UL) 582 #define HWRM_RING_RESET (0x5eUL) 583 #define HWRM_RING_GRP_ALLOC (0x60UL) 584 #define HWRM_RING_GRP_FREE (0x61UL) 585 #define RESERVED5 (0x64UL) 586 #define RESERVED6 (0x65UL) 587 #define HWRM_VNIC_RSS_COS_LB_CTX_ALLOC (0x70UL) 588 #define HWRM_VNIC_RSS_COS_LB_CTX_FREE (0x71UL) 589 #define HWRM_CFA_L2_FILTER_ALLOC (0x90UL) 590 #define HWRM_CFA_L2_FILTER_FREE (0x91UL) 591 #define HWRM_CFA_L2_FILTER_CFG (0x92UL) 592 #define HWRM_CFA_L2_SET_RX_MASK (0x93UL) 593 #define RESERVED4 (0x94UL) 594 #define HWRM_CFA_TUNNEL_FILTER_ALLOC (0x95UL) 595 #define HWRM_CFA_TUNNEL_FILTER_FREE (0x96UL) 596 #define HWRM_CFA_ENCAP_RECORD_ALLOC (0x97UL) 597 #define HWRM_CFA_ENCAP_RECORD_FREE (0x98UL) 598 #define HWRM_CFA_NTUPLE_FILTER_ALLOC (0x99UL) 599 #define HWRM_CFA_NTUPLE_FILTER_FREE (0x9aUL) 600 #define HWRM_CFA_NTUPLE_FILTER_CFG (0x9bUL) 601 #define HWRM_CFA_EM_FLOW_ALLOC (0x9cUL) 602 #define HWRM_CFA_EM_FLOW_FREE (0x9dUL) 603 #define HWRM_CFA_EM_FLOW_CFG (0x9eUL) 604 #define HWRM_TUNNEL_DST_PORT_QUERY (0xa0UL) 605 #define HWRM_TUNNEL_DST_PORT_ALLOC (0xa1UL) 606 #define HWRM_TUNNEL_DST_PORT_FREE (0xa2UL) 607 #define HWRM_STAT_CTX_ALLOC (0xb0UL) 608 #define HWRM_STAT_CTX_FREE (0xb1UL) 609 #define HWRM_STAT_CTX_QUERY (0xb2UL) 610 #define HWRM_STAT_CTX_CLR_STATS (0xb3UL) 611 #define HWRM_FW_RESET (0xc0UL) 612 #define HWRM_FW_QSTATUS (0xc1UL) 613 #define HWRM_FW_SET_TIME (0xc8UL) 614 #define HWRM_FW_GET_TIME (0xc9UL) 615 #define HWRM_EXEC_FWD_RESP (0xd0UL) 616 #define HWRM_REJECT_FWD_RESP (0xd1UL) 617 #define HWRM_FWD_RESP (0xd2UL) 618 #define HWRM_FWD_ASYNC_EVENT_CMPL (0xd3UL) 619 #define HWRM_TEMP_MONITOR_QUERY (0xe0UL) 620 #define HWRM_WOL_FILTER_ALLOC (0xf0UL) 621 #define HWRM_WOL_FILTER_FREE (0xf1UL) 622 #define HWRM_WOL_FILTER_QCFG (0xf2UL) 623 #define HWRM_WOL_REASON_QCFG (0xf3UL) 624 #define HWRM_DBG_READ_DIRECT (0xff10UL) 625 #define HWRM_DBG_READ_INDIRECT (0xff11UL) 626 #define HWRM_DBG_WRITE_DIRECT (0xff12UL) 627 #define HWRM_DBG_WRITE_INDIRECT (0xff13UL) 628 #define HWRM_DBG_DUMP (0xff14UL) 629 #define HWRM_NVM_INSTALL_UPDATE (0xfff3UL) 630 #define HWRM_NVM_MODIFY (0xfff4UL) 631 #define HWRM_NVM_VERIFY_UPDATE (0xfff5UL) 632 #define HWRM_NVM_GET_DEV_INFO (0xfff6UL) 633 #define HWRM_NVM_ERASE_DIR_ENTRY (0xfff7UL) 634 #define HWRM_NVM_MOD_DIR_ENTRY (0xfff8UL) 635 #define HWRM_NVM_FIND_DIR_ENTRY (0xfff9UL) 636 #define HWRM_NVM_GET_DIR_ENTRIES (0xfffaUL) 637 #define HWRM_NVM_GET_DIR_INFO (0xfffbUL) 638 #define HWRM_NVM_RAW_DUMP (0xfffcUL) 639 #define HWRM_NVM_READ (0xfffdUL) 640 #define HWRM_NVM_WRITE (0xfffeUL) 641 #define HWRM_NVM_RAW_WRITE_BLK (0xffffUL) 642 __le16 unused_0[3]; 643 }; 644 645 /* Return Codes (8 bytes) */ 646 struct ret_codes { 647 __le16 error_code; 648 #define HWRM_ERR_CODE_SUCCESS (0x0UL) 649 #define HWRM_ERR_CODE_FAIL (0x1UL) 650 #define HWRM_ERR_CODE_INVALID_PARAMS (0x2UL) 651 #define HWRM_ERR_CODE_RESOURCE_ACCESS_DENIED (0x3UL) 652 #define HWRM_ERR_CODE_RESOURCE_ALLOC_ERROR (0x4UL) 653 #define HWRM_ERR_CODE_INVALID_FLAGS (0x5UL) 654 #define HWRM_ERR_CODE_INVALID_ENABLES (0x6UL) 655 #define HWRM_ERR_CODE_HWRM_ERROR (0xfUL) 656 #define HWRM_ERR_CODE_UNKNOWN_ERR (0xfffeUL) 657 #define HWRM_ERR_CODE_CMD_NOT_SUPPORTED (0xffffUL) 658 __le16 unused_0[3]; 659 }; 660 661 /* Output (16 bytes) */ 662 struct hwrm_err_output { 663 __le16 error_code; 664 __le16 req_type; 665 __le16 seq_id; 666 __le16 resp_len; 667 __le32 opaque_0; 668 __le16 opaque_1; 669 u8 cmd_err; 670 u8 valid; 671 }; 672 673 /* Port Tx Statistics Formats (408 bytes) */ 674 struct tx_port_stats { 675 __le64 tx_64b_frames; 676 __le64 tx_65b_127b_frames; 677 __le64 tx_128b_255b_frames; 678 __le64 tx_256b_511b_frames; 679 __le64 tx_512b_1023b_frames; 680 __le64 tx_1024b_1518_frames; 681 __le64 tx_good_vlan_frames; 682 __le64 tx_1519b_2047_frames; 683 __le64 tx_2048b_4095b_frames; 684 __le64 tx_4096b_9216b_frames; 685 __le64 tx_9217b_16383b_frames; 686 __le64 tx_good_frames; 687 __le64 tx_total_frames; 688 __le64 tx_ucast_frames; 689 __le64 tx_mcast_frames; 690 __le64 tx_bcast_frames; 691 __le64 tx_pause_frames; 692 __le64 tx_pfc_frames; 693 __le64 tx_jabber_frames; 694 __le64 tx_fcs_err_frames; 695 __le64 tx_control_frames; 696 __le64 tx_oversz_frames; 697 __le64 tx_single_dfrl_frames; 698 __le64 tx_multi_dfrl_frames; 699 __le64 tx_single_coll_frames; 700 __le64 tx_multi_coll_frames; 701 __le64 tx_late_coll_frames; 702 __le64 tx_excessive_coll_frames; 703 __le64 tx_frag_frames; 704 __le64 tx_err; 705 __le64 tx_tagged_frames; 706 __le64 tx_dbl_tagged_frames; 707 __le64 tx_runt_frames; 708 __le64 tx_fifo_underruns; 709 __le64 tx_pfc_ena_frames_pri0; 710 __le64 tx_pfc_ena_frames_pri1; 711 __le64 tx_pfc_ena_frames_pri2; 712 __le64 tx_pfc_ena_frames_pri3; 713 __le64 tx_pfc_ena_frames_pri4; 714 __le64 tx_pfc_ena_frames_pri5; 715 __le64 tx_pfc_ena_frames_pri6; 716 __le64 tx_pfc_ena_frames_pri7; 717 __le64 tx_eee_lpi_events; 718 __le64 tx_eee_lpi_duration; 719 __le64 tx_llfc_logical_msgs; 720 __le64 tx_hcfc_msgs; 721 __le64 tx_total_collisions; 722 __le64 tx_bytes; 723 __le64 tx_xthol_frames; 724 __le64 tx_stat_discard; 725 __le64 tx_stat_error; 726 }; 727 728 /* Port Rx Statistics Formats (528 bytes) */ 729 struct rx_port_stats { 730 __le64 rx_64b_frames; 731 __le64 rx_65b_127b_frames; 732 __le64 rx_128b_255b_frames; 733 __le64 rx_256b_511b_frames; 734 __le64 rx_512b_1023b_frames; 735 __le64 rx_1024b_1518_frames; 736 __le64 rx_good_vlan_frames; 737 __le64 rx_1519b_2047b_frames; 738 __le64 rx_2048b_4095b_frames; 739 __le64 rx_4096b_9216b_frames; 740 __le64 rx_9217b_16383b_frames; 741 __le64 rx_total_frames; 742 __le64 rx_ucast_frames; 743 __le64 rx_mcast_frames; 744 __le64 rx_bcast_frames; 745 __le64 rx_fcs_err_frames; 746 __le64 rx_ctrl_frames; 747 __le64 rx_pause_frames; 748 __le64 rx_pfc_frames; 749 __le64 rx_unsupported_opcode_frames; 750 __le64 rx_unsupported_da_pausepfc_frames; 751 __le64 rx_wrong_sa_frames; 752 __le64 rx_align_err_frames; 753 __le64 rx_oor_len_frames; 754 __le64 rx_code_err_frames; 755 __le64 rx_false_carrier_frames; 756 __le64 rx_ovrsz_frames; 757 __le64 rx_jbr_frames; 758 __le64 rx_mtu_err_frames; 759 __le64 rx_match_crc_frames; 760 __le64 rx_promiscuous_frames; 761 __le64 rx_tagged_frames; 762 __le64 rx_double_tagged_frames; 763 __le64 rx_trunc_frames; 764 __le64 rx_good_frames; 765 __le64 rx_pfc_xon2xoff_frames_pri0; 766 __le64 rx_pfc_xon2xoff_frames_pri1; 767 __le64 rx_pfc_xon2xoff_frames_pri2; 768 __le64 rx_pfc_xon2xoff_frames_pri3; 769 __le64 rx_pfc_xon2xoff_frames_pri4; 770 __le64 rx_pfc_xon2xoff_frames_pri5; 771 __le64 rx_pfc_xon2xoff_frames_pri6; 772 __le64 rx_pfc_xon2xoff_frames_pri7; 773 __le64 rx_pfc_ena_frames_pri0; 774 __le64 rx_pfc_ena_frames_pri1; 775 __le64 rx_pfc_ena_frames_pri2; 776 __le64 rx_pfc_ena_frames_pri3; 777 __le64 rx_pfc_ena_frames_pri4; 778 __le64 rx_pfc_ena_frames_pri5; 779 __le64 rx_pfc_ena_frames_pri6; 780 __le64 rx_pfc_ena_frames_pri7; 781 __le64 rx_sch_crc_err_frames; 782 __le64 rx_undrsz_frames; 783 __le64 rx_frag_frames; 784 __le64 rx_eee_lpi_events; 785 __le64 rx_eee_lpi_duration; 786 __le64 rx_llfc_physical_msgs; 787 __le64 rx_llfc_logical_msgs; 788 __le64 rx_llfc_msgs_with_crc_err; 789 __le64 rx_hcfc_msgs; 790 __le64 rx_hcfc_msgs_with_crc_err; 791 __le64 rx_bytes; 792 __le64 rx_runt_bytes; 793 __le64 rx_runt_frames; 794 __le64 rx_stat_discard; 795 __le64 rx_stat_err; 796 }; 797 798 /* hwrm_ver_get */ 799 /* Input (24 bytes) */ 800 struct hwrm_ver_get_input { 801 __le16 req_type; 802 __le16 cmpl_ring; 803 __le16 seq_id; 804 __le16 target_id; 805 __le64 resp_addr; 806 u8 hwrm_intf_maj; 807 u8 hwrm_intf_min; 808 u8 hwrm_intf_upd; 809 u8 unused_0[5]; 810 }; 811 812 /* Output (128 bytes) */ 813 struct hwrm_ver_get_output { 814 __le16 error_code; 815 __le16 req_type; 816 __le16 seq_id; 817 __le16 resp_len; 818 u8 hwrm_intf_maj; 819 u8 hwrm_intf_min; 820 u8 hwrm_intf_upd; 821 u8 hwrm_intf_rsvd; 822 u8 hwrm_fw_maj; 823 u8 hwrm_fw_min; 824 u8 hwrm_fw_bld; 825 u8 hwrm_fw_rsvd; 826 u8 mgmt_fw_maj; 827 u8 mgmt_fw_min; 828 u8 mgmt_fw_bld; 829 u8 mgmt_fw_rsvd; 830 u8 netctrl_fw_maj; 831 u8 netctrl_fw_min; 832 u8 netctrl_fw_bld; 833 u8 netctrl_fw_rsvd; 834 __le32 dev_caps_cfg; 835 #define VER_GET_RESP_DEV_CAPS_CFG_SECURE_FW_UPD_SUPPORTED 0x1UL 836 #define VER_GET_RESP_DEV_CAPS_CFG_FW_DCBX_AGENT_SUPPORTED 0x2UL 837 u8 roce_fw_maj; 838 u8 roce_fw_min; 839 u8 roce_fw_bld; 840 u8 roce_fw_rsvd; 841 char hwrm_fw_name[16]; 842 char mgmt_fw_name[16]; 843 char netctrl_fw_name[16]; 844 __le32 reserved2[4]; 845 char roce_fw_name[16]; 846 __le16 chip_num; 847 u8 chip_rev; 848 u8 chip_metal; 849 u8 chip_bond_id; 850 u8 chip_platform_type; 851 #define VER_GET_RESP_CHIP_PLATFORM_TYPE_ASIC 0x0UL 852 #define VER_GET_RESP_CHIP_PLATFORM_TYPE_FPGA 0x1UL 853 #define VER_GET_RESP_CHIP_PLATFORM_TYPE_PALLADIUM 0x2UL 854 __le16 max_req_win_len; 855 __le16 max_resp_len; 856 __le16 def_req_timeout; 857 u8 unused_0; 858 u8 unused_1; 859 u8 unused_2; 860 u8 valid; 861 }; 862 863 /* hwrm_func_reset */ 864 /* Input (24 bytes) */ 865 struct hwrm_func_reset_input { 866 __le16 req_type; 867 __le16 cmpl_ring; 868 __le16 seq_id; 869 __le16 target_id; 870 __le64 resp_addr; 871 __le32 enables; 872 #define FUNC_RESET_REQ_ENABLES_VF_ID_VALID 0x1UL 873 __le16 vf_id; 874 u8 func_reset_level; 875 #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETALL 0x0UL 876 #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETME 0x1UL 877 #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETCHILDREN 0x2UL 878 #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETVF 0x3UL 879 u8 unused_0; 880 }; 881 882 /* Output (16 bytes) */ 883 struct hwrm_func_reset_output { 884 __le16 error_code; 885 __le16 req_type; 886 __le16 seq_id; 887 __le16 resp_len; 888 __le32 unused_0; 889 u8 unused_1; 890 u8 unused_2; 891 u8 unused_3; 892 u8 valid; 893 }; 894 895 /* hwrm_func_getfid */ 896 /* Input (24 bytes) */ 897 struct hwrm_func_getfid_input { 898 __le16 req_type; 899 __le16 cmpl_ring; 900 __le16 seq_id; 901 __le16 target_id; 902 __le64 resp_addr; 903 __le32 enables; 904 #define FUNC_GETFID_REQ_ENABLES_PCI_ID 0x1UL 905 __le16 pci_id; 906 __le16 unused_0; 907 }; 908 909 /* Output (16 bytes) */ 910 struct hwrm_func_getfid_output { 911 __le16 error_code; 912 __le16 req_type; 913 __le16 seq_id; 914 __le16 resp_len; 915 __le16 fid; 916 u8 unused_0; 917 u8 unused_1; 918 u8 unused_2; 919 u8 unused_3; 920 u8 unused_4; 921 u8 valid; 922 }; 923 924 /* hwrm_func_vf_alloc */ 925 /* Input (24 bytes) */ 926 struct hwrm_func_vf_alloc_input { 927 __le16 req_type; 928 __le16 cmpl_ring; 929 __le16 seq_id; 930 __le16 target_id; 931 __le64 resp_addr; 932 __le32 enables; 933 #define FUNC_VF_ALLOC_REQ_ENABLES_FIRST_VF_ID 0x1UL 934 __le16 first_vf_id; 935 __le16 num_vfs; 936 }; 937 938 /* Output (16 bytes) */ 939 struct hwrm_func_vf_alloc_output { 940 __le16 error_code; 941 __le16 req_type; 942 __le16 seq_id; 943 __le16 resp_len; 944 __le16 first_vf_id; 945 u8 unused_0; 946 u8 unused_1; 947 u8 unused_2; 948 u8 unused_3; 949 u8 unused_4; 950 u8 valid; 951 }; 952 953 /* hwrm_func_vf_free */ 954 /* Input (24 bytes) */ 955 struct hwrm_func_vf_free_input { 956 __le16 req_type; 957 __le16 cmpl_ring; 958 __le16 seq_id; 959 __le16 target_id; 960 __le64 resp_addr; 961 __le32 enables; 962 #define FUNC_VF_FREE_REQ_ENABLES_FIRST_VF_ID 0x1UL 963 __le16 first_vf_id; 964 __le16 num_vfs; 965 }; 966 967 /* Output (16 bytes) */ 968 struct hwrm_func_vf_free_output { 969 __le16 error_code; 970 __le16 req_type; 971 __le16 seq_id; 972 __le16 resp_len; 973 __le32 unused_0; 974 u8 unused_1; 975 u8 unused_2; 976 u8 unused_3; 977 u8 valid; 978 }; 979 980 /* hwrm_func_vf_cfg */ 981 /* Input (32 bytes) */ 982 struct hwrm_func_vf_cfg_input { 983 __le16 req_type; 984 __le16 cmpl_ring; 985 __le16 seq_id; 986 __le16 target_id; 987 __le64 resp_addr; 988 __le32 enables; 989 #define FUNC_VF_CFG_REQ_ENABLES_MTU 0x1UL 990 #define FUNC_VF_CFG_REQ_ENABLES_GUEST_VLAN 0x2UL 991 #define FUNC_VF_CFG_REQ_ENABLES_ASYNC_EVENT_CR 0x4UL 992 #define FUNC_VF_CFG_REQ_ENABLES_DFLT_MAC_ADDR 0x8UL 993 __le16 mtu; 994 __le16 guest_vlan; 995 __le16 async_event_cr; 996 u8 dflt_mac_addr[6]; 997 }; 998 999 /* Output (16 bytes) */ 1000 struct hwrm_func_vf_cfg_output { 1001 __le16 error_code; 1002 __le16 req_type; 1003 __le16 seq_id; 1004 __le16 resp_len; 1005 __le32 unused_0; 1006 u8 unused_1; 1007 u8 unused_2; 1008 u8 unused_3; 1009 u8 valid; 1010 }; 1011 1012 /* hwrm_func_qcaps */ 1013 /* Input (24 bytes) */ 1014 struct hwrm_func_qcaps_input { 1015 __le16 req_type; 1016 __le16 cmpl_ring; 1017 __le16 seq_id; 1018 __le16 target_id; 1019 __le64 resp_addr; 1020 __le16 fid; 1021 __le16 unused_0[3]; 1022 }; 1023 1024 /* Output (80 bytes) */ 1025 struct hwrm_func_qcaps_output { 1026 __le16 error_code; 1027 __le16 req_type; 1028 __le16 seq_id; 1029 __le16 resp_len; 1030 __le16 fid; 1031 __le16 port_id; 1032 __le32 flags; 1033 #define FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED 0x1UL 1034 #define FUNC_QCAPS_RESP_FLAGS_GLOBAL_MSIX_AUTOMASKING 0x2UL 1035 #define FUNC_QCAPS_RESP_FLAGS_PTP_SUPPORTED 0x4UL 1036 #define FUNC_QCAPS_RESP_FLAGS_ROCE_V1_SUPPORTED 0x8UL 1037 #define FUNC_QCAPS_RESP_FLAGS_ROCE_V2_SUPPORTED 0x10UL 1038 #define FUNC_QCAPS_RESP_FLAGS_WOL_MAGICPKT_SUPPORTED 0x20UL 1039 #define FUNC_QCAPS_RESP_FLAGS_WOL_BMP_SUPPORTED 0x40UL 1040 #define FUNC_QCAPS_RESP_FLAGS_TX_RING_RL_SUPPORTED 0x80UL 1041 #define FUNC_QCAPS_RESP_FLAGS_TX_BW_CFG_SUPPORTED 0x100UL 1042 #define FUNC_QCAPS_RESP_FLAGS_VF_TX_RING_RL_SUPPORTED 0x200UL 1043 #define FUNC_QCAPS_RESP_FLAGS_VF_BW_CFG_SUPPORTED 0x400UL 1044 u8 mac_address[6]; 1045 __le16 max_rsscos_ctx; 1046 __le16 max_cmpl_rings; 1047 __le16 max_tx_rings; 1048 __le16 max_rx_rings; 1049 __le16 max_l2_ctxs; 1050 __le16 max_vnics; 1051 __le16 first_vf_id; 1052 __le16 max_vfs; 1053 __le16 max_stat_ctx; 1054 __le32 max_encap_records; 1055 __le32 max_decap_records; 1056 __le32 max_tx_em_flows; 1057 __le32 max_tx_wm_flows; 1058 __le32 max_rx_em_flows; 1059 __le32 max_rx_wm_flows; 1060 __le32 max_mcast_filters; 1061 __le32 max_flow_id; 1062 __le32 max_hw_ring_grps; 1063 __le16 max_sp_tx_rings; 1064 u8 unused_0; 1065 u8 valid; 1066 }; 1067 1068 /* hwrm_func_qcfg */ 1069 /* Input (24 bytes) */ 1070 struct hwrm_func_qcfg_input { 1071 __le16 req_type; 1072 __le16 cmpl_ring; 1073 __le16 seq_id; 1074 __le16 target_id; 1075 __le64 resp_addr; 1076 __le16 fid; 1077 __le16 unused_0[3]; 1078 }; 1079 1080 /* Output (72 bytes) */ 1081 struct hwrm_func_qcfg_output { 1082 __le16 error_code; 1083 __le16 req_type; 1084 __le16 seq_id; 1085 __le16 resp_len; 1086 __le16 fid; 1087 __le16 port_id; 1088 __le16 vlan; 1089 __le16 flags; 1090 #define FUNC_QCFG_RESP_FLAGS_OOB_WOL_MAGICPKT_ENABLED 0x1UL 1091 #define FUNC_QCFG_RESP_FLAGS_OOB_WOL_BMP_ENABLED 0x2UL 1092 #define FUNC_QCFG_RESP_FLAGS_FW_DCBX_AGENT_ENABLED 0x4UL 1093 u8 mac_address[6]; 1094 __le16 pci_id; 1095 __le16 alloc_rsscos_ctx; 1096 __le16 alloc_cmpl_rings; 1097 __le16 alloc_tx_rings; 1098 __le16 alloc_rx_rings; 1099 __le16 alloc_l2_ctx; 1100 __le16 alloc_vnics; 1101 __le16 mtu; 1102 __le16 mru; 1103 __le16 stat_ctx_id; 1104 u8 port_partition_type; 1105 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_SPF 0x0UL 1106 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_MPFS 0x1UL 1107 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0 0x2UL 1108 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_5 0x3UL 1109 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR2_0 0x4UL 1110 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_UNKNOWN 0xffUL 1111 u8 unused_0; 1112 __le16 dflt_vnic_id; 1113 u8 unused_1; 1114 u8 unused_2; 1115 __le32 min_bw; 1116 #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_MASK 0xfffffffUL 1117 #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_SFT 0 1118 #define FUNC_QCFG_RESP_MIN_BW_RSVD 0x10000000UL 1119 #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 1120 #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_SFT 29 1121 #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 1122 #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 1123 #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 1124 #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_LAST FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_INVALID 1125 __le32 max_bw; 1126 #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_MASK 0xfffffffUL 1127 #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_SFT 0 1128 #define FUNC_QCFG_RESP_MAX_BW_RSVD 0x10000000UL 1129 #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 1130 #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_SFT 29 1131 #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 1132 #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 1133 #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 1134 #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_LAST FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_INVALID 1135 u8 evb_mode; 1136 #define FUNC_QCFG_RESP_EVB_MODE_NO_EVB 0x0UL 1137 #define FUNC_QCFG_RESP_EVB_MODE_VEB 0x1UL 1138 #define FUNC_QCFG_RESP_EVB_MODE_VEPA 0x2UL 1139 u8 unused_3; 1140 __le16 alloc_vfs; 1141 __le32 alloc_mcast_filters; 1142 __le32 alloc_hw_ring_grps; 1143 __le16 alloc_sp_tx_rings; 1144 u8 unused_4; 1145 u8 valid; 1146 }; 1147 1148 /* hwrm_func_cfg */ 1149 /* Input (88 bytes) */ 1150 struct hwrm_func_cfg_input { 1151 __le16 req_type; 1152 __le16 cmpl_ring; 1153 __le16 seq_id; 1154 __le16 target_id; 1155 __le64 resp_addr; 1156 __le16 fid; 1157 u8 unused_0; 1158 u8 unused_1; 1159 __le32 flags; 1160 #define FUNC_CFG_REQ_FLAGS_PROM_MODE 0x1UL 1161 #define FUNC_CFG_REQ_FLAGS_SRC_MAC_ADDR_CHECK 0x2UL 1162 #define FUNC_CFG_REQ_FLAGS_SRC_IP_ADDR_CHECK 0x4UL 1163 #define FUNC_CFG_REQ_FLAGS_VLAN_PRI_MATCH 0x8UL 1164 #define FUNC_CFG_REQ_FLAGS_DFLT_PRI_NOMATCH 0x10UL 1165 #define FUNC_CFG_REQ_FLAGS_DISABLE_PAUSE 0x20UL 1166 #define FUNC_CFG_REQ_FLAGS_DISABLE_STP 0x40UL 1167 #define FUNC_CFG_REQ_FLAGS_DISABLE_LLDP 0x80UL 1168 #define FUNC_CFG_REQ_FLAGS_DISABLE_PTPV2 0x100UL 1169 __le32 enables; 1170 #define FUNC_CFG_REQ_ENABLES_MTU 0x1UL 1171 #define FUNC_CFG_REQ_ENABLES_MRU 0x2UL 1172 #define FUNC_CFG_REQ_ENABLES_NUM_RSSCOS_CTXS 0x4UL 1173 #define FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS 0x8UL 1174 #define FUNC_CFG_REQ_ENABLES_NUM_TX_RINGS 0x10UL 1175 #define FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS 0x20UL 1176 #define FUNC_CFG_REQ_ENABLES_NUM_L2_CTXS 0x40UL 1177 #define FUNC_CFG_REQ_ENABLES_NUM_VNICS 0x80UL 1178 #define FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS 0x100UL 1179 #define FUNC_CFG_REQ_ENABLES_DFLT_MAC_ADDR 0x200UL 1180 #define FUNC_CFG_REQ_ENABLES_DFLT_VLAN 0x400UL 1181 #define FUNC_CFG_REQ_ENABLES_DFLT_IP_ADDR 0x800UL 1182 #define FUNC_CFG_REQ_ENABLES_MIN_BW 0x1000UL 1183 #define FUNC_CFG_REQ_ENABLES_MAX_BW 0x2000UL 1184 #define FUNC_CFG_REQ_ENABLES_ASYNC_EVENT_CR 0x4000UL 1185 #define FUNC_CFG_REQ_ENABLES_VLAN_ANTISPOOF_MODE 0x8000UL 1186 #define FUNC_CFG_REQ_ENABLES_ALLOWED_VLAN_PRIS 0x10000UL 1187 #define FUNC_CFG_REQ_ENABLES_EVB_MODE 0x20000UL 1188 #define FUNC_CFG_REQ_ENABLES_NUM_MCAST_FILTERS 0x40000UL 1189 #define FUNC_CFG_REQ_ENABLES_NUM_HW_RING_GRPS 0x80000UL 1190 __le16 mtu; 1191 __le16 mru; 1192 __le16 num_rsscos_ctxs; 1193 __le16 num_cmpl_rings; 1194 __le16 num_tx_rings; 1195 __le16 num_rx_rings; 1196 __le16 num_l2_ctxs; 1197 __le16 num_vnics; 1198 __le16 num_stat_ctxs; 1199 __le16 num_hw_ring_grps; 1200 u8 dflt_mac_addr[6]; 1201 __le16 dflt_vlan; 1202 __be32 dflt_ip_addr[4]; 1203 __le32 min_bw; 1204 #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_MASK 0xfffffffUL 1205 #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_SFT 0 1206 #define FUNC_CFG_REQ_MIN_BW_RSVD 0x10000000UL 1207 #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 1208 #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_SFT 29 1209 #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 1210 #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 1211 #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 1212 #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_LAST FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_INVALID 1213 __le32 max_bw; 1214 #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_MASK 0xfffffffUL 1215 #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_SFT 0 1216 #define FUNC_CFG_REQ_MAX_BW_RSVD 0x10000000UL 1217 #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 1218 #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_SFT 29 1219 #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 1220 #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 1221 #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 1222 #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_LAST FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_INVALID 1223 __le16 async_event_cr; 1224 u8 vlan_antispoof_mode; 1225 #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_NOCHECK 0x0UL 1226 #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_VALIDATE_VLAN 0x1UL 1227 #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_IF_VLANDNE 0x2UL 1228 #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_OR_OVERRIDE_VLAN 0x3UL 1229 u8 allowed_vlan_pris; 1230 u8 evb_mode; 1231 #define FUNC_CFG_REQ_EVB_MODE_NO_EVB 0x0UL 1232 #define FUNC_CFG_REQ_EVB_MODE_VEB 0x1UL 1233 #define FUNC_CFG_REQ_EVB_MODE_VEPA 0x2UL 1234 u8 unused_2; 1235 __le16 num_mcast_filters; 1236 }; 1237 1238 /* Output (16 bytes) */ 1239 struct hwrm_func_cfg_output { 1240 __le16 error_code; 1241 __le16 req_type; 1242 __le16 seq_id; 1243 __le16 resp_len; 1244 __le32 unused_0; 1245 u8 unused_1; 1246 u8 unused_2; 1247 u8 unused_3; 1248 u8 valid; 1249 }; 1250 1251 /* hwrm_func_qstats */ 1252 /* Input (24 bytes) */ 1253 struct hwrm_func_qstats_input { 1254 __le16 req_type; 1255 __le16 cmpl_ring; 1256 __le16 seq_id; 1257 __le16 target_id; 1258 __le64 resp_addr; 1259 __le16 fid; 1260 __le16 unused_0[3]; 1261 }; 1262 1263 /* Output (176 bytes) */ 1264 struct hwrm_func_qstats_output { 1265 __le16 error_code; 1266 __le16 req_type; 1267 __le16 seq_id; 1268 __le16 resp_len; 1269 __le64 tx_ucast_pkts; 1270 __le64 tx_mcast_pkts; 1271 __le64 tx_bcast_pkts; 1272 __le64 tx_err_pkts; 1273 __le64 tx_drop_pkts; 1274 __le64 tx_ucast_bytes; 1275 __le64 tx_mcast_bytes; 1276 __le64 tx_bcast_bytes; 1277 __le64 rx_ucast_pkts; 1278 __le64 rx_mcast_pkts; 1279 __le64 rx_bcast_pkts; 1280 __le64 rx_err_pkts; 1281 __le64 rx_drop_pkts; 1282 __le64 rx_ucast_bytes; 1283 __le64 rx_mcast_bytes; 1284 __le64 rx_bcast_bytes; 1285 __le64 rx_agg_pkts; 1286 __le64 rx_agg_bytes; 1287 __le64 rx_agg_events; 1288 __le64 rx_agg_aborts; 1289 __le32 unused_0; 1290 u8 unused_1; 1291 u8 unused_2; 1292 u8 unused_3; 1293 u8 valid; 1294 }; 1295 1296 /* hwrm_func_clr_stats */ 1297 /* Input (24 bytes) */ 1298 struct hwrm_func_clr_stats_input { 1299 __le16 req_type; 1300 __le16 cmpl_ring; 1301 __le16 seq_id; 1302 __le16 target_id; 1303 __le64 resp_addr; 1304 __le16 fid; 1305 __le16 unused_0[3]; 1306 }; 1307 1308 /* Output (16 bytes) */ 1309 struct hwrm_func_clr_stats_output { 1310 __le16 error_code; 1311 __le16 req_type; 1312 __le16 seq_id; 1313 __le16 resp_len; 1314 __le32 unused_0; 1315 u8 unused_1; 1316 u8 unused_2; 1317 u8 unused_3; 1318 u8 valid; 1319 }; 1320 1321 /* hwrm_func_vf_resc_free */ 1322 /* Input (24 bytes) */ 1323 struct hwrm_func_vf_resc_free_input { 1324 __le16 req_type; 1325 __le16 cmpl_ring; 1326 __le16 seq_id; 1327 __le16 target_id; 1328 __le64 resp_addr; 1329 __le16 vf_id; 1330 __le16 unused_0[3]; 1331 }; 1332 1333 /* Output (16 bytes) */ 1334 struct hwrm_func_vf_resc_free_output { 1335 __le16 error_code; 1336 __le16 req_type; 1337 __le16 seq_id; 1338 __le16 resp_len; 1339 __le32 unused_0; 1340 u8 unused_1; 1341 u8 unused_2; 1342 u8 unused_3; 1343 u8 valid; 1344 }; 1345 1346 /* hwrm_func_vf_vnic_ids_query */ 1347 /* Input (32 bytes) */ 1348 struct hwrm_func_vf_vnic_ids_query_input { 1349 __le16 req_type; 1350 __le16 cmpl_ring; 1351 __le16 seq_id; 1352 __le16 target_id; 1353 __le64 resp_addr; 1354 __le16 vf_id; 1355 u8 unused_0; 1356 u8 unused_1; 1357 __le32 max_vnic_id_cnt; 1358 __le64 vnic_id_tbl_addr; 1359 }; 1360 1361 /* Output (16 bytes) */ 1362 struct hwrm_func_vf_vnic_ids_query_output { 1363 __le16 error_code; 1364 __le16 req_type; 1365 __le16 seq_id; 1366 __le16 resp_len; 1367 __le32 vnic_id_cnt; 1368 u8 unused_0; 1369 u8 unused_1; 1370 u8 unused_2; 1371 u8 valid; 1372 }; 1373 1374 /* hwrm_func_drv_rgtr */ 1375 /* Input (80 bytes) */ 1376 struct hwrm_func_drv_rgtr_input { 1377 __le16 req_type; 1378 __le16 cmpl_ring; 1379 __le16 seq_id; 1380 __le16 target_id; 1381 __le64 resp_addr; 1382 __le32 flags; 1383 #define FUNC_DRV_RGTR_REQ_FLAGS_FWD_ALL_MODE 0x1UL 1384 #define FUNC_DRV_RGTR_REQ_FLAGS_FWD_NONE_MODE 0x2UL 1385 __le32 enables; 1386 #define FUNC_DRV_RGTR_REQ_ENABLES_OS_TYPE 0x1UL 1387 #define FUNC_DRV_RGTR_REQ_ENABLES_VER 0x2UL 1388 #define FUNC_DRV_RGTR_REQ_ENABLES_TIMESTAMP 0x4UL 1389 #define FUNC_DRV_RGTR_REQ_ENABLES_VF_REQ_FWD 0x8UL 1390 #define FUNC_DRV_RGTR_REQ_ENABLES_ASYNC_EVENT_FWD 0x10UL 1391 __le16 os_type; 1392 #define FUNC_DRV_RGTR_REQ_OS_TYPE_UNKNOWN 0x0UL 1393 #define FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER 0x1UL 1394 #define FUNC_DRV_RGTR_REQ_OS_TYPE_MSDOS 0xeUL 1395 #define FUNC_DRV_RGTR_REQ_OS_TYPE_WINDOWS 0x12UL 1396 #define FUNC_DRV_RGTR_REQ_OS_TYPE_SOLARIS 0x1dUL 1397 #define FUNC_DRV_RGTR_REQ_OS_TYPE_LINUX 0x24UL 1398 #define FUNC_DRV_RGTR_REQ_OS_TYPE_FREEBSD 0x2aUL 1399 #define FUNC_DRV_RGTR_REQ_OS_TYPE_ESXI 0x68UL 1400 #define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN864 0x73UL 1401 #define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN2012R2 0x74UL 1402 u8 ver_maj; 1403 u8 ver_min; 1404 u8 ver_upd; 1405 u8 unused_0; 1406 __le16 unused_1; 1407 __le32 timestamp; 1408 __le32 unused_2; 1409 __le32 vf_req_fwd[8]; 1410 __le32 async_event_fwd[8]; 1411 }; 1412 1413 /* Output (16 bytes) */ 1414 struct hwrm_func_drv_rgtr_output { 1415 __le16 error_code; 1416 __le16 req_type; 1417 __le16 seq_id; 1418 __le16 resp_len; 1419 __le32 unused_0; 1420 u8 unused_1; 1421 u8 unused_2; 1422 u8 unused_3; 1423 u8 valid; 1424 }; 1425 1426 /* hwrm_func_drv_unrgtr */ 1427 /* Input (24 bytes) */ 1428 struct hwrm_func_drv_unrgtr_input { 1429 __le16 req_type; 1430 __le16 cmpl_ring; 1431 __le16 seq_id; 1432 __le16 target_id; 1433 __le64 resp_addr; 1434 __le32 flags; 1435 #define FUNC_DRV_UNRGTR_REQ_FLAGS_PREPARE_FOR_SHUTDOWN 0x1UL 1436 __le32 unused_0; 1437 }; 1438 1439 /* Output (16 bytes) */ 1440 struct hwrm_func_drv_unrgtr_output { 1441 __le16 error_code; 1442 __le16 req_type; 1443 __le16 seq_id; 1444 __le16 resp_len; 1445 __le32 unused_0; 1446 u8 unused_1; 1447 u8 unused_2; 1448 u8 unused_3; 1449 u8 valid; 1450 }; 1451 1452 /* hwrm_func_buf_rgtr */ 1453 /* Input (128 bytes) */ 1454 struct hwrm_func_buf_rgtr_input { 1455 __le16 req_type; 1456 __le16 cmpl_ring; 1457 __le16 seq_id; 1458 __le16 target_id; 1459 __le64 resp_addr; 1460 __le32 enables; 1461 #define FUNC_BUF_RGTR_REQ_ENABLES_VF_ID 0x1UL 1462 #define FUNC_BUF_RGTR_REQ_ENABLES_ERR_BUF_ADDR 0x2UL 1463 __le16 vf_id; 1464 __le16 req_buf_num_pages; 1465 __le16 req_buf_page_size; 1466 #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_16B 0x4UL 1467 #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4K 0xcUL 1468 #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_8K 0xdUL 1469 #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_64K 0x10UL 1470 #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_2M 0x15UL 1471 #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4M 0x16UL 1472 #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_1G 0x1eUL 1473 __le16 req_buf_len; 1474 __le16 resp_buf_len; 1475 u8 unused_0; 1476 u8 unused_1; 1477 __le64 req_buf_page_addr0; 1478 __le64 req_buf_page_addr1; 1479 __le64 req_buf_page_addr2; 1480 __le64 req_buf_page_addr3; 1481 __le64 req_buf_page_addr4; 1482 __le64 req_buf_page_addr5; 1483 __le64 req_buf_page_addr6; 1484 __le64 req_buf_page_addr7; 1485 __le64 req_buf_page_addr8; 1486 __le64 req_buf_page_addr9; 1487 __le64 error_buf_addr; 1488 __le64 resp_buf_addr; 1489 }; 1490 1491 /* Output (16 bytes) */ 1492 struct hwrm_func_buf_rgtr_output { 1493 __le16 error_code; 1494 __le16 req_type; 1495 __le16 seq_id; 1496 __le16 resp_len; 1497 __le32 unused_0; 1498 u8 unused_1; 1499 u8 unused_2; 1500 u8 unused_3; 1501 u8 valid; 1502 }; 1503 1504 /* hwrm_func_drv_qver */ 1505 /* Input (24 bytes) */ 1506 struct hwrm_func_drv_qver_input { 1507 __le16 req_type; 1508 __le16 cmpl_ring; 1509 __le16 seq_id; 1510 __le16 target_id; 1511 __le64 resp_addr; 1512 __le32 reserved; 1513 __le16 fid; 1514 __le16 unused_0; 1515 }; 1516 1517 /* Output (16 bytes) */ 1518 struct hwrm_func_drv_qver_output { 1519 __le16 error_code; 1520 __le16 req_type; 1521 __le16 seq_id; 1522 __le16 resp_len; 1523 __le16 os_type; 1524 #define FUNC_DRV_QVER_RESP_OS_TYPE_UNKNOWN 0x0UL 1525 #define FUNC_DRV_QVER_RESP_OS_TYPE_OTHER 0x1UL 1526 #define FUNC_DRV_QVER_RESP_OS_TYPE_MSDOS 0xeUL 1527 #define FUNC_DRV_QVER_RESP_OS_TYPE_WINDOWS 0x12UL 1528 #define FUNC_DRV_QVER_RESP_OS_TYPE_SOLARIS 0x1dUL 1529 #define FUNC_DRV_QVER_RESP_OS_TYPE_LINUX 0x24UL 1530 #define FUNC_DRV_QVER_RESP_OS_TYPE_FREEBSD 0x2aUL 1531 #define FUNC_DRV_QVER_RESP_OS_TYPE_ESXI 0x68UL 1532 #define FUNC_DRV_QVER_RESP_OS_TYPE_WIN864 0x73UL 1533 #define FUNC_DRV_QVER_RESP_OS_TYPE_WIN2012R2 0x74UL 1534 u8 ver_maj; 1535 u8 ver_min; 1536 u8 ver_upd; 1537 u8 unused_0; 1538 u8 unused_1; 1539 u8 valid; 1540 }; 1541 1542 /* hwrm_port_phy_cfg */ 1543 /* Input (56 bytes) */ 1544 struct hwrm_port_phy_cfg_input { 1545 __le16 req_type; 1546 __le16 cmpl_ring; 1547 __le16 seq_id; 1548 __le16 target_id; 1549 __le64 resp_addr; 1550 __le32 flags; 1551 #define PORT_PHY_CFG_REQ_FLAGS_RESET_PHY 0x1UL 1552 #define PORT_PHY_CFG_REQ_FLAGS_FORCE_LINK_DOWN 0x2UL 1553 #define PORT_PHY_CFG_REQ_FLAGS_FORCE 0x4UL 1554 #define PORT_PHY_CFG_REQ_FLAGS_RESTART_AUTONEG 0x8UL 1555 #define PORT_PHY_CFG_REQ_FLAGS_EEE_ENABLE 0x10UL 1556 #define PORT_PHY_CFG_REQ_FLAGS_EEE_DISABLE 0x20UL 1557 #define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_ENABLE 0x40UL 1558 #define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_DISABLE 0x80UL 1559 #define PORT_PHY_CFG_REQ_FLAGS_FEC_AUTONEG_ENABLE 0x100UL 1560 #define PORT_PHY_CFG_REQ_FLAGS_FEC_AUTONEG_DISABLE 0x200UL 1561 #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE74_ENABLE 0x400UL 1562 #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE74_DISABLE 0x800UL 1563 #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE91_ENABLE 0x1000UL 1564 #define PORT_PHY_CFG_REQ_FLAGS_FEC_CLAUSE91_DISABLE 0x2000UL 1565 __le32 enables; 1566 #define PORT_PHY_CFG_REQ_ENABLES_AUTO_MODE 0x1UL 1567 #define PORT_PHY_CFG_REQ_ENABLES_AUTO_DUPLEX 0x2UL 1568 #define PORT_PHY_CFG_REQ_ENABLES_AUTO_PAUSE 0x4UL 1569 #define PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED 0x8UL 1570 #define PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED_MASK 0x10UL 1571 #define PORT_PHY_CFG_REQ_ENABLES_WIRESPEED 0x20UL 1572 #define PORT_PHY_CFG_REQ_ENABLES_LPBK 0x40UL 1573 #define PORT_PHY_CFG_REQ_ENABLES_PREEMPHASIS 0x80UL 1574 #define PORT_PHY_CFG_REQ_ENABLES_FORCE_PAUSE 0x100UL 1575 #define PORT_PHY_CFG_REQ_ENABLES_EEE_LINK_SPEED_MASK 0x200UL 1576 #define PORT_PHY_CFG_REQ_ENABLES_TX_LPI_TIMER 0x400UL 1577 __le16 port_id; 1578 __le16 force_link_speed; 1579 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100MB 0x1UL 1580 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB 0xaUL 1581 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2GB 0x14UL 1582 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2_5GB 0x19UL 1583 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10GB 0x64UL 1584 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_20GB 0xc8UL 1585 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB 0xfaUL 1586 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_40GB 0x190UL 1587 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_50GB 0x1f4UL 1588 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100GB 0x3e8UL 1589 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10MB 0xffffUL 1590 u8 auto_mode; 1591 #define PORT_PHY_CFG_REQ_AUTO_MODE_NONE 0x0UL 1592 #define PORT_PHY_CFG_REQ_AUTO_MODE_ALL_SPEEDS 0x1UL 1593 #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_SPEED 0x2UL 1594 #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_OR_BELOW 0x3UL 1595 #define PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK 0x4UL 1596 u8 auto_duplex; 1597 #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_HALF 0x0UL 1598 #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_FULL 0x1UL 1599 #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH 0x2UL 1600 u8 auto_pause; 1601 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_TX 0x1UL 1602 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_RX 0x2UL 1603 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_AUTONEG_PAUSE 0x4UL 1604 u8 unused_0; 1605 __le16 auto_link_speed; 1606 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100MB 0x1UL 1607 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_1GB 0xaUL 1608 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2GB 0x14UL 1609 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2_5GB 0x19UL 1610 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10GB 0x64UL 1611 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_20GB 0xc8UL 1612 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_25GB 0xfaUL 1613 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_40GB 0x190UL 1614 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_50GB 0x1f4UL 1615 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100GB 0x3e8UL 1616 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10MB 0xffffUL 1617 __le16 auto_link_speed_mask; 1618 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MBHD 0x1UL 1619 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MB 0x2UL 1620 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_1GBHD 0x4UL 1621 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_1GB 0x8UL 1622 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_2GB 0x10UL 1623 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_2_5GB 0x20UL 1624 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10GB 0x40UL 1625 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_20GB 0x80UL 1626 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_25GB 0x100UL 1627 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_40GB 0x200UL 1628 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_50GB 0x400UL 1629 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100GB 0x800UL 1630 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MBHD 0x1000UL 1631 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MB 0x2000UL 1632 u8 wirespeed; 1633 #define PORT_PHY_CFG_REQ_WIRESPEED_OFF 0x0UL 1634 #define PORT_PHY_CFG_REQ_WIRESPEED_ON 0x1UL 1635 u8 lpbk; 1636 #define PORT_PHY_CFG_REQ_LPBK_NONE 0x0UL 1637 #define PORT_PHY_CFG_REQ_LPBK_LOCAL 0x1UL 1638 #define PORT_PHY_CFG_REQ_LPBK_REMOTE 0x2UL 1639 u8 force_pause; 1640 #define PORT_PHY_CFG_REQ_FORCE_PAUSE_TX 0x1UL 1641 #define PORT_PHY_CFG_REQ_FORCE_PAUSE_RX 0x2UL 1642 u8 unused_1; 1643 __le32 preemphasis; 1644 __le16 eee_link_speed_mask; 1645 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD1 0x1UL 1646 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_100MB 0x2UL 1647 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD2 0x4UL 1648 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_1GB 0x8UL 1649 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD3 0x10UL 1650 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD4 0x20UL 1651 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_10GB 0x40UL 1652 u8 unused_2; 1653 u8 unused_3; 1654 __le32 tx_lpi_timer; 1655 __le32 unused_4; 1656 #define PORT_PHY_CFG_REQ_TX_LPI_TIMER_MASK 0xffffffUL 1657 #define PORT_PHY_CFG_REQ_TX_LPI_TIMER_SFT 0 1658 }; 1659 1660 /* Output (16 bytes) */ 1661 struct hwrm_port_phy_cfg_output { 1662 __le16 error_code; 1663 __le16 req_type; 1664 __le16 seq_id; 1665 __le16 resp_len; 1666 __le32 unused_0; 1667 u8 unused_1; 1668 u8 unused_2; 1669 u8 unused_3; 1670 u8 valid; 1671 }; 1672 1673 /* hwrm_port_phy_qcfg */ 1674 /* Input (24 bytes) */ 1675 struct hwrm_port_phy_qcfg_input { 1676 __le16 req_type; 1677 __le16 cmpl_ring; 1678 __le16 seq_id; 1679 __le16 target_id; 1680 __le64 resp_addr; 1681 __le16 port_id; 1682 __le16 unused_0[3]; 1683 }; 1684 1685 /* Output (96 bytes) */ 1686 struct hwrm_port_phy_qcfg_output { 1687 __le16 error_code; 1688 __le16 req_type; 1689 __le16 seq_id; 1690 __le16 resp_len; 1691 u8 link; 1692 #define PORT_PHY_QCFG_RESP_LINK_NO_LINK 0x0UL 1693 #define PORT_PHY_QCFG_RESP_LINK_SIGNAL 0x1UL 1694 #define PORT_PHY_QCFG_RESP_LINK_LINK 0x2UL 1695 u8 unused_0; 1696 __le16 link_speed; 1697 #define PORT_PHY_QCFG_RESP_LINK_SPEED_100MB 0x1UL 1698 #define PORT_PHY_QCFG_RESP_LINK_SPEED_1GB 0xaUL 1699 #define PORT_PHY_QCFG_RESP_LINK_SPEED_2GB 0x14UL 1700 #define PORT_PHY_QCFG_RESP_LINK_SPEED_2_5GB 0x19UL 1701 #define PORT_PHY_QCFG_RESP_LINK_SPEED_10GB 0x64UL 1702 #define PORT_PHY_QCFG_RESP_LINK_SPEED_20GB 0xc8UL 1703 #define PORT_PHY_QCFG_RESP_LINK_SPEED_25GB 0xfaUL 1704 #define PORT_PHY_QCFG_RESP_LINK_SPEED_40GB 0x190UL 1705 #define PORT_PHY_QCFG_RESP_LINK_SPEED_50GB 0x1f4UL 1706 #define PORT_PHY_QCFG_RESP_LINK_SPEED_100GB 0x3e8UL 1707 #define PORT_PHY_QCFG_RESP_LINK_SPEED_10MB 0xffffUL 1708 u8 duplex; 1709 #define PORT_PHY_QCFG_RESP_DUPLEX_HALF 0x0UL 1710 #define PORT_PHY_QCFG_RESP_DUPLEX_FULL 0x1UL 1711 u8 pause; 1712 #define PORT_PHY_QCFG_RESP_PAUSE_TX 0x1UL 1713 #define PORT_PHY_QCFG_RESP_PAUSE_RX 0x2UL 1714 __le16 support_speeds; 1715 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100MBHD 0x1UL 1716 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100MB 0x2UL 1717 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_1GBHD 0x4UL 1718 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_1GB 0x8UL 1719 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_2GB 0x10UL 1720 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_2_5GB 0x20UL 1721 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10GB 0x40UL 1722 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_20GB 0x80UL 1723 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_25GB 0x100UL 1724 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_40GB 0x200UL 1725 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_50GB 0x400UL 1726 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100GB 0x800UL 1727 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MBHD 0x1000UL 1728 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MB 0x2000UL 1729 __le16 force_link_speed; 1730 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100MB 0x1UL 1731 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_1GB 0xaUL 1732 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2GB 0x14UL 1733 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2_5GB 0x19UL 1734 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10GB 0x64UL 1735 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_20GB 0xc8UL 1736 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_25GB 0xfaUL 1737 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_40GB 0x190UL 1738 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_50GB 0x1f4UL 1739 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100GB 0x3e8UL 1740 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB 0xffffUL 1741 u8 auto_mode; 1742 #define PORT_PHY_QCFG_RESP_AUTO_MODE_NONE 0x0UL 1743 #define PORT_PHY_QCFG_RESP_AUTO_MODE_ALL_SPEEDS 0x1UL 1744 #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_SPEED 0x2UL 1745 #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_OR_BELOW 0x3UL 1746 #define PORT_PHY_QCFG_RESP_AUTO_MODE_SPEED_MASK 0x4UL 1747 u8 auto_pause; 1748 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_TX 0x1UL 1749 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_RX 0x2UL 1750 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_AUTONEG_PAUSE 0x4UL 1751 __le16 auto_link_speed; 1752 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100MB 0x1UL 1753 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_1GB 0xaUL 1754 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2GB 0x14UL 1755 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2_5GB 0x19UL 1756 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10GB 0x64UL 1757 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_20GB 0xc8UL 1758 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_25GB 0xfaUL 1759 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_40GB 0x190UL 1760 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_50GB 0x1f4UL 1761 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100GB 0x3e8UL 1762 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10MB 0xffffUL 1763 __le16 auto_link_speed_mask; 1764 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MBHD 0x1UL 1765 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MB 0x2UL 1766 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_1GBHD 0x4UL 1767 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_1GB 0x8UL 1768 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_2GB 0x10UL 1769 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_2_5GB 0x20UL 1770 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10GB 0x40UL 1771 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_20GB 0x80UL 1772 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_25GB 0x100UL 1773 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_40GB 0x200UL 1774 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_50GB 0x400UL 1775 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100GB 0x800UL 1776 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MBHD 0x1000UL 1777 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MB 0x2000UL 1778 u8 wirespeed; 1779 #define PORT_PHY_QCFG_RESP_WIRESPEED_OFF 0x0UL 1780 #define PORT_PHY_QCFG_RESP_WIRESPEED_ON 0x1UL 1781 u8 lpbk; 1782 #define PORT_PHY_QCFG_RESP_LPBK_NONE 0x0UL 1783 #define PORT_PHY_QCFG_RESP_LPBK_LOCAL 0x1UL 1784 #define PORT_PHY_QCFG_RESP_LPBK_REMOTE 0x2UL 1785 u8 force_pause; 1786 #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_TX 0x1UL 1787 #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_RX 0x2UL 1788 u8 module_status; 1789 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NONE 0x0UL 1790 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_DISABLETX 0x1UL 1791 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_WARNINGMSG 0x2UL 1792 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_PWRDOWN 0x3UL 1793 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTINSERTED 0x4UL 1794 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE 0xffUL 1795 __le32 preemphasis; 1796 u8 phy_maj; 1797 u8 phy_min; 1798 u8 phy_bld; 1799 u8 phy_type; 1800 #define PORT_PHY_QCFG_RESP_PHY_TYPE_UNKNOWN 0x0UL 1801 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASECR 0x1UL 1802 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR4 0x2UL 1803 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASELR 0x3UL 1804 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASESR 0x4UL 1805 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR2 0x5UL 1806 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKX 0x6UL 1807 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR 0x7UL 1808 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASET 0x8UL 1809 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASETE 0x9UL 1810 #define PORT_PHY_QCFG_RESP_PHY_TYPE_SGMIIEXTPHY 0xaUL 1811 u8 media_type; 1812 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_UNKNOWN 0x0UL 1813 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP 0x1UL 1814 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC 0x2UL 1815 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE 0x3UL 1816 u8 xcvr_pkg_type; 1817 #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_INTERNAL 0x1UL 1818 #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_EXTERNAL 0x2UL 1819 u8 eee_config_phy_addr; 1820 #define PORT_PHY_QCFG_RESP_PHY_ADDR_MASK 0x1fUL 1821 #define PORT_PHY_QCFG_RESP_PHY_ADDR_SFT 0 1822 #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_ENABLED 0x20UL 1823 #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_ACTIVE 0x40UL 1824 #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_TX_LPI 0x80UL 1825 #define PORT_PHY_QCFG_RESP_EEE_CONFIG_MASK 0xe0UL 1826 #define PORT_PHY_QCFG_RESP_EEE_CONFIG_SFT 5 1827 u8 parallel_detect; 1828 #define PORT_PHY_QCFG_RESP_PARALLEL_DETECT 0x1UL 1829 #define PORT_PHY_QCFG_RESP_RESERVED_MASK 0xfeUL 1830 #define PORT_PHY_QCFG_RESP_RESERVED_SFT 1 1831 __le16 link_partner_adv_speeds; 1832 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MBHD 0x1UL 1833 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MB 0x2UL 1834 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_1GBHD 0x4UL 1835 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_1GB 0x8UL 1836 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_2GB 0x10UL 1837 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_2_5GB 0x20UL 1838 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10GB 0x40UL 1839 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_20GB 0x80UL 1840 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_25GB 0x100UL 1841 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_40GB 0x200UL 1842 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_50GB 0x400UL 1843 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100GB 0x800UL 1844 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MBHD 0x1000UL 1845 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MB 0x2000UL 1846 u8 link_partner_adv_auto_mode; 1847 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_NONE 0x0UL 1848 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ALL_SPEEDS 0x1UL 1849 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_SPEED 0x2UL 1850 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_OR_BELOW 0x3UL 1851 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK 0x4UL 1852 u8 link_partner_adv_pause; 1853 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_TX 0x1UL 1854 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_RX 0x2UL 1855 __le16 adv_eee_link_speed_mask; 1856 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD1 0x1UL 1857 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_100MB 0x2UL 1858 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD2 0x4UL 1859 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_1GB 0x8UL 1860 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD3 0x10UL 1861 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD4 0x20UL 1862 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_10GB 0x40UL 1863 __le16 link_partner_adv_eee_link_speed_mask; 1864 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD1 0x1UL 1865 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_100MB 0x2UL 1866 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD2 0x4UL 1867 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_1GB 0x8UL 1868 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD3 0x10UL 1869 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD4 0x20UL 1870 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_10GB 0x40UL 1871 __le32 xcvr_identifier_type_tx_lpi_timer; 1872 #define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_MASK 0xffffffUL 1873 #define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_SFT 0 1874 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_MASK 0xff000000UL 1875 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFT 24 1876 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_UNKNOWN (0x0UL << 24) 1877 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFP (0x3UL << 24) 1878 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP (0xcUL << 24) 1879 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFPPLUS (0xdUL << 24) 1880 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP28 (0x11UL << 24) 1881 __le16 fec_cfg; 1882 #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_NONE_SUPPORTED 0x1UL 1883 #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_SUPPORTED 0x2UL 1884 #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_AUTONEG_ENABLED 0x4UL 1885 #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_SUPPORTED 0x8UL 1886 #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE74_ENABLED 0x10UL 1887 #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_SUPPORTED 0x20UL 1888 #define PORT_PHY_QCFG_RESP_FEC_CFG_FEC_CLAUSE91_ENABLED 0x40UL 1889 u8 unused_1; 1890 u8 unused_2; 1891 char phy_vendor_name[16]; 1892 char phy_vendor_partnumber[16]; 1893 __le32 unused_3; 1894 u8 unused_4; 1895 u8 unused_5; 1896 u8 unused_6; 1897 u8 valid; 1898 }; 1899 1900 /* hwrm_port_mac_cfg */ 1901 /* Input (40 bytes) */ 1902 struct hwrm_port_mac_cfg_input { 1903 __le16 req_type; 1904 __le16 cmpl_ring; 1905 __le16 seq_id; 1906 __le16 target_id; 1907 __le64 resp_addr; 1908 __le32 flags; 1909 #define PORT_MAC_CFG_REQ_FLAGS_MATCH_LINK 0x1UL 1910 #define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_ENABLE 0x2UL 1911 #define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_ENABLE 0x4UL 1912 #define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_ENABLE 0x8UL 1913 #define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_ENABLE 0x10UL 1914 #define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_DISABLE 0x20UL 1915 #define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_ENABLE 0x40UL 1916 #define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_DISABLE 0x80UL 1917 #define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_ENABLE 0x100UL 1918 #define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_DISABLE 0x200UL 1919 #define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_DISABLE 0x400UL 1920 #define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_DISABLE 0x800UL 1921 #define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_DISABLE 0x1000UL 1922 __le32 enables; 1923 #define PORT_MAC_CFG_REQ_ENABLES_IPG 0x1UL 1924 #define PORT_MAC_CFG_REQ_ENABLES_LPBK 0x2UL 1925 #define PORT_MAC_CFG_REQ_ENABLES_VLAN_PRI2COS_MAP_PRI 0x4UL 1926 #define PORT_MAC_CFG_REQ_ENABLES_RESERVED1 0x8UL 1927 #define PORT_MAC_CFG_REQ_ENABLES_TUNNEL_PRI2COS_MAP_PRI 0x10UL 1928 #define PORT_MAC_CFG_REQ_ENABLES_DSCP2COS_MAP_PRI 0x20UL 1929 #define PORT_MAC_CFG_REQ_ENABLES_RX_TS_CAPTURE_PTP_MSG_TYPE 0x40UL 1930 #define PORT_MAC_CFG_REQ_ENABLES_TX_TS_CAPTURE_PTP_MSG_TYPE 0x80UL 1931 #define PORT_MAC_CFG_REQ_ENABLES_COS_FIELD_CFG 0x100UL 1932 __le16 port_id; 1933 u8 ipg; 1934 u8 lpbk; 1935 #define PORT_MAC_CFG_REQ_LPBK_NONE 0x0UL 1936 #define PORT_MAC_CFG_REQ_LPBK_LOCAL 0x1UL 1937 #define PORT_MAC_CFG_REQ_LPBK_REMOTE 0x2UL 1938 u8 vlan_pri2cos_map_pri; 1939 u8 reserved1; 1940 u8 tunnel_pri2cos_map_pri; 1941 u8 dscp2pri_map_pri; 1942 __le16 rx_ts_capture_ptp_msg_type; 1943 __le16 tx_ts_capture_ptp_msg_type; 1944 u8 cos_field_cfg; 1945 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_RSVD1 0x1UL 1946 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_MASK 0x6UL 1947 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_SFT 1 1948 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_INNERMOST (0x0UL << 1) 1949 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTER (0x1UL << 1) 1950 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTERMOST (0x2UL << 1) 1951 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED (0x3UL << 1) 1952 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_LAST PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED 1953 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_MASK 0x18UL 1954 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_SFT 3 1955 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_INNERMOST (0x0UL << 3) 1956 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTER (0x1UL << 3) 1957 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTERMOST (0x2UL << 3) 1958 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED (0x3UL << 3) 1959 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_LAST PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED 1960 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_MASK 0xe0UL 1961 #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_SFT 5 1962 u8 unused_0[3]; 1963 }; 1964 1965 /* Output (16 bytes) */ 1966 struct hwrm_port_mac_cfg_output { 1967 __le16 error_code; 1968 __le16 req_type; 1969 __le16 seq_id; 1970 __le16 resp_len; 1971 __le16 mru; 1972 __le16 mtu; 1973 u8 ipg; 1974 u8 lpbk; 1975 #define PORT_MAC_CFG_RESP_LPBK_NONE 0x0UL 1976 #define PORT_MAC_CFG_RESP_LPBK_LOCAL 0x1UL 1977 #define PORT_MAC_CFG_RESP_LPBK_REMOTE 0x2UL 1978 u8 unused_0; 1979 u8 valid; 1980 }; 1981 1982 /* hwrm_port_qstats */ 1983 /* Input (40 bytes) */ 1984 struct hwrm_port_qstats_input { 1985 __le16 req_type; 1986 __le16 cmpl_ring; 1987 __le16 seq_id; 1988 __le16 target_id; 1989 __le64 resp_addr; 1990 __le16 port_id; 1991 u8 unused_0; 1992 u8 unused_1; 1993 u8 unused_2[3]; 1994 u8 unused_3; 1995 __le64 tx_stat_host_addr; 1996 __le64 rx_stat_host_addr; 1997 }; 1998 1999 /* Output (16 bytes) */ 2000 struct hwrm_port_qstats_output { 2001 __le16 error_code; 2002 __le16 req_type; 2003 __le16 seq_id; 2004 __le16 resp_len; 2005 __le16 tx_stat_size; 2006 __le16 rx_stat_size; 2007 u8 unused_0; 2008 u8 unused_1; 2009 u8 unused_2; 2010 u8 valid; 2011 }; 2012 2013 /* hwrm_port_lpbk_qstats */ 2014 /* Input (16 bytes) */ 2015 struct hwrm_port_lpbk_qstats_input { 2016 __le16 req_type; 2017 __le16 cmpl_ring; 2018 __le16 seq_id; 2019 __le16 target_id; 2020 __le64 resp_addr; 2021 }; 2022 2023 /* Output (96 bytes) */ 2024 struct hwrm_port_lpbk_qstats_output { 2025 __le16 error_code; 2026 __le16 req_type; 2027 __le16 seq_id; 2028 __le16 resp_len; 2029 __le64 lpbk_ucast_frames; 2030 __le64 lpbk_mcast_frames; 2031 __le64 lpbk_bcast_frames; 2032 __le64 lpbk_ucast_bytes; 2033 __le64 lpbk_mcast_bytes; 2034 __le64 lpbk_bcast_bytes; 2035 __le64 tx_stat_discard; 2036 __le64 tx_stat_error; 2037 __le64 rx_stat_discard; 2038 __le64 rx_stat_error; 2039 __le32 unused_0; 2040 u8 unused_1; 2041 u8 unused_2; 2042 u8 unused_3; 2043 u8 valid; 2044 }; 2045 2046 /* hwrm_port_clr_stats */ 2047 /* Input (24 bytes) */ 2048 struct hwrm_port_clr_stats_input { 2049 __le16 req_type; 2050 __le16 cmpl_ring; 2051 __le16 seq_id; 2052 __le16 target_id; 2053 __le64 resp_addr; 2054 __le16 port_id; 2055 __le16 unused_0[3]; 2056 }; 2057 2058 /* Output (16 bytes) */ 2059 struct hwrm_port_clr_stats_output { 2060 __le16 error_code; 2061 __le16 req_type; 2062 __le16 seq_id; 2063 __le16 resp_len; 2064 __le32 unused_0; 2065 u8 unused_1; 2066 u8 unused_2; 2067 u8 unused_3; 2068 u8 valid; 2069 }; 2070 2071 /* hwrm_port_lpbk_clr_stats */ 2072 /* Input (16 bytes) */ 2073 struct hwrm_port_lpbk_clr_stats_input { 2074 __le16 req_type; 2075 __le16 cmpl_ring; 2076 __le16 seq_id; 2077 __le16 target_id; 2078 __le64 resp_addr; 2079 }; 2080 2081 /* Output (16 bytes) */ 2082 struct hwrm_port_lpbk_clr_stats_output { 2083 __le16 error_code; 2084 __le16 req_type; 2085 __le16 seq_id; 2086 __le16 resp_len; 2087 __le32 unused_0; 2088 u8 unused_1; 2089 u8 unused_2; 2090 u8 unused_3; 2091 u8 valid; 2092 }; 2093 2094 /* hwrm_port_blink_led */ 2095 /* Input (24 bytes) */ 2096 struct hwrm_port_blink_led_input { 2097 __le16 req_type; 2098 __le16 cmpl_ring; 2099 __le16 seq_id; 2100 __le16 target_id; 2101 __le64 resp_addr; 2102 __le32 num_blinks; 2103 __le32 unused_0; 2104 }; 2105 2106 /* Output (16 bytes) */ 2107 struct hwrm_port_blink_led_output { 2108 __le16 error_code; 2109 __le16 req_type; 2110 __le16 seq_id; 2111 __le16 resp_len; 2112 __le32 unused_0; 2113 u8 unused_1; 2114 u8 unused_2; 2115 u8 unused_3; 2116 u8 valid; 2117 }; 2118 2119 /* hwrm_port_phy_qcaps */ 2120 /* Input (24 bytes) */ 2121 struct hwrm_port_phy_qcaps_input { 2122 __le16 req_type; 2123 __le16 cmpl_ring; 2124 __le16 seq_id; 2125 __le16 target_id; 2126 __le64 resp_addr; 2127 __le16 port_id; 2128 __le16 unused_0[3]; 2129 }; 2130 2131 /* Output (24 bytes) */ 2132 struct hwrm_port_phy_qcaps_output { 2133 __le16 error_code; 2134 __le16 req_type; 2135 __le16 seq_id; 2136 __le16 resp_len; 2137 u8 eee_supported; 2138 #define PORT_PHY_QCAPS_RESP_EEE_SUPPORTED 0x1UL 2139 #define PORT_PHY_QCAPS_RESP_RSVD1_MASK 0xfeUL 2140 #define PORT_PHY_QCAPS_RESP_RSVD1_SFT 1 2141 u8 unused_0; 2142 __le16 supported_speeds_force_mode; 2143 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MBHD 0x1UL 2144 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MB 0x2UL 2145 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GBHD 0x4UL 2146 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GB 0x8UL 2147 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2GB 0x10UL 2148 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2_5GB 0x20UL 2149 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10GB 0x40UL 2150 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_20GB 0x80UL 2151 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_25GB 0x100UL 2152 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_40GB 0x200UL 2153 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_50GB 0x400UL 2154 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100GB 0x800UL 2155 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MBHD 0x1000UL 2156 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MB 0x2000UL 2157 __le16 supported_speeds_auto_mode; 2158 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MBHD 0x1UL 2159 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MB 0x2UL 2160 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GBHD 0x4UL 2161 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GB 0x8UL 2162 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2GB 0x10UL 2163 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2_5GB 0x20UL 2164 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10GB 0x40UL 2165 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_20GB 0x80UL 2166 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_25GB 0x100UL 2167 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_40GB 0x200UL 2168 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_50GB 0x400UL 2169 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100GB 0x800UL 2170 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MBHD 0x1000UL 2171 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MB 0x2000UL 2172 __le16 supported_speeds_eee_mode; 2173 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD1 0x1UL 2174 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_100MB 0x2UL 2175 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD2 0x4UL 2176 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_1GB 0x8UL 2177 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD3 0x10UL 2178 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD4 0x20UL 2179 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_10GB 0x40UL 2180 __le32 tx_lpi_timer_low; 2181 #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_MASK 0xffffffUL 2182 #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_SFT 0 2183 #define PORT_PHY_QCAPS_RESP_RSVD2_MASK 0xff000000UL 2184 #define PORT_PHY_QCAPS_RESP_RSVD2_SFT 24 2185 __le32 valid_tx_lpi_timer_high; 2186 #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_MASK 0xffffffUL 2187 #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_SFT 0 2188 #define PORT_PHY_QCAPS_RESP_VALID_MASK 0xff000000UL 2189 #define PORT_PHY_QCAPS_RESP_VALID_SFT 24 2190 }; 2191 2192 /* hwrm_port_phy_i2c_read */ 2193 /* Input (40 bytes) */ 2194 struct hwrm_port_phy_i2c_read_input { 2195 __le16 req_type; 2196 __le16 cmpl_ring; 2197 __le16 seq_id; 2198 __le16 target_id; 2199 __le64 resp_addr; 2200 __le32 flags; 2201 __le32 enables; 2202 #define PORT_PHY_I2C_READ_REQ_ENABLES_PAGE_OFFSET 0x1UL 2203 __le16 port_id; 2204 u8 i2c_slave_addr; 2205 u8 unused_0; 2206 __le16 page_number; 2207 __le16 page_offset; 2208 u8 data_length; 2209 u8 unused_1[7]; 2210 }; 2211 2212 /* Output (80 bytes) */ 2213 struct hwrm_port_phy_i2c_read_output { 2214 __le16 error_code; 2215 __le16 req_type; 2216 __le16 seq_id; 2217 __le16 resp_len; 2218 __le32 data[16]; 2219 __le32 unused_0; 2220 u8 unused_1; 2221 u8 unused_2; 2222 u8 unused_3; 2223 u8 valid; 2224 }; 2225 2226 /* hwrm_queue_qportcfg */ 2227 /* Input (24 bytes) */ 2228 struct hwrm_queue_qportcfg_input { 2229 __le16 req_type; 2230 __le16 cmpl_ring; 2231 __le16 seq_id; 2232 __le16 target_id; 2233 __le64 resp_addr; 2234 __le32 flags; 2235 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH 0x1UL 2236 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_TX 0x0UL 2237 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX 0x1UL 2238 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_LAST QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX 2239 __le16 port_id; 2240 __le16 unused_0; 2241 }; 2242 2243 /* Output (32 bytes) */ 2244 struct hwrm_queue_qportcfg_output { 2245 __le16 error_code; 2246 __le16 req_type; 2247 __le16 seq_id; 2248 __le16 resp_len; 2249 u8 max_configurable_queues; 2250 u8 max_configurable_lossless_queues; 2251 u8 queue_cfg_allowed; 2252 u8 queue_cfg_info; 2253 #define QUEUE_QPORTCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG 0x1UL 2254 u8 queue_pfcenable_cfg_allowed; 2255 u8 queue_pri2cos_cfg_allowed; 2256 u8 queue_cos2bw_cfg_allowed; 2257 u8 queue_id0; 2258 u8 queue_id0_service_profile; 2259 #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSY 0x0UL 2260 #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS 0x1UL 2261 #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_UNKNOWN 0xffUL 2262 u8 queue_id1; 2263 u8 queue_id1_service_profile; 2264 #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSY 0x0UL 2265 #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS 0x1UL 2266 #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_UNKNOWN 0xffUL 2267 u8 queue_id2; 2268 u8 queue_id2_service_profile; 2269 #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSY 0x0UL 2270 #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS 0x1UL 2271 #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN 0xffUL 2272 u8 queue_id3; 2273 u8 queue_id3_service_profile; 2274 #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSY 0x0UL 2275 #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS 0x1UL 2276 #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN 0xffUL 2277 u8 queue_id4; 2278 u8 queue_id4_service_profile; 2279 #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSY 0x0UL 2280 #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS 0x1UL 2281 #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN 0xffUL 2282 u8 queue_id5; 2283 u8 queue_id5_service_profile; 2284 #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSY 0x0UL 2285 #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS 0x1UL 2286 #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN 0xffUL 2287 u8 queue_id6; 2288 u8 queue_id6_service_profile; 2289 #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSY 0x0UL 2290 #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS 0x1UL 2291 #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN 0xffUL 2292 u8 queue_id7; 2293 u8 queue_id7_service_profile; 2294 #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSY 0x0UL 2295 #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS 0x1UL 2296 #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN 0xffUL 2297 u8 valid; 2298 }; 2299 2300 /* hwrm_queue_cfg */ 2301 /* Input (40 bytes) */ 2302 struct hwrm_queue_cfg_input { 2303 __le16 req_type; 2304 __le16 cmpl_ring; 2305 __le16 seq_id; 2306 __le16 target_id; 2307 __le64 resp_addr; 2308 __le32 flags; 2309 #define QUEUE_CFG_REQ_FLAGS_PATH_MASK 0x3UL 2310 #define QUEUE_CFG_REQ_FLAGS_PATH_SFT 0 2311 #define QUEUE_CFG_REQ_FLAGS_PATH_TX 0x0UL 2312 #define QUEUE_CFG_REQ_FLAGS_PATH_RX 0x1UL 2313 #define QUEUE_CFG_REQ_FLAGS_PATH_BIDIR 0x2UL 2314 #define QUEUE_CFG_REQ_FLAGS_PATH_LAST QUEUE_CFG_REQ_FLAGS_PATH_BIDIR 2315 __le32 enables; 2316 #define QUEUE_CFG_REQ_ENABLES_DFLT_LEN 0x1UL 2317 #define QUEUE_CFG_REQ_ENABLES_SERVICE_PROFILE 0x2UL 2318 __le32 queue_id; 2319 __le32 dflt_len; 2320 u8 service_profile; 2321 #define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSY 0x0UL 2322 #define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSLESS 0x1UL 2323 #define QUEUE_CFG_REQ_SERVICE_PROFILE_UNKNOWN 0xffUL 2324 u8 unused_0[7]; 2325 }; 2326 2327 /* Output (16 bytes) */ 2328 struct hwrm_queue_cfg_output { 2329 __le16 error_code; 2330 __le16 req_type; 2331 __le16 seq_id; 2332 __le16 resp_len; 2333 __le32 unused_0; 2334 u8 unused_1; 2335 u8 unused_2; 2336 u8 unused_3; 2337 u8 valid; 2338 }; 2339 2340 /* hwrm_queue_pfcenable_cfg */ 2341 /* Input (24 bytes) */ 2342 struct hwrm_queue_pfcenable_cfg_input { 2343 __le16 req_type; 2344 __le16 cmpl_ring; 2345 __le16 seq_id; 2346 __le16 target_id; 2347 __le64 resp_addr; 2348 __le32 flags; 2349 #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI0_PFC_ENABLED 0x1UL 2350 #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI1_PFC_ENABLED 0x2UL 2351 #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI2_PFC_ENABLED 0x4UL 2352 #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI3_PFC_ENABLED 0x8UL 2353 #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI4_PFC_ENABLED 0x10UL 2354 #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI5_PFC_ENABLED 0x20UL 2355 #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI6_PFC_ENABLED 0x40UL 2356 #define QUEUE_PFCENABLE_CFG_REQ_FLAGS_PRI7_PFC_ENABLED 0x80UL 2357 __le16 port_id; 2358 __le16 unused_0; 2359 }; 2360 2361 /* Output (16 bytes) */ 2362 struct hwrm_queue_pfcenable_cfg_output { 2363 __le16 error_code; 2364 __le16 req_type; 2365 __le16 seq_id; 2366 __le16 resp_len; 2367 __le32 unused_0; 2368 u8 unused_1; 2369 u8 unused_2; 2370 u8 unused_3; 2371 u8 valid; 2372 }; 2373 2374 /* hwrm_queue_pri2cos_cfg */ 2375 /* Input (40 bytes) */ 2376 struct hwrm_queue_pri2cos_cfg_input { 2377 __le16 req_type; 2378 __le16 cmpl_ring; 2379 __le16 seq_id; 2380 __le16 target_id; 2381 __le64 resp_addr; 2382 __le32 flags; 2383 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_MASK 0x3UL 2384 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_SFT 0 2385 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 2386 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 2387 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR (0x2UL << 0) 2388 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_LAST QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR 2389 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_IVLAN 0x4UL 2390 __le32 enables; 2391 #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI0_COS_QUEUE_ID 0x1UL 2392 #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI1_COS_QUEUE_ID 0x2UL 2393 #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI2_COS_QUEUE_ID 0x4UL 2394 #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI3_COS_QUEUE_ID 0x8UL 2395 #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI4_COS_QUEUE_ID 0x10UL 2396 #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI5_COS_QUEUE_ID 0x20UL 2397 #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI6_COS_QUEUE_ID 0x40UL 2398 #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI7_COS_QUEUE_ID 0x80UL 2399 u8 port_id; 2400 u8 pri0_cos_queue_id; 2401 u8 pri1_cos_queue_id; 2402 u8 pri2_cos_queue_id; 2403 u8 pri3_cos_queue_id; 2404 u8 pri4_cos_queue_id; 2405 u8 pri5_cos_queue_id; 2406 u8 pri6_cos_queue_id; 2407 u8 pri7_cos_queue_id; 2408 u8 unused_0[7]; 2409 }; 2410 2411 /* Output (16 bytes) */ 2412 struct hwrm_queue_pri2cos_cfg_output { 2413 __le16 error_code; 2414 __le16 req_type; 2415 __le16 seq_id; 2416 __le16 resp_len; 2417 __le32 unused_0; 2418 u8 unused_1; 2419 u8 unused_2; 2420 u8 unused_3; 2421 u8 valid; 2422 }; 2423 2424 /* hwrm_queue_cos2bw_cfg */ 2425 /* Input (128 bytes) */ 2426 struct hwrm_queue_cos2bw_cfg_input { 2427 __le16 req_type; 2428 __le16 cmpl_ring; 2429 __le16 seq_id; 2430 __le16 target_id; 2431 __le64 resp_addr; 2432 __le32 flags; 2433 __le32 enables; 2434 #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID0_VALID 0x1UL 2435 #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID1_VALID 0x2UL 2436 #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID2_VALID 0x4UL 2437 #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID3_VALID 0x8UL 2438 #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID4_VALID 0x10UL 2439 #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID5_VALID 0x20UL 2440 #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID6_VALID 0x40UL 2441 #define QUEUE_COS2BW_CFG_REQ_ENABLES_COS_QUEUE_ID7_VALID 0x80UL 2442 __le16 port_id; 2443 u8 queue_id0; 2444 u8 unused_0; 2445 __le32 queue_id0_min_bw; 2446 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2447 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_SFT 0 2448 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_RSVD 0x10000000UL 2449 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2450 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT 29 2451 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2452 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2453 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2454 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID 2455 __le32 queue_id0_max_bw; 2456 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2457 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_SFT 0 2458 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_RSVD 0x10000000UL 2459 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2460 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT 29 2461 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2462 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2463 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2464 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID 2465 u8 queue_id0_tsa_assign; 2466 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_SP 0x0UL 2467 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_ETS 0x1UL 2468 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2469 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST 0xffUL 2470 u8 queue_id0_pri_lvl; 2471 u8 queue_id0_bw_weight; 2472 u8 queue_id1; 2473 __le32 queue_id1_min_bw; 2474 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2475 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_SFT 0 2476 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_RSVD 0x10000000UL 2477 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2478 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_SFT 29 2479 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2480 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2481 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2482 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID 2483 __le32 queue_id1_max_bw; 2484 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2485 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_SFT 0 2486 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_RSVD 0x10000000UL 2487 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2488 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_SFT 29 2489 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2490 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2491 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2492 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID 2493 u8 queue_id1_tsa_assign; 2494 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_SP 0x0UL 2495 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_ETS 0x1UL 2496 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2497 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_LAST 0xffUL 2498 u8 queue_id1_pri_lvl; 2499 u8 queue_id1_bw_weight; 2500 u8 queue_id2; 2501 __le32 queue_id2_min_bw; 2502 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2503 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_SFT 0 2504 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_RSVD 0x10000000UL 2505 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2506 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_SFT 29 2507 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2508 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2509 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2510 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID 2511 __le32 queue_id2_max_bw; 2512 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2513 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_SFT 0 2514 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_RSVD 0x10000000UL 2515 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2516 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_SFT 29 2517 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2518 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2519 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2520 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID 2521 u8 queue_id2_tsa_assign; 2522 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_SP 0x0UL 2523 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_ETS 0x1UL 2524 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2525 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_LAST 0xffUL 2526 u8 queue_id2_pri_lvl; 2527 u8 queue_id2_bw_weight; 2528 u8 queue_id3; 2529 __le32 queue_id3_min_bw; 2530 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2531 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_SFT 0 2532 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_RSVD 0x10000000UL 2533 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2534 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_SFT 29 2535 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2536 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2537 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2538 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID 2539 __le32 queue_id3_max_bw; 2540 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2541 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_SFT 0 2542 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_RSVD 0x10000000UL 2543 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2544 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_SFT 29 2545 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2546 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2547 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2548 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID 2549 u8 queue_id3_tsa_assign; 2550 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_SP 0x0UL 2551 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_ETS 0x1UL 2552 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2553 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_LAST 0xffUL 2554 u8 queue_id3_pri_lvl; 2555 u8 queue_id3_bw_weight; 2556 u8 queue_id4; 2557 __le32 queue_id4_min_bw; 2558 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2559 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_SFT 0 2560 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_RSVD 0x10000000UL 2561 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2562 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_SFT 29 2563 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2564 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2565 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2566 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID 2567 __le32 queue_id4_max_bw; 2568 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2569 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_SFT 0 2570 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_RSVD 0x10000000UL 2571 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2572 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_SFT 29 2573 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2574 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2575 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2576 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID 2577 u8 queue_id4_tsa_assign; 2578 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_SP 0x0UL 2579 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_ETS 0x1UL 2580 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2581 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_LAST 0xffUL 2582 u8 queue_id4_pri_lvl; 2583 u8 queue_id4_bw_weight; 2584 u8 queue_id5; 2585 __le32 queue_id5_min_bw; 2586 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2587 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_SFT 0 2588 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_RSVD 0x10000000UL 2589 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2590 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_SFT 29 2591 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2592 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2593 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2594 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID 2595 __le32 queue_id5_max_bw; 2596 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2597 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_SFT 0 2598 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_RSVD 0x10000000UL 2599 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2600 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_SFT 29 2601 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2602 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2603 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2604 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID 2605 u8 queue_id5_tsa_assign; 2606 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_SP 0x0UL 2607 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_ETS 0x1UL 2608 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2609 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_LAST 0xffUL 2610 u8 queue_id5_pri_lvl; 2611 u8 queue_id5_bw_weight; 2612 u8 queue_id6; 2613 __le32 queue_id6_min_bw; 2614 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2615 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_SFT 0 2616 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_RSVD 0x10000000UL 2617 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2618 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_SFT 29 2619 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2620 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2621 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2622 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID 2623 __le32 queue_id6_max_bw; 2624 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2625 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_SFT 0 2626 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_RSVD 0x10000000UL 2627 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2628 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_SFT 29 2629 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2630 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2631 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2632 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID 2633 u8 queue_id6_tsa_assign; 2634 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_SP 0x0UL 2635 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_ETS 0x1UL 2636 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2637 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_LAST 0xffUL 2638 u8 queue_id6_pri_lvl; 2639 u8 queue_id6_bw_weight; 2640 u8 queue_id7; 2641 __le32 queue_id7_min_bw; 2642 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2643 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_SFT 0 2644 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_RSVD 0x10000000UL 2645 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2646 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_SFT 29 2647 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2648 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2649 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2650 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID 2651 __le32 queue_id7_max_bw; 2652 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2653 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_SFT 0 2654 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_RSVD 0x10000000UL 2655 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2656 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_SFT 29 2657 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2658 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2659 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2660 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_LAST QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID 2661 u8 queue_id7_tsa_assign; 2662 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_SP 0x0UL 2663 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_ETS 0x1UL 2664 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2665 #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_LAST 0xffUL 2666 u8 queue_id7_pri_lvl; 2667 u8 queue_id7_bw_weight; 2668 u8 unused_1[5]; 2669 }; 2670 2671 /* Output (16 bytes) */ 2672 struct hwrm_queue_cos2bw_cfg_output { 2673 __le16 error_code; 2674 __le16 req_type; 2675 __le16 seq_id; 2676 __le16 resp_len; 2677 __le32 unused_0; 2678 u8 unused_1; 2679 u8 unused_2; 2680 u8 unused_3; 2681 u8 valid; 2682 }; 2683 2684 /* hwrm_vnic_alloc */ 2685 /* Input (24 bytes) */ 2686 struct hwrm_vnic_alloc_input { 2687 __le16 req_type; 2688 __le16 cmpl_ring; 2689 __le16 seq_id; 2690 __le16 target_id; 2691 __le64 resp_addr; 2692 __le32 flags; 2693 #define VNIC_ALLOC_REQ_FLAGS_DEFAULT 0x1UL 2694 __le32 unused_0; 2695 }; 2696 2697 /* Output (16 bytes) */ 2698 struct hwrm_vnic_alloc_output { 2699 __le16 error_code; 2700 __le16 req_type; 2701 __le16 seq_id; 2702 __le16 resp_len; 2703 __le32 vnic_id; 2704 u8 unused_0; 2705 u8 unused_1; 2706 u8 unused_2; 2707 u8 valid; 2708 }; 2709 2710 /* hwrm_vnic_free */ 2711 /* Input (24 bytes) */ 2712 struct hwrm_vnic_free_input { 2713 __le16 req_type; 2714 __le16 cmpl_ring; 2715 __le16 seq_id; 2716 __le16 target_id; 2717 __le64 resp_addr; 2718 __le32 vnic_id; 2719 __le32 unused_0; 2720 }; 2721 2722 /* Output (16 bytes) */ 2723 struct hwrm_vnic_free_output { 2724 __le16 error_code; 2725 __le16 req_type; 2726 __le16 seq_id; 2727 __le16 resp_len; 2728 __le32 unused_0; 2729 u8 unused_1; 2730 u8 unused_2; 2731 u8 unused_3; 2732 u8 valid; 2733 }; 2734 2735 /* hwrm_vnic_cfg */ 2736 /* Input (40 bytes) */ 2737 struct hwrm_vnic_cfg_input { 2738 __le16 req_type; 2739 __le16 cmpl_ring; 2740 __le16 seq_id; 2741 __le16 target_id; 2742 __le64 resp_addr; 2743 __le32 flags; 2744 #define VNIC_CFG_REQ_FLAGS_DEFAULT 0x1UL 2745 #define VNIC_CFG_REQ_FLAGS_VLAN_STRIP_MODE 0x2UL 2746 #define VNIC_CFG_REQ_FLAGS_BD_STALL_MODE 0x4UL 2747 #define VNIC_CFG_REQ_FLAGS_ROCE_DUAL_VNIC_MODE 0x8UL 2748 #define VNIC_CFG_REQ_FLAGS_ROCE_ONLY_VNIC_MODE 0x10UL 2749 #define VNIC_CFG_REQ_FLAGS_RSS_DFLT_CR_MODE 0x20UL 2750 __le32 enables; 2751 #define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP 0x1UL 2752 #define VNIC_CFG_REQ_ENABLES_RSS_RULE 0x2UL 2753 #define VNIC_CFG_REQ_ENABLES_COS_RULE 0x4UL 2754 #define VNIC_CFG_REQ_ENABLES_LB_RULE 0x8UL 2755 #define VNIC_CFG_REQ_ENABLES_MRU 0x10UL 2756 __le16 vnic_id; 2757 __le16 dflt_ring_grp; 2758 __le16 rss_rule; 2759 __le16 cos_rule; 2760 __le16 lb_rule; 2761 __le16 mru; 2762 __le32 unused_0; 2763 }; 2764 2765 /* Output (16 bytes) */ 2766 struct hwrm_vnic_cfg_output { 2767 __le16 error_code; 2768 __le16 req_type; 2769 __le16 seq_id; 2770 __le16 resp_len; 2771 __le32 unused_0; 2772 u8 unused_1; 2773 u8 unused_2; 2774 u8 unused_3; 2775 u8 valid; 2776 }; 2777 2778 /* hwrm_vnic_tpa_cfg */ 2779 /* Input (40 bytes) */ 2780 struct hwrm_vnic_tpa_cfg_input { 2781 __le16 req_type; 2782 __le16 cmpl_ring; 2783 __le16 seq_id; 2784 __le16 target_id; 2785 __le64 resp_addr; 2786 __le32 flags; 2787 #define VNIC_TPA_CFG_REQ_FLAGS_TPA 0x1UL 2788 #define VNIC_TPA_CFG_REQ_FLAGS_ENCAP_TPA 0x2UL 2789 #define VNIC_TPA_CFG_REQ_FLAGS_RSC_WND_UPDATE 0x4UL 2790 #define VNIC_TPA_CFG_REQ_FLAGS_GRO 0x8UL 2791 #define VNIC_TPA_CFG_REQ_FLAGS_AGG_WITH_ECN 0x10UL 2792 #define VNIC_TPA_CFG_REQ_FLAGS_AGG_WITH_SAME_GRE_SEQ 0x20UL 2793 #define VNIC_TPA_CFG_REQ_FLAGS_GRO_IPID_CHECK 0x40UL 2794 #define VNIC_TPA_CFG_REQ_FLAGS_GRO_TTL_CHECK 0x80UL 2795 __le32 enables; 2796 #define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGG_SEGS 0x1UL 2797 #define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGGS 0x2UL 2798 #define VNIC_TPA_CFG_REQ_ENABLES_MAX_AGG_TIMER 0x4UL 2799 #define VNIC_TPA_CFG_REQ_ENABLES_MIN_AGG_LEN 0x8UL 2800 __le16 vnic_id; 2801 __le16 max_agg_segs; 2802 #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_1 0x0UL 2803 #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_2 0x1UL 2804 #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_4 0x2UL 2805 #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_8 0x3UL 2806 #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_MAX 0x1fUL 2807 __le16 max_aggs; 2808 #define VNIC_TPA_CFG_REQ_MAX_AGGS_1 0x0UL 2809 #define VNIC_TPA_CFG_REQ_MAX_AGGS_2 0x1UL 2810 #define VNIC_TPA_CFG_REQ_MAX_AGGS_4 0x2UL 2811 #define VNIC_TPA_CFG_REQ_MAX_AGGS_8 0x3UL 2812 #define VNIC_TPA_CFG_REQ_MAX_AGGS_16 0x4UL 2813 #define VNIC_TPA_CFG_REQ_MAX_AGGS_MAX 0x7UL 2814 u8 unused_0; 2815 u8 unused_1; 2816 __le32 max_agg_timer; 2817 __le32 min_agg_len; 2818 }; 2819 2820 /* Output (16 bytes) */ 2821 struct hwrm_vnic_tpa_cfg_output { 2822 __le16 error_code; 2823 __le16 req_type; 2824 __le16 seq_id; 2825 __le16 resp_len; 2826 __le32 unused_0; 2827 u8 unused_1; 2828 u8 unused_2; 2829 u8 unused_3; 2830 u8 valid; 2831 }; 2832 2833 /* hwrm_vnic_rss_cfg */ 2834 /* Input (48 bytes) */ 2835 struct hwrm_vnic_rss_cfg_input { 2836 __le16 req_type; 2837 __le16 cmpl_ring; 2838 __le16 seq_id; 2839 __le16 target_id; 2840 __le64 resp_addr; 2841 __le32 hash_type; 2842 #define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV4 0x1UL 2843 #define VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV4 0x2UL 2844 #define VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV4 0x4UL 2845 #define VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6 0x8UL 2846 #define VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV6 0x10UL 2847 #define VNIC_RSS_CFG_REQ_HASH_TYPE_UDP_IPV6 0x20UL 2848 __le32 unused_0; 2849 __le64 ring_grp_tbl_addr; 2850 __le64 hash_key_tbl_addr; 2851 __le16 rss_ctx_idx; 2852 __le16 unused_1[3]; 2853 }; 2854 2855 /* Output (16 bytes) */ 2856 struct hwrm_vnic_rss_cfg_output { 2857 __le16 error_code; 2858 __le16 req_type; 2859 __le16 seq_id; 2860 __le16 resp_len; 2861 __le32 unused_0; 2862 u8 unused_1; 2863 u8 unused_2; 2864 u8 unused_3; 2865 u8 valid; 2866 }; 2867 2868 /* hwrm_vnic_plcmodes_cfg */ 2869 /* Input (40 bytes) */ 2870 struct hwrm_vnic_plcmodes_cfg_input { 2871 __le16 req_type; 2872 __le16 cmpl_ring; 2873 __le16 seq_id; 2874 __le16 target_id; 2875 __le64 resp_addr; 2876 __le32 flags; 2877 #define VNIC_PLCMODES_CFG_REQ_FLAGS_REGULAR_PLACEMENT 0x1UL 2878 #define VNIC_PLCMODES_CFG_REQ_FLAGS_JUMBO_PLACEMENT 0x2UL 2879 #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV4 0x4UL 2880 #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_IPV6 0x8UL 2881 #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_FCOE 0x10UL 2882 #define VNIC_PLCMODES_CFG_REQ_FLAGS_HDS_ROCE 0x20UL 2883 __le32 enables; 2884 #define VNIC_PLCMODES_CFG_REQ_ENABLES_JUMBO_THRESH_VALID 0x1UL 2885 #define VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_OFFSET_VALID 0x2UL 2886 #define VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_THRESHOLD_VALID 0x4UL 2887 __le32 vnic_id; 2888 __le16 jumbo_thresh; 2889 __le16 hds_offset; 2890 __le16 hds_threshold; 2891 __le16 unused_0[3]; 2892 }; 2893 2894 /* Output (16 bytes) */ 2895 struct hwrm_vnic_plcmodes_cfg_output { 2896 __le16 error_code; 2897 __le16 req_type; 2898 __le16 seq_id; 2899 __le16 resp_len; 2900 __le32 unused_0; 2901 u8 unused_1; 2902 u8 unused_2; 2903 u8 unused_3; 2904 u8 valid; 2905 }; 2906 2907 /* hwrm_vnic_rss_cos_lb_ctx_alloc */ 2908 /* Input (16 bytes) */ 2909 struct hwrm_vnic_rss_cos_lb_ctx_alloc_input { 2910 __le16 req_type; 2911 __le16 cmpl_ring; 2912 __le16 seq_id; 2913 __le16 target_id; 2914 __le64 resp_addr; 2915 }; 2916 2917 /* Output (16 bytes) */ 2918 struct hwrm_vnic_rss_cos_lb_ctx_alloc_output { 2919 __le16 error_code; 2920 __le16 req_type; 2921 __le16 seq_id; 2922 __le16 resp_len; 2923 __le16 rss_cos_lb_ctx_id; 2924 u8 unused_0; 2925 u8 unused_1; 2926 u8 unused_2; 2927 u8 unused_3; 2928 u8 unused_4; 2929 u8 valid; 2930 }; 2931 2932 /* hwrm_vnic_rss_cos_lb_ctx_free */ 2933 /* Input (24 bytes) */ 2934 struct hwrm_vnic_rss_cos_lb_ctx_free_input { 2935 __le16 req_type; 2936 __le16 cmpl_ring; 2937 __le16 seq_id; 2938 __le16 target_id; 2939 __le64 resp_addr; 2940 __le16 rss_cos_lb_ctx_id; 2941 __le16 unused_0[3]; 2942 }; 2943 2944 /* Output (16 bytes) */ 2945 struct hwrm_vnic_rss_cos_lb_ctx_free_output { 2946 __le16 error_code; 2947 __le16 req_type; 2948 __le16 seq_id; 2949 __le16 resp_len; 2950 __le32 unused_0; 2951 u8 unused_1; 2952 u8 unused_2; 2953 u8 unused_3; 2954 u8 valid; 2955 }; 2956 2957 /* hwrm_ring_alloc */ 2958 /* Input (80 bytes) */ 2959 struct hwrm_ring_alloc_input { 2960 __le16 req_type; 2961 __le16 cmpl_ring; 2962 __le16 seq_id; 2963 __le16 target_id; 2964 __le64 resp_addr; 2965 __le32 enables; 2966 #define RING_ALLOC_REQ_ENABLES_RESERVED1 0x1UL 2967 #define RING_ALLOC_REQ_ENABLES_RING_ARB_CFG 0x2UL 2968 #define RING_ALLOC_REQ_ENABLES_RESERVED3 0x4UL 2969 #define RING_ALLOC_REQ_ENABLES_STAT_CTX_ID_VALID 0x8UL 2970 #define RING_ALLOC_REQ_ENABLES_RESERVED4 0x10UL 2971 #define RING_ALLOC_REQ_ENABLES_MAX_BW_VALID 0x20UL 2972 u8 ring_type; 2973 #define RING_ALLOC_REQ_RING_TYPE_CMPL 0x0UL 2974 #define RING_ALLOC_REQ_RING_TYPE_TX 0x1UL 2975 #define RING_ALLOC_REQ_RING_TYPE_RX 0x2UL 2976 u8 unused_0; 2977 __le16 unused_1; 2978 __le64 page_tbl_addr; 2979 __le32 fbo; 2980 u8 page_size; 2981 u8 page_tbl_depth; 2982 u8 unused_2; 2983 u8 unused_3; 2984 __le32 length; 2985 __le16 logical_id; 2986 __le16 cmpl_ring_id; 2987 __le16 queue_id; 2988 u8 unused_4; 2989 u8 unused_5; 2990 __le32 reserved1; 2991 __le16 ring_arb_cfg; 2992 #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_MASK 0xfUL 2993 #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SFT 0 2994 #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SP (0x1UL << 0) 2995 #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ (0x2UL << 0) 2996 #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_LAST RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ 2997 #define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_MASK 0xf0UL 2998 #define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_SFT 4 2999 #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_MASK 0xff00UL 3000 #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_SFT 8 3001 u8 unused_6; 3002 u8 unused_7; 3003 __le32 reserved3; 3004 __le32 stat_ctx_id; 3005 __le32 reserved4; 3006 __le32 max_bw; 3007 #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_MASK 0xfffffffUL 3008 #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_SFT 0 3009 #define RING_ALLOC_REQ_MAX_BW_RSVD 0x10000000UL 3010 #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 3011 #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_SFT 29 3012 #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 3013 #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 3014 #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 3015 #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_LAST RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID 3016 u8 int_mode; 3017 #define RING_ALLOC_REQ_INT_MODE_LEGACY 0x0UL 3018 #define RING_ALLOC_REQ_INT_MODE_RSVD 0x1UL 3019 #define RING_ALLOC_REQ_INT_MODE_MSIX 0x2UL 3020 #define RING_ALLOC_REQ_INT_MODE_POLL 0x3UL 3021 u8 unused_8[3]; 3022 }; 3023 3024 /* Output (16 bytes) */ 3025 struct hwrm_ring_alloc_output { 3026 __le16 error_code; 3027 __le16 req_type; 3028 __le16 seq_id; 3029 __le16 resp_len; 3030 __le16 ring_id; 3031 __le16 logical_ring_id; 3032 u8 unused_0; 3033 u8 unused_1; 3034 u8 unused_2; 3035 u8 valid; 3036 }; 3037 3038 /* hwrm_ring_free */ 3039 /* Input (24 bytes) */ 3040 struct hwrm_ring_free_input { 3041 __le16 req_type; 3042 __le16 cmpl_ring; 3043 __le16 seq_id; 3044 __le16 target_id; 3045 __le64 resp_addr; 3046 u8 ring_type; 3047 #define RING_FREE_REQ_RING_TYPE_CMPL 0x0UL 3048 #define RING_FREE_REQ_RING_TYPE_TX 0x1UL 3049 #define RING_FREE_REQ_RING_TYPE_RX 0x2UL 3050 u8 unused_0; 3051 __le16 ring_id; 3052 __le32 unused_1; 3053 }; 3054 3055 /* Output (16 bytes) */ 3056 struct hwrm_ring_free_output { 3057 __le16 error_code; 3058 __le16 req_type; 3059 __le16 seq_id; 3060 __le16 resp_len; 3061 __le32 unused_0; 3062 u8 unused_1; 3063 u8 unused_2; 3064 u8 unused_3; 3065 u8 valid; 3066 }; 3067 3068 /* hwrm_ring_cmpl_ring_qaggint_params */ 3069 /* Input (24 bytes) */ 3070 struct hwrm_ring_cmpl_ring_qaggint_params_input { 3071 __le16 req_type; 3072 __le16 cmpl_ring; 3073 __le16 seq_id; 3074 __le16 target_id; 3075 __le64 resp_addr; 3076 __le16 ring_id; 3077 __le16 unused_0[3]; 3078 }; 3079 3080 /* Output (32 bytes) */ 3081 struct hwrm_ring_cmpl_ring_qaggint_params_output { 3082 __le16 error_code; 3083 __le16 req_type; 3084 __le16 seq_id; 3085 __le16 resp_len; 3086 __le16 flags; 3087 #define RING_CMPL_RING_QAGGINT_PARAMS_RESP_FLAGS_TIMER_RESET 0x1UL 3088 #define RING_CMPL_RING_QAGGINT_PARAMS_RESP_FLAGS_RING_IDLE 0x2UL 3089 __le16 num_cmpl_dma_aggr; 3090 __le16 num_cmpl_dma_aggr_during_int; 3091 __le16 cmpl_aggr_dma_tmr; 3092 __le16 cmpl_aggr_dma_tmr_during_int; 3093 __le16 int_lat_tmr_min; 3094 __le16 int_lat_tmr_max; 3095 __le16 num_cmpl_aggr_int; 3096 __le32 unused_0; 3097 u8 unused_1; 3098 u8 unused_2; 3099 u8 unused_3; 3100 u8 valid; 3101 }; 3102 3103 /* hwrm_ring_cmpl_ring_cfg_aggint_params */ 3104 /* Input (40 bytes) */ 3105 struct hwrm_ring_cmpl_ring_cfg_aggint_params_input { 3106 __le16 req_type; 3107 __le16 cmpl_ring; 3108 __le16 seq_id; 3109 __le16 target_id; 3110 __le64 resp_addr; 3111 __le16 ring_id; 3112 __le16 flags; 3113 #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_TIMER_RESET 0x1UL 3114 #define RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_RING_IDLE 0x2UL 3115 __le16 num_cmpl_dma_aggr; 3116 __le16 num_cmpl_dma_aggr_during_int; 3117 __le16 cmpl_aggr_dma_tmr; 3118 __le16 cmpl_aggr_dma_tmr_during_int; 3119 __le16 int_lat_tmr_min; 3120 __le16 int_lat_tmr_max; 3121 __le16 num_cmpl_aggr_int; 3122 __le16 unused_0[3]; 3123 }; 3124 3125 /* Output (16 bytes) */ 3126 struct hwrm_ring_cmpl_ring_cfg_aggint_params_output { 3127 __le16 error_code; 3128 __le16 req_type; 3129 __le16 seq_id; 3130 __le16 resp_len; 3131 __le32 unused_0; 3132 u8 unused_1; 3133 u8 unused_2; 3134 u8 unused_3; 3135 u8 valid; 3136 }; 3137 3138 /* hwrm_ring_reset */ 3139 /* Input (24 bytes) */ 3140 struct hwrm_ring_reset_input { 3141 __le16 req_type; 3142 __le16 cmpl_ring; 3143 __le16 seq_id; 3144 __le16 target_id; 3145 __le64 resp_addr; 3146 u8 ring_type; 3147 #define RING_RESET_REQ_RING_TYPE_CMPL 0x0UL 3148 #define RING_RESET_REQ_RING_TYPE_TX 0x1UL 3149 #define RING_RESET_REQ_RING_TYPE_RX 0x2UL 3150 u8 unused_0; 3151 __le16 ring_id; 3152 __le32 unused_1; 3153 }; 3154 3155 /* Output (16 bytes) */ 3156 struct hwrm_ring_reset_output { 3157 __le16 error_code; 3158 __le16 req_type; 3159 __le16 seq_id; 3160 __le16 resp_len; 3161 __le32 unused_0; 3162 u8 unused_1; 3163 u8 unused_2; 3164 u8 unused_3; 3165 u8 valid; 3166 }; 3167 3168 /* hwrm_ring_grp_alloc */ 3169 /* Input (24 bytes) */ 3170 struct hwrm_ring_grp_alloc_input { 3171 __le16 req_type; 3172 __le16 cmpl_ring; 3173 __le16 seq_id; 3174 __le16 target_id; 3175 __le64 resp_addr; 3176 __le16 cr; 3177 __le16 rr; 3178 __le16 ar; 3179 __le16 sc; 3180 }; 3181 3182 /* Output (16 bytes) */ 3183 struct hwrm_ring_grp_alloc_output { 3184 __le16 error_code; 3185 __le16 req_type; 3186 __le16 seq_id; 3187 __le16 resp_len; 3188 __le32 ring_group_id; 3189 u8 unused_0; 3190 u8 unused_1; 3191 u8 unused_2; 3192 u8 valid; 3193 }; 3194 3195 /* hwrm_ring_grp_free */ 3196 /* Input (24 bytes) */ 3197 struct hwrm_ring_grp_free_input { 3198 __le16 req_type; 3199 __le16 cmpl_ring; 3200 __le16 seq_id; 3201 __le16 target_id; 3202 __le64 resp_addr; 3203 __le32 ring_group_id; 3204 __le32 unused_0; 3205 }; 3206 3207 /* Output (16 bytes) */ 3208 struct hwrm_ring_grp_free_output { 3209 __le16 error_code; 3210 __le16 req_type; 3211 __le16 seq_id; 3212 __le16 resp_len; 3213 __le32 unused_0; 3214 u8 unused_1; 3215 u8 unused_2; 3216 u8 unused_3; 3217 u8 valid; 3218 }; 3219 3220 /* hwrm_cfa_l2_filter_alloc */ 3221 /* Input (96 bytes) */ 3222 struct hwrm_cfa_l2_filter_alloc_input { 3223 __le16 req_type; 3224 __le16 cmpl_ring; 3225 __le16 seq_id; 3226 __le16 target_id; 3227 __le64 resp_addr; 3228 __le32 flags; 3229 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH 0x1UL 3230 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_TX (0x0UL << 0) 3231 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX (0x1UL << 0) 3232 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_LAST CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX 3233 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_LOOPBACK 0x2UL 3234 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_DROP 0x4UL 3235 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_OUTERMOST 0x8UL 3236 __le32 enables; 3237 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR 0x1UL 3238 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_ADDR_MASK 0x2UL 3239 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_OVLAN 0x4UL 3240 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_OVLAN_MASK 0x8UL 3241 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN 0x10UL 3242 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN_MASK 0x20UL 3243 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_ADDR 0x40UL 3244 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_ADDR_MASK 0x80UL 3245 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_OVLAN 0x100UL 3246 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_OVLAN_MASK 0x200UL 3247 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_IVLAN 0x400UL 3248 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_T_L2_IVLAN_MASK 0x800UL 3249 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_SRC_TYPE 0x1000UL 3250 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_SRC_ID 0x2000UL 3251 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE 0x4000UL 3252 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_DST_ID 0x8000UL 3253 #define CFA_L2_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID 0x10000UL 3254 u8 l2_addr[6]; 3255 u8 unused_0; 3256 u8 unused_1; 3257 u8 l2_addr_mask[6]; 3258 __le16 l2_ovlan; 3259 __le16 l2_ovlan_mask; 3260 __le16 l2_ivlan; 3261 __le16 l2_ivlan_mask; 3262 u8 unused_2; 3263 u8 unused_3; 3264 u8 t_l2_addr[6]; 3265 u8 unused_4; 3266 u8 unused_5; 3267 u8 t_l2_addr_mask[6]; 3268 __le16 t_l2_ovlan; 3269 __le16 t_l2_ovlan_mask; 3270 __le16 t_l2_ivlan; 3271 __le16 t_l2_ivlan_mask; 3272 u8 src_type; 3273 #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_NPORT 0x0UL 3274 #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_PF 0x1UL 3275 #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VF 0x2UL 3276 #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VNIC 0x3UL 3277 #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_KONG 0x4UL 3278 #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_APE 0x5UL 3279 #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_BONO 0x6UL 3280 #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_TANG 0x7UL 3281 u8 unused_6; 3282 __le32 src_id; 3283 u8 tunnel_type; 3284 #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL 3285 #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3286 #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE 0x2UL 3287 #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE 0x3UL 3288 #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP 0x4UL 3289 #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3290 #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS 0x6UL 3291 #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT 0x7UL 3292 #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE 0x8UL 3293 #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL 3294 u8 unused_7; 3295 __le16 dst_id; 3296 __le16 mirror_vnic_id; 3297 u8 pri_hint; 3298 #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER 0x0UL 3299 #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_ABOVE_FILTER 0x1UL 3300 #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_BELOW_FILTER 0x2UL 3301 #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MAX 0x3UL 3302 #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MIN 0x4UL 3303 u8 unused_8; 3304 __le32 unused_9; 3305 __le64 l2_filter_id_hint; 3306 }; 3307 3308 /* Output (24 bytes) */ 3309 struct hwrm_cfa_l2_filter_alloc_output { 3310 __le16 error_code; 3311 __le16 req_type; 3312 __le16 seq_id; 3313 __le16 resp_len; 3314 __le64 l2_filter_id; 3315 __le32 flow_id; 3316 u8 unused_0; 3317 u8 unused_1; 3318 u8 unused_2; 3319 u8 valid; 3320 }; 3321 3322 /* hwrm_cfa_l2_filter_free */ 3323 /* Input (24 bytes) */ 3324 struct hwrm_cfa_l2_filter_free_input { 3325 __le16 req_type; 3326 __le16 cmpl_ring; 3327 __le16 seq_id; 3328 __le16 target_id; 3329 __le64 resp_addr; 3330 __le64 l2_filter_id; 3331 }; 3332 3333 /* Output (16 bytes) */ 3334 struct hwrm_cfa_l2_filter_free_output { 3335 __le16 error_code; 3336 __le16 req_type; 3337 __le16 seq_id; 3338 __le16 resp_len; 3339 __le32 unused_0; 3340 u8 unused_1; 3341 u8 unused_2; 3342 u8 unused_3; 3343 u8 valid; 3344 }; 3345 3346 /* hwrm_cfa_l2_filter_cfg */ 3347 /* Input (40 bytes) */ 3348 struct hwrm_cfa_l2_filter_cfg_input { 3349 __le16 req_type; 3350 __le16 cmpl_ring; 3351 __le16 seq_id; 3352 __le16 target_id; 3353 __le64 resp_addr; 3354 __le32 flags; 3355 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH 0x1UL 3356 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 3357 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 3358 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_LAST CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX 3359 #define CFA_L2_FILTER_CFG_REQ_FLAGS_DROP 0x2UL 3360 __le32 enables; 3361 #define CFA_L2_FILTER_CFG_REQ_ENABLES_DST_ID 0x1UL 3362 #define CFA_L2_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID 0x2UL 3363 __le64 l2_filter_id; 3364 __le32 dst_id; 3365 __le32 new_mirror_vnic_id; 3366 }; 3367 3368 /* Output (16 bytes) */ 3369 struct hwrm_cfa_l2_filter_cfg_output { 3370 __le16 error_code; 3371 __le16 req_type; 3372 __le16 seq_id; 3373 __le16 resp_len; 3374 __le32 unused_0; 3375 u8 unused_1; 3376 u8 unused_2; 3377 u8 unused_3; 3378 u8 valid; 3379 }; 3380 3381 /* hwrm_cfa_l2_set_rx_mask */ 3382 /* Input (56 bytes) */ 3383 struct hwrm_cfa_l2_set_rx_mask_input { 3384 __le16 req_type; 3385 __le16 cmpl_ring; 3386 __le16 seq_id; 3387 __le16 target_id; 3388 __le64 resp_addr; 3389 __le32 vnic_id; 3390 __le32 mask; 3391 #define CFA_L2_SET_RX_MASK_REQ_MASK_RESERVED 0x1UL 3392 #define CFA_L2_SET_RX_MASK_REQ_MASK_MCAST 0x2UL 3393 #define CFA_L2_SET_RX_MASK_REQ_MASK_ALL_MCAST 0x4UL 3394 #define CFA_L2_SET_RX_MASK_REQ_MASK_BCAST 0x8UL 3395 #define CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS 0x10UL 3396 #define CFA_L2_SET_RX_MASK_REQ_MASK_OUTERMOST 0x20UL 3397 #define CFA_L2_SET_RX_MASK_REQ_MASK_VLANONLY 0x40UL 3398 #define CFA_L2_SET_RX_MASK_REQ_MASK_VLAN_NONVLAN 0x80UL 3399 #define CFA_L2_SET_RX_MASK_REQ_MASK_ANYVLAN_NONVLAN 0x100UL 3400 __le64 mc_tbl_addr; 3401 __le32 num_mc_entries; 3402 __le32 unused_0; 3403 __le64 vlan_tag_tbl_addr; 3404 __le32 num_vlan_tags; 3405 __le32 unused_1; 3406 }; 3407 3408 /* Output (16 bytes) */ 3409 struct hwrm_cfa_l2_set_rx_mask_output { 3410 __le16 error_code; 3411 __le16 req_type; 3412 __le16 seq_id; 3413 __le16 resp_len; 3414 __le32 unused_0; 3415 u8 unused_1; 3416 u8 unused_2; 3417 u8 unused_3; 3418 u8 valid; 3419 }; 3420 3421 /* hwrm_cfa_tunnel_filter_alloc */ 3422 /* Input (88 bytes) */ 3423 struct hwrm_cfa_tunnel_filter_alloc_input { 3424 __le16 req_type; 3425 __le16 cmpl_ring; 3426 __le16 seq_id; 3427 __le16 target_id; 3428 __le64 resp_addr; 3429 __le32 flags; 3430 #define CFA_TUNNEL_FILTER_ALLOC_REQ_FLAGS_LOOPBACK 0x1UL 3431 __le32 enables; 3432 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID 0x1UL 3433 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_ADDR 0x2UL 3434 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L2_IVLAN 0x4UL 3435 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L3_ADDR 0x8UL 3436 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_L3_ADDR_TYPE 0x10UL 3437 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_T_L3_ADDR_TYPE 0x20UL 3438 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_T_L3_ADDR 0x40UL 3439 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE 0x80UL 3440 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_VNI 0x100UL 3441 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_DST_VNIC_ID 0x200UL 3442 #define CFA_TUNNEL_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID 0x400UL 3443 __le64 l2_filter_id; 3444 u8 l2_addr[6]; 3445 __le16 l2_ivlan; 3446 __le32 l3_addr[4]; 3447 __le32 t_l3_addr[4]; 3448 u8 l3_addr_type; 3449 u8 t_l3_addr_type; 3450 u8 tunnel_type; 3451 #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL 3452 #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3453 #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE 0x2UL 3454 #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE 0x3UL 3455 #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP 0x4UL 3456 #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3457 #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS 0x6UL 3458 #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT 0x7UL 3459 #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE 0x8UL 3460 #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL 3461 u8 unused_0; 3462 __le32 vni; 3463 __le32 dst_vnic_id; 3464 __le32 mirror_vnic_id; 3465 }; 3466 3467 /* Output (24 bytes) */ 3468 struct hwrm_cfa_tunnel_filter_alloc_output { 3469 __le16 error_code; 3470 __le16 req_type; 3471 __le16 seq_id; 3472 __le16 resp_len; 3473 __le64 tunnel_filter_id; 3474 __le32 flow_id; 3475 u8 unused_0; 3476 u8 unused_1; 3477 u8 unused_2; 3478 u8 valid; 3479 }; 3480 3481 /* hwrm_cfa_tunnel_filter_free */ 3482 /* Input (24 bytes) */ 3483 struct hwrm_cfa_tunnel_filter_free_input { 3484 __le16 req_type; 3485 __le16 cmpl_ring; 3486 __le16 seq_id; 3487 __le16 target_id; 3488 __le64 resp_addr; 3489 __le64 tunnel_filter_id; 3490 }; 3491 3492 /* Output (16 bytes) */ 3493 struct hwrm_cfa_tunnel_filter_free_output { 3494 __le16 error_code; 3495 __le16 req_type; 3496 __le16 seq_id; 3497 __le16 resp_len; 3498 __le32 unused_0; 3499 u8 unused_1; 3500 u8 unused_2; 3501 u8 unused_3; 3502 u8 valid; 3503 }; 3504 3505 /* hwrm_cfa_encap_record_alloc */ 3506 /* Input (32 bytes) */ 3507 struct hwrm_cfa_encap_record_alloc_input { 3508 __le16 req_type; 3509 __le16 cmpl_ring; 3510 __le16 seq_id; 3511 __le16 target_id; 3512 __le64 resp_addr; 3513 __le32 flags; 3514 #define CFA_ENCAP_RECORD_ALLOC_REQ_FLAGS_LOOPBACK 0x1UL 3515 u8 encap_type; 3516 #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN 0x1UL 3517 #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_NVGRE 0x2UL 3518 #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2GRE 0x3UL 3519 #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPIP 0x4UL 3520 #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_GENEVE 0x5UL 3521 #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_MPLS 0x6UL 3522 #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VLAN 0x7UL 3523 #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE 0x8UL 3524 u8 unused_0; 3525 __le16 unused_1; 3526 __le32 encap_data[16]; 3527 }; 3528 3529 /* Output (16 bytes) */ 3530 struct hwrm_cfa_encap_record_alloc_output { 3531 __le16 error_code; 3532 __le16 req_type; 3533 __le16 seq_id; 3534 __le16 resp_len; 3535 __le32 encap_record_id; 3536 u8 unused_0; 3537 u8 unused_1; 3538 u8 unused_2; 3539 u8 valid; 3540 }; 3541 3542 /* hwrm_cfa_encap_record_free */ 3543 /* Input (24 bytes) */ 3544 struct hwrm_cfa_encap_record_free_input { 3545 __le16 req_type; 3546 __le16 cmpl_ring; 3547 __le16 seq_id; 3548 __le16 target_id; 3549 __le64 resp_addr; 3550 __le32 encap_record_id; 3551 __le32 unused_0; 3552 }; 3553 3554 /* Output (16 bytes) */ 3555 struct hwrm_cfa_encap_record_free_output { 3556 __le16 error_code; 3557 __le16 req_type; 3558 __le16 seq_id; 3559 __le16 resp_len; 3560 __le32 unused_0; 3561 u8 unused_1; 3562 u8 unused_2; 3563 u8 unused_3; 3564 u8 valid; 3565 }; 3566 3567 /* hwrm_cfa_ntuple_filter_alloc */ 3568 /* Input (128 bytes) */ 3569 struct hwrm_cfa_ntuple_filter_alloc_input { 3570 __le16 req_type; 3571 __le16 cmpl_ring; 3572 __le16 seq_id; 3573 __le16 target_id; 3574 __le64 resp_addr; 3575 __le32 flags; 3576 #define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_LOOPBACK 0x1UL 3577 #define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DROP 0x2UL 3578 __le32 enables; 3579 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID 0x1UL 3580 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_ETHERTYPE 0x2UL 3581 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_TUNNEL_TYPE 0x4UL 3582 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_MACADDR 0x8UL 3583 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_IPADDR_TYPE 0x10UL 3584 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR 0x20UL 3585 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_IPADDR_MASK 0x40UL 3586 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_IPADDR 0x80UL 3587 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_IPADDR_MASK 0x100UL 3588 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_IP_PROTOCOL 0x200UL 3589 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_PORT 0x400UL 3590 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_SRC_PORT_MASK 0x800UL 3591 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_PORT 0x1000UL 3592 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_PORT_MASK 0x2000UL 3593 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_PRI_HINT 0x4000UL 3594 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_NTUPLE_FILTER_ID 0x8000UL 3595 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_ID 0x10000UL 3596 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_MIRROR_VNIC_ID 0x20000UL 3597 #define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_DST_MACADDR 0x40000UL 3598 __le64 l2_filter_id; 3599 u8 src_macaddr[6]; 3600 __be16 ethertype; 3601 u8 ip_addr_type; 3602 #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN 0x0UL 3603 #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV4 0x4UL 3604 #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6 0x6UL 3605 u8 ip_protocol; 3606 #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN 0x0UL 3607 #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP 0x6UL 3608 #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP 0x11UL 3609 __le16 dst_id; 3610 __le16 mirror_vnic_id; 3611 u8 tunnel_type; 3612 #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL 3613 #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3614 #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE 0x2UL 3615 #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE 0x3UL 3616 #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP 0x4UL 3617 #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3618 #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS 0x6UL 3619 #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT 0x7UL 3620 #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE 0x8UL 3621 #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL 3622 u8 pri_hint; 3623 #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER 0x0UL 3624 #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_ABOVE 0x1UL 3625 #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_BELOW 0x2UL 3626 #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_HIGHEST 0x3UL 3627 #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LOWEST 0x4UL 3628 __be32 src_ipaddr[4]; 3629 __be32 src_ipaddr_mask[4]; 3630 __be32 dst_ipaddr[4]; 3631 __be32 dst_ipaddr_mask[4]; 3632 __be16 src_port; 3633 __be16 src_port_mask; 3634 __be16 dst_port; 3635 __be16 dst_port_mask; 3636 __le64 ntuple_filter_id_hint; 3637 }; 3638 3639 /* Output (24 bytes) */ 3640 struct hwrm_cfa_ntuple_filter_alloc_output { 3641 __le16 error_code; 3642 __le16 req_type; 3643 __le16 seq_id; 3644 __le16 resp_len; 3645 __le64 ntuple_filter_id; 3646 __le32 flow_id; 3647 u8 unused_0; 3648 u8 unused_1; 3649 u8 unused_2; 3650 u8 valid; 3651 }; 3652 3653 /* hwrm_cfa_ntuple_filter_free */ 3654 /* Input (24 bytes) */ 3655 struct hwrm_cfa_ntuple_filter_free_input { 3656 __le16 req_type; 3657 __le16 cmpl_ring; 3658 __le16 seq_id; 3659 __le16 target_id; 3660 __le64 resp_addr; 3661 __le64 ntuple_filter_id; 3662 }; 3663 3664 /* Output (16 bytes) */ 3665 struct hwrm_cfa_ntuple_filter_free_output { 3666 __le16 error_code; 3667 __le16 req_type; 3668 __le16 seq_id; 3669 __le16 resp_len; 3670 __le32 unused_0; 3671 u8 unused_1; 3672 u8 unused_2; 3673 u8 unused_3; 3674 u8 valid; 3675 }; 3676 3677 /* hwrm_cfa_ntuple_filter_cfg */ 3678 /* Input (40 bytes) */ 3679 struct hwrm_cfa_ntuple_filter_cfg_input { 3680 __le16 req_type; 3681 __le16 cmpl_ring; 3682 __le16 seq_id; 3683 __le16 target_id; 3684 __le64 resp_addr; 3685 __le32 enables; 3686 #define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_DST_ID 0x1UL 3687 #define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID 0x2UL 3688 __le32 unused_0; 3689 __le64 ntuple_filter_id; 3690 __le32 new_dst_id; 3691 __le32 new_mirror_vnic_id; 3692 }; 3693 3694 /* Output (16 bytes) */ 3695 struct hwrm_cfa_ntuple_filter_cfg_output { 3696 __le16 error_code; 3697 __le16 req_type; 3698 __le16 seq_id; 3699 __le16 resp_len; 3700 __le32 unused_0; 3701 u8 unused_1; 3702 u8 unused_2; 3703 u8 unused_3; 3704 u8 valid; 3705 }; 3706 3707 /* hwrm_tunnel_dst_port_query */ 3708 /* Input (24 bytes) */ 3709 struct hwrm_tunnel_dst_port_query_input { 3710 __le16 req_type; 3711 __le16 cmpl_ring; 3712 __le16 seq_id; 3713 __le16 target_id; 3714 __le64 resp_addr; 3715 u8 tunnel_type; 3716 #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3717 #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3718 u8 unused_0[7]; 3719 }; 3720 3721 /* Output (16 bytes) */ 3722 struct hwrm_tunnel_dst_port_query_output { 3723 __le16 error_code; 3724 __le16 req_type; 3725 __le16 seq_id; 3726 __le16 resp_len; 3727 __le16 tunnel_dst_port_id; 3728 __be16 tunnel_dst_port_val; 3729 u8 unused_0; 3730 u8 unused_1; 3731 u8 unused_2; 3732 u8 valid; 3733 }; 3734 3735 /* hwrm_tunnel_dst_port_alloc */ 3736 /* Input (24 bytes) */ 3737 struct hwrm_tunnel_dst_port_alloc_input { 3738 __le16 req_type; 3739 __le16 cmpl_ring; 3740 __le16 seq_id; 3741 __le16 target_id; 3742 __le64 resp_addr; 3743 u8 tunnel_type; 3744 #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3745 #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3746 u8 unused_0; 3747 __be16 tunnel_dst_port_val; 3748 __le32 unused_1; 3749 }; 3750 3751 /* Output (16 bytes) */ 3752 struct hwrm_tunnel_dst_port_alloc_output { 3753 __le16 error_code; 3754 __le16 req_type; 3755 __le16 seq_id; 3756 __le16 resp_len; 3757 __le16 tunnel_dst_port_id; 3758 u8 unused_0; 3759 u8 unused_1; 3760 u8 unused_2; 3761 u8 unused_3; 3762 u8 unused_4; 3763 u8 valid; 3764 }; 3765 3766 /* hwrm_tunnel_dst_port_free */ 3767 /* Input (24 bytes) */ 3768 struct hwrm_tunnel_dst_port_free_input { 3769 __le16 req_type; 3770 __le16 cmpl_ring; 3771 __le16 seq_id; 3772 __le16 target_id; 3773 __le64 resp_addr; 3774 u8 tunnel_type; 3775 #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3776 #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3777 u8 unused_0; 3778 __le16 tunnel_dst_port_id; 3779 __le32 unused_1; 3780 }; 3781 3782 /* Output (16 bytes) */ 3783 struct hwrm_tunnel_dst_port_free_output { 3784 __le16 error_code; 3785 __le16 req_type; 3786 __le16 seq_id; 3787 __le16 resp_len; 3788 __le32 unused_0; 3789 u8 unused_1; 3790 u8 unused_2; 3791 u8 unused_3; 3792 u8 valid; 3793 }; 3794 3795 /* hwrm_stat_ctx_alloc */ 3796 /* Input (32 bytes) */ 3797 struct hwrm_stat_ctx_alloc_input { 3798 __le16 req_type; 3799 __le16 cmpl_ring; 3800 __le16 seq_id; 3801 __le16 target_id; 3802 __le64 resp_addr; 3803 __le64 stats_dma_addr; 3804 __le32 update_period_ms; 3805 __le32 unused_0; 3806 }; 3807 3808 /* Output (16 bytes) */ 3809 struct hwrm_stat_ctx_alloc_output { 3810 __le16 error_code; 3811 __le16 req_type; 3812 __le16 seq_id; 3813 __le16 resp_len; 3814 __le32 stat_ctx_id; 3815 u8 unused_0; 3816 u8 unused_1; 3817 u8 unused_2; 3818 u8 valid; 3819 }; 3820 3821 /* hwrm_stat_ctx_free */ 3822 /* Input (24 bytes) */ 3823 struct hwrm_stat_ctx_free_input { 3824 __le16 req_type; 3825 __le16 cmpl_ring; 3826 __le16 seq_id; 3827 __le16 target_id; 3828 __le64 resp_addr; 3829 __le32 stat_ctx_id; 3830 __le32 unused_0; 3831 }; 3832 3833 /* Output (16 bytes) */ 3834 struct hwrm_stat_ctx_free_output { 3835 __le16 error_code; 3836 __le16 req_type; 3837 __le16 seq_id; 3838 __le16 resp_len; 3839 __le32 stat_ctx_id; 3840 u8 unused_0; 3841 u8 unused_1; 3842 u8 unused_2; 3843 u8 valid; 3844 }; 3845 3846 /* hwrm_stat_ctx_query */ 3847 /* Input (24 bytes) */ 3848 struct hwrm_stat_ctx_query_input { 3849 __le16 req_type; 3850 __le16 cmpl_ring; 3851 __le16 seq_id; 3852 __le16 target_id; 3853 __le64 resp_addr; 3854 __le32 stat_ctx_id; 3855 __le32 unused_0; 3856 }; 3857 3858 /* Output (176 bytes) */ 3859 struct hwrm_stat_ctx_query_output { 3860 __le16 error_code; 3861 __le16 req_type; 3862 __le16 seq_id; 3863 __le16 resp_len; 3864 __le64 tx_ucast_pkts; 3865 __le64 tx_mcast_pkts; 3866 __le64 tx_bcast_pkts; 3867 __le64 tx_err_pkts; 3868 __le64 tx_drop_pkts; 3869 __le64 tx_ucast_bytes; 3870 __le64 tx_mcast_bytes; 3871 __le64 tx_bcast_bytes; 3872 __le64 rx_ucast_pkts; 3873 __le64 rx_mcast_pkts; 3874 __le64 rx_bcast_pkts; 3875 __le64 rx_err_pkts; 3876 __le64 rx_drop_pkts; 3877 __le64 rx_ucast_bytes; 3878 __le64 rx_mcast_bytes; 3879 __le64 rx_bcast_bytes; 3880 __le64 rx_agg_pkts; 3881 __le64 rx_agg_bytes; 3882 __le64 rx_agg_events; 3883 __le64 rx_agg_aborts; 3884 __le32 unused_0; 3885 u8 unused_1; 3886 u8 unused_2; 3887 u8 unused_3; 3888 u8 valid; 3889 }; 3890 3891 /* hwrm_stat_ctx_clr_stats */ 3892 /* Input (24 bytes) */ 3893 struct hwrm_stat_ctx_clr_stats_input { 3894 __le16 req_type; 3895 __le16 cmpl_ring; 3896 __le16 seq_id; 3897 __le16 target_id; 3898 __le64 resp_addr; 3899 __le32 stat_ctx_id; 3900 __le32 unused_0; 3901 }; 3902 3903 /* Output (16 bytes) */ 3904 struct hwrm_stat_ctx_clr_stats_output { 3905 __le16 error_code; 3906 __le16 req_type; 3907 __le16 seq_id; 3908 __le16 resp_len; 3909 __le32 unused_0; 3910 u8 unused_1; 3911 u8 unused_2; 3912 u8 unused_3; 3913 u8 valid; 3914 }; 3915 3916 /* hwrm_fw_reset */ 3917 /* Input (24 bytes) */ 3918 struct hwrm_fw_reset_input { 3919 __le16 req_type; 3920 __le16 cmpl_ring; 3921 __le16 seq_id; 3922 __le16 target_id; 3923 __le64 resp_addr; 3924 u8 embedded_proc_type; 3925 #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_BOOT 0x0UL 3926 #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_MGMT 0x1UL 3927 #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_NETCTRL 0x2UL 3928 #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_ROCE 0x3UL 3929 #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_RSVD 0x4UL 3930 u8 selfrst_status; 3931 #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTNONE 0x0UL 3932 #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTASAP 0x1UL 3933 #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTPCIERST 0x2UL 3934 __le16 unused_0[3]; 3935 }; 3936 3937 /* Output (16 bytes) */ 3938 struct hwrm_fw_reset_output { 3939 __le16 error_code; 3940 __le16 req_type; 3941 __le16 seq_id; 3942 __le16 resp_len; 3943 u8 selfrst_status; 3944 #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTNONE 0x0UL 3945 #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTASAP 0x1UL 3946 #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTPCIERST 0x2UL 3947 u8 unused_0; 3948 __le16 unused_1; 3949 u8 unused_2; 3950 u8 unused_3; 3951 u8 unused_4; 3952 u8 valid; 3953 }; 3954 3955 /* hwrm_fw_qstatus */ 3956 /* Input (24 bytes) */ 3957 struct hwrm_fw_qstatus_input { 3958 __le16 req_type; 3959 __le16 cmpl_ring; 3960 __le16 seq_id; 3961 __le16 target_id; 3962 __le64 resp_addr; 3963 u8 embedded_proc_type; 3964 #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_BOOT 0x0UL 3965 #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_MGMT 0x1UL 3966 #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_NETCTRL 0x2UL 3967 #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_ROCE 0x3UL 3968 #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_RSVD 0x4UL 3969 u8 unused_0[7]; 3970 }; 3971 3972 /* Output (16 bytes) */ 3973 struct hwrm_fw_qstatus_output { 3974 __le16 error_code; 3975 __le16 req_type; 3976 __le16 seq_id; 3977 __le16 resp_len; 3978 u8 selfrst_status; 3979 #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTNONE 0x0UL 3980 #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTASAP 0x1UL 3981 #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPCIERST 0x2UL 3982 u8 unused_0; 3983 __le16 unused_1; 3984 u8 unused_2; 3985 u8 unused_3; 3986 u8 unused_4; 3987 u8 valid; 3988 }; 3989 3990 /* hwrm_fw_set_time */ 3991 /* Input (32 bytes) */ 3992 struct hwrm_fw_set_time_input { 3993 __le16 req_type; 3994 __le16 cmpl_ring; 3995 __le16 seq_id; 3996 __le16 target_id; 3997 __le64 resp_addr; 3998 __le16 year; 3999 #define FW_SET_TIME_REQ_YEAR_UNKNOWN 0x0UL 4000 u8 month; 4001 u8 day; 4002 u8 hour; 4003 u8 minute; 4004 u8 second; 4005 u8 unused_0; 4006 __le16 millisecond; 4007 __le16 zone; 4008 #define FW_SET_TIME_REQ_ZONE_UTC 0x0UL 4009 #define FW_SET_TIME_REQ_ZONE_UNKNOWN 0xffffUL 4010 __le32 unused_1; 4011 }; 4012 4013 /* Output (16 bytes) */ 4014 struct hwrm_fw_set_time_output { 4015 __le16 error_code; 4016 __le16 req_type; 4017 __le16 seq_id; 4018 __le16 resp_len; 4019 __le32 unused_0; 4020 u8 unused_1; 4021 u8 unused_2; 4022 u8 unused_3; 4023 u8 valid; 4024 }; 4025 4026 /* hwrm_exec_fwd_resp */ 4027 /* Input (128 bytes) */ 4028 struct hwrm_exec_fwd_resp_input { 4029 __le16 req_type; 4030 __le16 cmpl_ring; 4031 __le16 seq_id; 4032 __le16 target_id; 4033 __le64 resp_addr; 4034 __le32 encap_request[26]; 4035 __le16 encap_resp_target_id; 4036 __le16 unused_0[3]; 4037 }; 4038 4039 /* Output (16 bytes) */ 4040 struct hwrm_exec_fwd_resp_output { 4041 __le16 error_code; 4042 __le16 req_type; 4043 __le16 seq_id; 4044 __le16 resp_len; 4045 __le32 unused_0; 4046 u8 unused_1; 4047 u8 unused_2; 4048 u8 unused_3; 4049 u8 valid; 4050 }; 4051 4052 /* hwrm_reject_fwd_resp */ 4053 /* Input (128 bytes) */ 4054 struct hwrm_reject_fwd_resp_input { 4055 __le16 req_type; 4056 __le16 cmpl_ring; 4057 __le16 seq_id; 4058 __le16 target_id; 4059 __le64 resp_addr; 4060 __le32 encap_request[26]; 4061 __le16 encap_resp_target_id; 4062 __le16 unused_0[3]; 4063 }; 4064 4065 /* Output (16 bytes) */ 4066 struct hwrm_reject_fwd_resp_output { 4067 __le16 error_code; 4068 __le16 req_type; 4069 __le16 seq_id; 4070 __le16 resp_len; 4071 __le32 unused_0; 4072 u8 unused_1; 4073 u8 unused_2; 4074 u8 unused_3; 4075 u8 valid; 4076 }; 4077 4078 /* hwrm_fwd_resp */ 4079 /* Input (40 bytes) */ 4080 struct hwrm_fwd_resp_input { 4081 __le16 req_type; 4082 __le16 cmpl_ring; 4083 __le16 seq_id; 4084 __le16 target_id; 4085 __le64 resp_addr; 4086 __le16 encap_resp_target_id; 4087 __le16 encap_resp_cmpl_ring; 4088 __le16 encap_resp_len; 4089 u8 unused_0; 4090 u8 unused_1; 4091 __le64 encap_resp_addr; 4092 __le32 encap_resp[24]; 4093 }; 4094 4095 /* Output (16 bytes) */ 4096 struct hwrm_fwd_resp_output { 4097 __le16 error_code; 4098 __le16 req_type; 4099 __le16 seq_id; 4100 __le16 resp_len; 4101 __le32 unused_0; 4102 u8 unused_1; 4103 u8 unused_2; 4104 u8 unused_3; 4105 u8 valid; 4106 }; 4107 4108 /* hwrm_fwd_async_event_cmpl */ 4109 /* Input (32 bytes) */ 4110 struct hwrm_fwd_async_event_cmpl_input { 4111 __le16 req_type; 4112 __le16 cmpl_ring; 4113 __le16 seq_id; 4114 __le16 target_id; 4115 __le64 resp_addr; 4116 __le16 encap_async_event_target_id; 4117 u8 unused_0; 4118 u8 unused_1; 4119 u8 unused_2[3]; 4120 u8 unused_3; 4121 __le32 encap_async_event_cmpl[4]; 4122 }; 4123 4124 /* Output (16 bytes) */ 4125 struct hwrm_fwd_async_event_cmpl_output { 4126 __le16 error_code; 4127 __le16 req_type; 4128 __le16 seq_id; 4129 __le16 resp_len; 4130 __le32 unused_0; 4131 u8 unused_1; 4132 u8 unused_2; 4133 u8 unused_3; 4134 u8 valid; 4135 }; 4136 4137 /* hwrm_temp_monitor_query */ 4138 /* Input (16 bytes) */ 4139 struct hwrm_temp_monitor_query_input { 4140 __le16 req_type; 4141 __le16 cmpl_ring; 4142 __le16 seq_id; 4143 __le16 target_id; 4144 __le64 resp_addr; 4145 }; 4146 4147 /* Output (16 bytes) */ 4148 struct hwrm_temp_monitor_query_output { 4149 __le16 error_code; 4150 __le16 req_type; 4151 __le16 seq_id; 4152 __le16 resp_len; 4153 u8 temp; 4154 u8 unused_0; 4155 __le16 unused_1; 4156 u8 unused_2; 4157 u8 unused_3; 4158 u8 unused_4; 4159 u8 valid; 4160 }; 4161 4162 /* hwrm_nvm_read */ 4163 /* Input (40 bytes) */ 4164 struct hwrm_nvm_read_input { 4165 __le16 req_type; 4166 __le16 cmpl_ring; 4167 __le16 seq_id; 4168 __le16 target_id; 4169 __le64 resp_addr; 4170 __le64 host_dest_addr; 4171 __le16 dir_idx; 4172 u8 unused_0; 4173 u8 unused_1; 4174 __le32 offset; 4175 __le32 len; 4176 __le32 unused_2; 4177 }; 4178 4179 /* Output (16 bytes) */ 4180 struct hwrm_nvm_read_output { 4181 __le16 error_code; 4182 __le16 req_type; 4183 __le16 seq_id; 4184 __le16 resp_len; 4185 __le32 unused_0; 4186 u8 unused_1; 4187 u8 unused_2; 4188 u8 unused_3; 4189 u8 valid; 4190 }; 4191 4192 /* hwrm_nvm_raw_dump */ 4193 /* Input (32 bytes) */ 4194 struct hwrm_nvm_raw_dump_input { 4195 __le16 req_type; 4196 __le16 cmpl_ring; 4197 __le16 seq_id; 4198 __le16 target_id; 4199 __le64 resp_addr; 4200 __le64 host_dest_addr; 4201 __le32 offset; 4202 __le32 len; 4203 }; 4204 4205 /* Output (16 bytes) */ 4206 struct hwrm_nvm_raw_dump_output { 4207 __le16 error_code; 4208 __le16 req_type; 4209 __le16 seq_id; 4210 __le16 resp_len; 4211 __le32 unused_0; 4212 u8 unused_1; 4213 u8 unused_2; 4214 u8 unused_3; 4215 u8 valid; 4216 }; 4217 4218 /* hwrm_nvm_get_dir_entries */ 4219 /* Input (24 bytes) */ 4220 struct hwrm_nvm_get_dir_entries_input { 4221 __le16 req_type; 4222 __le16 cmpl_ring; 4223 __le16 seq_id; 4224 __le16 target_id; 4225 __le64 resp_addr; 4226 __le64 host_dest_addr; 4227 }; 4228 4229 /* Output (16 bytes) */ 4230 struct hwrm_nvm_get_dir_entries_output { 4231 __le16 error_code; 4232 __le16 req_type; 4233 __le16 seq_id; 4234 __le16 resp_len; 4235 __le32 unused_0; 4236 u8 unused_1; 4237 u8 unused_2; 4238 u8 unused_3; 4239 u8 valid; 4240 }; 4241 4242 /* hwrm_nvm_get_dir_info */ 4243 /* Input (16 bytes) */ 4244 struct hwrm_nvm_get_dir_info_input { 4245 __le16 req_type; 4246 __le16 cmpl_ring; 4247 __le16 seq_id; 4248 __le16 target_id; 4249 __le64 resp_addr; 4250 }; 4251 4252 /* Output (24 bytes) */ 4253 struct hwrm_nvm_get_dir_info_output { 4254 __le16 error_code; 4255 __le16 req_type; 4256 __le16 seq_id; 4257 __le16 resp_len; 4258 __le32 entries; 4259 __le32 entry_length; 4260 __le32 unused_0; 4261 u8 unused_1; 4262 u8 unused_2; 4263 u8 unused_3; 4264 u8 valid; 4265 }; 4266 4267 /* hwrm_nvm_write */ 4268 /* Input (48 bytes) */ 4269 struct hwrm_nvm_write_input { 4270 __le16 req_type; 4271 __le16 cmpl_ring; 4272 __le16 seq_id; 4273 __le16 target_id; 4274 __le64 resp_addr; 4275 __le64 host_src_addr; 4276 __le16 dir_type; 4277 __le16 dir_ordinal; 4278 __le16 dir_ext; 4279 __le16 dir_attr; 4280 __le32 dir_data_length; 4281 __le16 option; 4282 __le16 flags; 4283 #define NVM_WRITE_REQ_FLAGS_KEEP_ORIG_ACTIVE_IMG 0x1UL 4284 __le32 dir_item_length; 4285 __le32 unused_0; 4286 }; 4287 4288 /* Output (16 bytes) */ 4289 struct hwrm_nvm_write_output { 4290 __le16 error_code; 4291 __le16 req_type; 4292 __le16 seq_id; 4293 __le16 resp_len; 4294 __le32 dir_item_length; 4295 __le16 dir_idx; 4296 u8 unused_0; 4297 u8 valid; 4298 }; 4299 4300 /* hwrm_nvm_modify */ 4301 /* Input (40 bytes) */ 4302 struct hwrm_nvm_modify_input { 4303 __le16 req_type; 4304 __le16 cmpl_ring; 4305 __le16 seq_id; 4306 __le16 target_id; 4307 __le64 resp_addr; 4308 __le64 host_src_addr; 4309 __le16 dir_idx; 4310 u8 unused_0; 4311 u8 unused_1; 4312 __le32 offset; 4313 __le32 len; 4314 __le32 unused_2; 4315 }; 4316 4317 /* Output (16 bytes) */ 4318 struct hwrm_nvm_modify_output { 4319 __le16 error_code; 4320 __le16 req_type; 4321 __le16 seq_id; 4322 __le16 resp_len; 4323 __le32 unused_0; 4324 u8 unused_1; 4325 u8 unused_2; 4326 u8 unused_3; 4327 u8 valid; 4328 }; 4329 4330 /* hwrm_nvm_find_dir_entry */ 4331 /* Input (32 bytes) */ 4332 struct hwrm_nvm_find_dir_entry_input { 4333 __le16 req_type; 4334 __le16 cmpl_ring; 4335 __le16 seq_id; 4336 __le16 target_id; 4337 __le64 resp_addr; 4338 __le32 enables; 4339 #define NVM_FIND_DIR_ENTRY_REQ_ENABLES_DIR_IDX_VALID 0x1UL 4340 __le16 dir_idx; 4341 __le16 dir_type; 4342 __le16 dir_ordinal; 4343 __le16 dir_ext; 4344 u8 opt_ordinal; 4345 #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_MASK 0x3UL 4346 #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_SFT 0 4347 #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_EQ 0x0UL 4348 #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GE 0x1UL 4349 #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GT 0x2UL 4350 u8 unused_1[3]; 4351 }; 4352 4353 /* Output (32 bytes) */ 4354 struct hwrm_nvm_find_dir_entry_output { 4355 __le16 error_code; 4356 __le16 req_type; 4357 __le16 seq_id; 4358 __le16 resp_len; 4359 __le32 dir_item_length; 4360 __le32 dir_data_length; 4361 __le32 fw_ver; 4362 __le16 dir_ordinal; 4363 __le16 dir_idx; 4364 __le32 unused_0; 4365 u8 unused_1; 4366 u8 unused_2; 4367 u8 unused_3; 4368 u8 valid; 4369 }; 4370 4371 /* hwrm_nvm_erase_dir_entry */ 4372 /* Input (24 bytes) */ 4373 struct hwrm_nvm_erase_dir_entry_input { 4374 __le16 req_type; 4375 __le16 cmpl_ring; 4376 __le16 seq_id; 4377 __le16 target_id; 4378 __le64 resp_addr; 4379 __le16 dir_idx; 4380 __le16 unused_0[3]; 4381 }; 4382 4383 /* Output (16 bytes) */ 4384 struct hwrm_nvm_erase_dir_entry_output { 4385 __le16 error_code; 4386 __le16 req_type; 4387 __le16 seq_id; 4388 __le16 resp_len; 4389 __le32 unused_0; 4390 u8 unused_1; 4391 u8 unused_2; 4392 u8 unused_3; 4393 u8 valid; 4394 }; 4395 4396 /* hwrm_nvm_get_dev_info */ 4397 /* Input (16 bytes) */ 4398 struct hwrm_nvm_get_dev_info_input { 4399 __le16 req_type; 4400 __le16 cmpl_ring; 4401 __le16 seq_id; 4402 __le16 target_id; 4403 __le64 resp_addr; 4404 }; 4405 4406 /* Output (32 bytes) */ 4407 struct hwrm_nvm_get_dev_info_output { 4408 __le16 error_code; 4409 __le16 req_type; 4410 __le16 seq_id; 4411 __le16 resp_len; 4412 __le16 manufacturer_id; 4413 __le16 device_id; 4414 __le32 sector_size; 4415 __le32 nvram_size; 4416 __le32 reserved_size; 4417 __le32 available_size; 4418 u8 unused_0; 4419 u8 unused_1; 4420 u8 unused_2; 4421 u8 valid; 4422 }; 4423 4424 /* hwrm_nvm_mod_dir_entry */ 4425 /* Input (32 bytes) */ 4426 struct hwrm_nvm_mod_dir_entry_input { 4427 __le16 req_type; 4428 __le16 cmpl_ring; 4429 __le16 seq_id; 4430 __le16 target_id; 4431 __le64 resp_addr; 4432 __le32 enables; 4433 #define NVM_MOD_DIR_ENTRY_REQ_ENABLES_CHECKSUM 0x1UL 4434 __le16 dir_idx; 4435 __le16 dir_ordinal; 4436 __le16 dir_ext; 4437 __le16 dir_attr; 4438 __le32 checksum; 4439 }; 4440 4441 /* Output (16 bytes) */ 4442 struct hwrm_nvm_mod_dir_entry_output { 4443 __le16 error_code; 4444 __le16 req_type; 4445 __le16 seq_id; 4446 __le16 resp_len; 4447 __le32 unused_0; 4448 u8 unused_1; 4449 u8 unused_2; 4450 u8 unused_3; 4451 u8 valid; 4452 }; 4453 4454 /* hwrm_nvm_verify_update */ 4455 /* Input (24 bytes) */ 4456 struct hwrm_nvm_verify_update_input { 4457 __le16 req_type; 4458 __le16 cmpl_ring; 4459 __le16 seq_id; 4460 __le16 target_id; 4461 __le64 resp_addr; 4462 __le16 dir_type; 4463 __le16 dir_ordinal; 4464 __le16 dir_ext; 4465 __le16 unused_0; 4466 }; 4467 4468 /* Output (16 bytes) */ 4469 struct hwrm_nvm_verify_update_output { 4470 __le16 error_code; 4471 __le16 req_type; 4472 __le16 seq_id; 4473 __le16 resp_len; 4474 __le32 unused_0; 4475 u8 unused_1; 4476 u8 unused_2; 4477 u8 unused_3; 4478 u8 valid; 4479 }; 4480 4481 /* hwrm_nvm_install_update */ 4482 /* Input (24 bytes) */ 4483 struct hwrm_nvm_install_update_input { 4484 __le16 req_type; 4485 __le16 cmpl_ring; 4486 __le16 seq_id; 4487 __le16 target_id; 4488 __le64 resp_addr; 4489 __le32 install_type; 4490 #define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_NORMAL 0x0UL 4491 #define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_ALL 0xffffffffUL 4492 __le32 unused_0; 4493 }; 4494 4495 /* Output (24 bytes) */ 4496 struct hwrm_nvm_install_update_output { 4497 __le16 error_code; 4498 __le16 req_type; 4499 __le16 seq_id; 4500 __le16 resp_len; 4501 __le64 installed_items; 4502 u8 result; 4503 #define NVM_INSTALL_UPDATE_RESP_RESULT_SUCCESS 0x0UL 4504 u8 problem_item; 4505 #define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_NONE 0x0UL 4506 #define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_PACKAGE 0xffUL 4507 u8 reset_required; 4508 #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_NONE 0x0UL 4509 #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_PCI 0x1UL 4510 #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_POWER 0x2UL 4511 u8 unused_0; 4512 u8 unused_1; 4513 u8 unused_2; 4514 u8 unused_3; 4515 u8 valid; 4516 }; 4517 4518 #endif 4519