Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'bnxt_en-next'

Michael Chan says:

====================
bnxt: update for net-next.

Misc. changes and minor bug fixes for net-next. Please review.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+1069 -622
+84 -47
drivers/net/ethernet/broadcom/bnxt/bnxt.c
··· 32 32 #include <linux/mii.h> 33 33 #include <linux/if.h> 34 34 #include <linux/if_vlan.h> 35 + #include <linux/rtc.h> 35 36 #include <net/ip.h> 36 37 #include <net/tcp.h> 37 38 #include <net/udp.h> ··· 94 93 BCM57404_NPAR, 95 94 BCM57406_NPAR, 96 95 BCM57407_SFP, 96 + BCM57407_NPAR, 97 97 BCM57414_NPAR, 98 98 BCM57416_NPAR, 99 - BCM57304_VF, 100 - BCM57404_VF, 101 - BCM57414_VF, 102 - BCM57314_VF, 99 + NETXTREME_E_VF, 100 + NETXTREME_C_VF, 103 101 }; 104 102 105 103 /* indexed by enum above */ 106 104 static const struct { 107 105 char *name; 108 106 } board_info[] = { 109 - { "Broadcom BCM57301 NetXtreme-C Single-port 10Gb Ethernet" }, 110 - { "Broadcom BCM57302 NetXtreme-C Dual-port 10Gb/25Gb Ethernet" }, 111 - { "Broadcom BCM57304 NetXtreme-C Dual-port 10Gb/25Gb/40Gb/50Gb Ethernet" }, 107 + { "Broadcom BCM57301 NetXtreme-C 10Gb Ethernet" }, 108 + { "Broadcom BCM57302 NetXtreme-C 10Gb/25Gb Ethernet" }, 109 + { "Broadcom BCM57304 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet" }, 112 110 { "Broadcom BCM57417 NetXtreme-E Ethernet Partition" }, 113 - { "Broadcom BCM58700 Nitro 4-port 1Gb/2.5Gb/10Gb Ethernet" }, 114 - { "Broadcom BCM57311 NetXtreme-C Single-port 10Gb Ethernet" }, 115 - { "Broadcom BCM57312 NetXtreme-C Dual-port 10Gb/25Gb Ethernet" }, 116 - { "Broadcom BCM57402 NetXtreme-E Dual-port 10Gb Ethernet" }, 117 - { "Broadcom BCM57404 NetXtreme-E Dual-port 10Gb/25Gb Ethernet" }, 118 - { "Broadcom BCM57406 NetXtreme-E Dual-port 10GBase-T Ethernet" }, 111 + { "Broadcom BCM58700 Nitro 1Gb/2.5Gb/10Gb Ethernet" }, 112 + { "Broadcom BCM57311 NetXtreme-C 10Gb Ethernet" }, 113 + { "Broadcom BCM57312 NetXtreme-C 10Gb/25Gb Ethernet" }, 114 + { "Broadcom BCM57402 NetXtreme-E 10Gb Ethernet" }, 115 + { "Broadcom BCM57404 NetXtreme-E 10Gb/25Gb Ethernet" }, 116 + { "Broadcom BCM57406 NetXtreme-E 10GBase-T Ethernet" }, 119 117 { "Broadcom BCM57402 NetXtreme-E Ethernet Partition" }, 120 - { "Broadcom BCM57407 NetXtreme-E Dual-port 10GBase-T Ethernet" }, 121 - { "Broadcom BCM57412 NetXtreme-E Dual-port 10Gb Ethernet" }, 122 - { "Broadcom BCM57414 NetXtreme-E Dual-port 10Gb/25Gb Ethernet" }, 123 - { "Broadcom BCM57416 NetXtreme-E Dual-port 10GBase-T Ethernet" }, 124 - { "Broadcom BCM57417 NetXtreme-E Dual-port 10GBase-T Ethernet" }, 118 + { "Broadcom BCM57407 NetXtreme-E 10GBase-T Ethernet" }, 119 + { "Broadcom BCM57412 NetXtreme-E 10Gb Ethernet" }, 120 + { "Broadcom BCM57414 NetXtreme-E 10Gb/25Gb Ethernet" }, 121 + { "Broadcom BCM57416 NetXtreme-E 10GBase-T Ethernet" }, 122 + { "Broadcom BCM57417 NetXtreme-E 10GBase-T Ethernet" }, 125 123 { "Broadcom BCM57412 NetXtreme-E Ethernet Partition" }, 126 - { "Broadcom BCM57314 NetXtreme-C Dual-port 10Gb/25Gb/40Gb/50Gb Ethernet" }, 127 - { "Broadcom BCM57417 NetXtreme-E Dual-port 10Gb/25Gb Ethernet" }, 128 - { "Broadcom BCM57416 NetXtreme-E Dual-port 10Gb Ethernet" }, 124 + { "Broadcom BCM57314 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet" }, 125 + { "Broadcom BCM57417 NetXtreme-E 10Gb/25Gb Ethernet" }, 126 + { "Broadcom BCM57416 NetXtreme-E 10Gb Ethernet" }, 129 127 { "Broadcom BCM57404 NetXtreme-E Ethernet Partition" }, 130 128 { "Broadcom BCM57406 NetXtreme-E Ethernet Partition" }, 131 - { "Broadcom BCM57407 NetXtreme-E Dual-port 25Gb Ethernet" }, 129 + { "Broadcom BCM57407 NetXtreme-E 25Gb Ethernet" }, 130 + { "Broadcom BCM57407 NetXtreme-E Ethernet Partition" }, 132 131 { "Broadcom BCM57414 NetXtreme-E Ethernet Partition" }, 133 132 { "Broadcom BCM57416 NetXtreme-E Ethernet Partition" }, 134 - { "Broadcom BCM57304 NetXtreme-C Ethernet Virtual Function" }, 135 - { "Broadcom BCM57404 NetXtreme-E Ethernet Virtual Function" }, 136 - { "Broadcom BCM57414 NetXtreme-E Ethernet Virtual Function" }, 137 - { "Broadcom BCM57314 NetXtreme-E Ethernet Virtual Function" }, 133 + { "Broadcom NetXtreme-E Ethernet Virtual Function" }, 134 + { "Broadcom NetXtreme-C Ethernet Virtual Function" }, 138 135 }; 139 136 140 137 static const struct pci_device_id bnxt_pci_tbl[] = { 138 + { PCI_VDEVICE(BROADCOM, 0x16c0), .driver_data = BCM57417_NPAR }, 141 139 { PCI_VDEVICE(BROADCOM, 0x16c8), .driver_data = BCM57301 }, 142 140 { PCI_VDEVICE(BROADCOM, 0x16c9), .driver_data = BCM57302 }, 143 141 { PCI_VDEVICE(BROADCOM, 0x16ca), .driver_data = BCM57304 }, ··· 160 160 { PCI_VDEVICE(BROADCOM, 0x16e7), .driver_data = BCM57404_NPAR }, 161 161 { PCI_VDEVICE(BROADCOM, 0x16e8), .driver_data = BCM57406_NPAR }, 162 162 { PCI_VDEVICE(BROADCOM, 0x16e9), .driver_data = BCM57407_SFP }, 163 + { PCI_VDEVICE(BROADCOM, 0x16ea), .driver_data = BCM57407_NPAR }, 164 + { PCI_VDEVICE(BROADCOM, 0x16eb), .driver_data = BCM57412_NPAR }, 163 165 { PCI_VDEVICE(BROADCOM, 0x16ec), .driver_data = BCM57414_NPAR }, 166 + { PCI_VDEVICE(BROADCOM, 0x16ed), .driver_data = BCM57414_NPAR }, 164 167 { PCI_VDEVICE(BROADCOM, 0x16ee), .driver_data = BCM57416_NPAR }, 168 + { PCI_VDEVICE(BROADCOM, 0x16ef), .driver_data = BCM57416_NPAR }, 165 169 #ifdef CONFIG_BNXT_SRIOV 166 - { PCI_VDEVICE(BROADCOM, 0x16cb), .driver_data = BCM57304_VF }, 167 - { PCI_VDEVICE(BROADCOM, 0x16d3), .driver_data = BCM57404_VF }, 168 - { PCI_VDEVICE(BROADCOM, 0x16dc), .driver_data = BCM57414_VF }, 169 - { PCI_VDEVICE(BROADCOM, 0x16e1), .driver_data = BCM57314_VF }, 170 + { PCI_VDEVICE(BROADCOM, 0x16c1), .driver_data = NETXTREME_E_VF }, 171 + { PCI_VDEVICE(BROADCOM, 0x16cb), .driver_data = NETXTREME_C_VF }, 172 + { PCI_VDEVICE(BROADCOM, 0x16d3), .driver_data = NETXTREME_E_VF }, 173 + { PCI_VDEVICE(BROADCOM, 0x16dc), .driver_data = NETXTREME_E_VF }, 174 + { PCI_VDEVICE(BROADCOM, 0x16e1), .driver_data = NETXTREME_C_VF }, 175 + { PCI_VDEVICE(BROADCOM, 0x16e5), .driver_data = NETXTREME_C_VF }, 170 176 #endif 171 177 { 0 } 172 178 }; ··· 195 189 196 190 static bool bnxt_vf_pciid(enum board_idx idx) 197 191 { 198 - return (idx == BCM57304_VF || idx == BCM57404_VF || 199 - idx == BCM57314_VF || idx == BCM57414_VF); 192 + return (idx == NETXTREME_C_VF || idx == NETXTREME_E_VF); 200 193 } 201 194 202 195 #define DB_CP_REARM_FLAGS (DB_KEY_CP | DB_IDX_VALID) ··· 3424 3419 3425 3420 bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_VNIC_RSS_CFG, -1, -1); 3426 3421 if (set_rss) { 3427 - vnic->hash_type = BNXT_RSS_HASH_TYPE_FLAG_IPV4 | 3428 - BNXT_RSS_HASH_TYPE_FLAG_TCP_IPV4 | 3429 - BNXT_RSS_HASH_TYPE_FLAG_IPV6 | 3430 - BNXT_RSS_HASH_TYPE_FLAG_TCP_IPV6; 3422 + vnic->hash_type = VNIC_RSS_CFG_REQ_HASH_TYPE_IPV4 | 3423 + VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV4 | 3424 + VNIC_RSS_CFG_REQ_HASH_TYPE_IPV6 | 3425 + VNIC_RSS_CFG_REQ_HASH_TYPE_TCP_IPV6; 3431 3426 3432 3427 req.hash_type = cpu_to_le32(vnic->hash_type); 3433 3428 ··· 4161 4156 if (rc) 4162 4157 goto hwrm_func_qcaps_exit; 4163 4158 4159 + bp->tx_push_thresh = 0; 4160 + if (resp->flags & 4161 + cpu_to_le32(FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED)) 4162 + bp->tx_push_thresh = BNXT_TX_PUSH_THRESH; 4163 + 4164 4164 if (BNXT_PF(bp)) { 4165 4165 struct bnxt_pf_info *pf = &bp->pf; 4166 4166 ··· 4197 4187 struct bnxt_vf_info *vf = &bp->vf; 4198 4188 4199 4189 vf->fw_fid = le16_to_cpu(resp->fid); 4200 - memcpy(vf->mac_addr, resp->mac_address, ETH_ALEN); 4201 - if (is_valid_ether_addr(vf->mac_addr)) 4202 - /* overwrite netdev dev_adr with admin VF MAC */ 4203 - memcpy(bp->dev->dev_addr, vf->mac_addr, ETH_ALEN); 4204 - else 4205 - random_ether_addr(bp->dev->dev_addr); 4206 4190 4207 4191 vf->max_rsscos_ctxs = le16_to_cpu(resp->max_rsscos_ctx); 4208 4192 vf->max_cp_rings = le16_to_cpu(resp->max_cmpl_rings); ··· 4208 4204 vf->max_l2_ctxs = le16_to_cpu(resp->max_l2_ctxs); 4209 4205 vf->max_vnics = le16_to_cpu(resp->max_vnics); 4210 4206 vf->max_stat_ctxs = le16_to_cpu(resp->max_stat_ctx); 4207 + 4208 + memcpy(vf->mac_addr, resp->mac_address, ETH_ALEN); 4209 + mutex_unlock(&bp->hwrm_cmd_lock); 4210 + 4211 + if (is_valid_ether_addr(vf->mac_addr)) { 4212 + /* overwrite netdev dev_adr with admin VF MAC */ 4213 + memcpy(bp->dev->dev_addr, vf->mac_addr, ETH_ALEN); 4214 + } else { 4215 + random_ether_addr(bp->dev->dev_addr); 4216 + rc = bnxt_approve_mac(bp, bp->dev->dev_addr); 4217 + } 4218 + return rc; 4211 4219 #endif 4212 4220 } 4213 - 4214 - bp->tx_push_thresh = 0; 4215 - if (resp->flags & 4216 - cpu_to_le32(FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED)) 4217 - bp->tx_push_thresh = BNXT_TX_PUSH_THRESH; 4218 4221 4219 4222 hwrm_func_qcaps_exit: 4220 4223 mutex_unlock(&bp->hwrm_cmd_lock); ··· 4259 4248 bp->max_tc = resp->max_configurable_queues; 4260 4249 if (bp->max_tc > BNXT_MAX_QUEUE) 4261 4250 bp->max_tc = BNXT_MAX_QUEUE; 4251 + 4252 + if (resp->queue_cfg_info & QUEUE_QPORTCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG) 4253 + bp->max_tc = 1; 4262 4254 4263 4255 qptr = &resp->queue_id0; 4264 4256 for (i = 0; i < bp->max_tc; i++) { ··· 4319 4305 hwrm_ver_get_exit: 4320 4306 mutex_unlock(&bp->hwrm_cmd_lock); 4321 4307 return rc; 4308 + } 4309 + 4310 + int bnxt_hwrm_fw_set_time(struct bnxt *bp) 4311 + { 4312 + struct hwrm_fw_set_time_input req = {0}; 4313 + struct rtc_time tm; 4314 + struct timeval tv; 4315 + 4316 + if (bp->hwrm_spec_code < 0x10400) 4317 + return -EOPNOTSUPP; 4318 + 4319 + do_gettimeofday(&tv); 4320 + rtc_time_to_tm(tv.tv_sec, &tm); 4321 + bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_FW_SET_TIME, -1, -1); 4322 + req.year = cpu_to_le16(1900 + tm.tm_year); 4323 + req.month = 1 + tm.tm_mon; 4324 + req.day = tm.tm_mday; 4325 + req.hour = tm.tm_hour; 4326 + req.minute = tm.tm_min; 4327 + req.second = tm.tm_sec; 4328 + return hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); 4322 4329 } 4323 4330 4324 4331 static int bnxt_hwrm_port_qstats(struct bnxt *bp) ··· 6838 6803 rc = bnxt_hwrm_ver_get(bp); 6839 6804 if (rc) 6840 6805 goto init_err; 6806 + 6807 + bnxt_hwrm_fw_set_time(bp); 6841 6808 6842 6809 dev->hw_features = NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_SG | 6843 6810 NETIF_F_TSO | NETIF_F_TSO6 |
+9 -13
drivers/net/ethernet/broadcom/bnxt/bnxt.h
··· 11 11 #define BNXT_H 12 12 13 13 #define DRV_MODULE_NAME "bnxt_en" 14 - #define DRV_MODULE_VERSION "1.3.0" 14 + #define DRV_MODULE_VERSION "1.5.0" 15 15 16 16 #define DRV_VER_MAJ 1 17 - #define DRV_VER_MIN 3 17 + #define DRV_VER_MIN 5 18 18 #define DRV_VER_UPD 0 19 19 20 20 struct tx_bd { ··· 106 106 #define CMP_TYPE_REMOTE_DRIVER_REQ 34 107 107 #define CMP_TYPE_REMOTE_DRIVER_RESP 36 108 108 #define CMP_TYPE_ERROR_STATUS 48 109 - #define CMPL_BASE_TYPE_STAT_EJECT (0x1aUL << 0) 110 - #define CMPL_BASE_TYPE_HWRM_DONE (0x20UL << 0) 111 - #define CMPL_BASE_TYPE_HWRM_FWD_REQ (0x22UL << 0) 112 - #define CMPL_BASE_TYPE_HWRM_FWD_RESP (0x24UL << 0) 113 - #define CMPL_BASE_TYPE_HWRM_ASYNC_EVENT (0x2eUL << 0) 109 + #define CMPL_BASE_TYPE_STAT_EJECT 0x1aUL 110 + #define CMPL_BASE_TYPE_HWRM_DONE 0x20UL 111 + #define CMPL_BASE_TYPE_HWRM_FWD_REQ 0x22UL 112 + #define CMPL_BASE_TYPE_HWRM_FWD_RESP 0x24UL 113 + #define CMPL_BASE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 114 114 115 115 #define TX_CMP_FLAGS_ERROR (1 << 6) 116 116 #define TX_CMP_FLAGS_PUSH (1 << 7) ··· 389 389 390 390 #define INVALID_HW_RING_ID ((u16)-1) 391 391 392 - #define BNXT_RSS_HASH_TYPE_FLAG_IPV4 0x01 393 - #define BNXT_RSS_HASH_TYPE_FLAG_TCP_IPV4 0x02 394 - #define BNXT_RSS_HASH_TYPE_FLAG_IPV6 0x04 395 - #define BNXT_RSS_HASH_TYPE_FLAG_TCP_IPV6 0x08 396 - 397 392 /* The hardware supports certain page sizes. Use the supported page sizes 398 393 * to allocate the rings. 399 394 */ ··· 413 418 414 419 #define BNXT_RX_PAGE_SIZE (1 << BNXT_RX_PAGE_SHIFT) 415 420 416 - #define BNXT_MIN_PKT_SIZE 45 421 + #define BNXT_MIN_PKT_SIZE 52 417 422 418 423 #define BNXT_NUM_TESTS(bp) 0 419 424 ··· 1220 1225 int bnxt_hwrm_func_qcaps(struct bnxt *); 1221 1226 int bnxt_hwrm_set_pause(struct bnxt *); 1222 1227 int bnxt_hwrm_set_link_setting(struct bnxt *, bool, bool); 1228 + int bnxt_hwrm_fw_set_time(struct bnxt *); 1223 1229 int bnxt_open_nic(struct bnxt *, bool, bool); 1224 1230 int bnxt_close_nic(struct bnxt *, bool, bool); 1225 1231 int bnxt_get_max_rings(struct bnxt *, int *, int *, bool);
+169 -18
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
··· 21 21 #include "bnxt_nvm_defs.h" /* NVRAM content constant and structure defs */ 22 22 #include "bnxt_fw_hdr.h" /* Firmware hdr constant and structure defs */ 23 23 #define FLASH_NVRAM_TIMEOUT ((HWRM_CMD_TIMEOUT) * 100) 24 + #define FLASH_PACKAGE_TIMEOUT ((HWRM_CMD_TIMEOUT) * 200) 25 + #define INSTALL_PACKAGE_TIMEOUT ((HWRM_CMD_TIMEOUT) * 200) 24 26 25 27 static char *bnxt_get_pkgver(struct net_device *dev, char *buf, size_t buflen); 26 28 ··· 348 346 int max_rx_rings, max_tx_rings, tcs; 349 347 350 348 bnxt_get_max_rings(bp, &max_rx_rings, &max_tx_rings, true); 351 - channel->max_combined = max_rx_rings; 349 + channel->max_combined = max_t(int, max_rx_rings, max_tx_rings); 352 350 353 351 if (bnxt_get_max_rings(bp, &max_rx_rings, &max_tx_rings, false)) { 354 352 max_rx_rings = 0; ··· 406 404 if (tcs > 1) 407 405 max_tx_rings /= tcs; 408 406 409 - if (sh && (channel->combined_count > max_rx_rings || 410 - channel->combined_count > max_tx_rings)) 407 + if (sh && 408 + channel->combined_count > max_t(int, max_rx_rings, max_tx_rings)) 411 409 return -ENOMEM; 412 410 413 411 if (!sh && (channel->rx_count > max_rx_rings || ··· 430 428 431 429 if (sh) { 432 430 bp->flags |= BNXT_FLAG_SHARED_RINGS; 433 - bp->rx_nr_rings = channel->combined_count; 434 - bp->tx_nr_rings_per_tc = channel->combined_count; 431 + bp->rx_nr_rings = min_t(int, channel->combined_count, 432 + max_rx_rings); 433 + bp->tx_nr_rings_per_tc = min_t(int, channel->combined_count, 434 + max_tx_rings); 435 435 } else { 436 436 bp->flags &= ~BNXT_FLAG_SHARED_RINGS; 437 437 bp->rx_nr_rings = channel->rx_count; ··· 1032 1028 return bp->link_info.link_up; 1033 1029 } 1034 1030 1031 + static int bnxt_find_nvram_item(struct net_device *dev, u16 type, u16 ordinal, 1032 + u16 ext, u16 *index, u32 *item_length, 1033 + u32 *data_length); 1034 + 1035 1035 static int bnxt_flash_nvram(struct net_device *dev, 1036 1036 u16 dir_type, 1037 1037 u16 dir_ordinal, ··· 1187 1179 (unsigned long)calculated_crc); 1188 1180 return -EINVAL; 1189 1181 } 1190 - /* TODO: Validate digital signature (RSA-encrypted SHA-256 hash) here */ 1191 1182 rc = bnxt_flash_nvram(dev, dir_type, BNX_DIR_ORDINAL_FIRST, 1192 1183 0, 0, fw_data, fw_size); 1193 1184 if (rc == 0) /* Firmware update successful */ 1194 1185 rc = bnxt_firmware_reset(dev, dir_type); 1186 + 1187 + return rc; 1188 + } 1189 + 1190 + static int bnxt_flash_microcode(struct net_device *dev, 1191 + u16 dir_type, 1192 + const u8 *fw_data, 1193 + size_t fw_size) 1194 + { 1195 + struct bnxt_ucode_trailer *trailer; 1196 + u32 calculated_crc; 1197 + u32 stored_crc; 1198 + int rc = 0; 1199 + 1200 + if (fw_size < sizeof(struct bnxt_ucode_trailer)) { 1201 + netdev_err(dev, "Invalid microcode file size: %u\n", 1202 + (unsigned int)fw_size); 1203 + return -EINVAL; 1204 + } 1205 + trailer = (struct bnxt_ucode_trailer *)(fw_data + (fw_size - 1206 + sizeof(*trailer))); 1207 + if (trailer->sig != cpu_to_le32(BNXT_UCODE_TRAILER_SIGNATURE)) { 1208 + netdev_err(dev, "Invalid microcode trailer signature: %08X\n", 1209 + le32_to_cpu(trailer->sig)); 1210 + return -EINVAL; 1211 + } 1212 + if (le16_to_cpu(trailer->dir_type) != dir_type) { 1213 + netdev_err(dev, "Expected microcode type: %d, read: %d\n", 1214 + dir_type, le16_to_cpu(trailer->dir_type)); 1215 + return -EINVAL; 1216 + } 1217 + if (le16_to_cpu(trailer->trailer_length) < 1218 + sizeof(struct bnxt_ucode_trailer)) { 1219 + netdev_err(dev, "Invalid microcode trailer length: %d\n", 1220 + le16_to_cpu(trailer->trailer_length)); 1221 + return -EINVAL; 1222 + } 1223 + 1224 + /* Confirm the CRC32 checksum of the file: */ 1225 + stored_crc = le32_to_cpu(*(__le32 *)(fw_data + fw_size - 1226 + sizeof(stored_crc))); 1227 + calculated_crc = ~crc32(~0, fw_data, fw_size - sizeof(stored_crc)); 1228 + if (calculated_crc != stored_crc) { 1229 + netdev_err(dev, 1230 + "CRC32 (%08lX) does not match calculated: %08lX\n", 1231 + (unsigned long)stored_crc, 1232 + (unsigned long)calculated_crc); 1233 + return -EINVAL; 1234 + } 1235 + rc = bnxt_flash_nvram(dev, dir_type, BNX_DIR_ORDINAL_FIRST, 1236 + 0, 0, fw_data, fw_size); 1195 1237 1196 1238 return rc; 1197 1239 } ··· 1264 1206 return false; 1265 1207 } 1266 1208 1267 - static bool bnxt_dir_type_is_unprotected_exec_format(u16 dir_type) 1209 + static bool bnxt_dir_type_is_other_exec_format(u16 dir_type) 1268 1210 { 1269 1211 switch (dir_type) { 1270 1212 case BNX_DIR_TYPE_AVS: ··· 1285 1227 static bool bnxt_dir_type_is_executable(u16 dir_type) 1286 1228 { 1287 1229 return bnxt_dir_type_is_ape_bin_format(dir_type) || 1288 - bnxt_dir_type_is_unprotected_exec_format(dir_type); 1230 + bnxt_dir_type_is_other_exec_format(dir_type); 1289 1231 } 1290 1232 1291 1233 static int bnxt_flash_firmware_from_file(struct net_device *dev, ··· 1295 1237 const struct firmware *fw; 1296 1238 int rc; 1297 1239 1298 - if (dir_type != BNX_DIR_TYPE_UPDATE && 1299 - bnxt_dir_type_is_executable(dir_type) == false) 1300 - return -EINVAL; 1301 - 1302 1240 rc = request_firmware(&fw, filename, &dev->dev); 1303 1241 if (rc != 0) { 1304 1242 netdev_err(dev, "Error %d requesting firmware file: %s\n", ··· 1303 1249 } 1304 1250 if (bnxt_dir_type_is_ape_bin_format(dir_type) == true) 1305 1251 rc = bnxt_flash_firmware(dev, dir_type, fw->data, fw->size); 1252 + else if (bnxt_dir_type_is_other_exec_format(dir_type) == true) 1253 + rc = bnxt_flash_microcode(dev, dir_type, fw->data, fw->size); 1306 1254 else 1307 1255 rc = bnxt_flash_nvram(dev, dir_type, BNX_DIR_ORDINAL_FIRST, 1308 1256 0, 0, fw->data, fw->size); ··· 1313 1257 } 1314 1258 1315 1259 static int bnxt_flash_package_from_file(struct net_device *dev, 1316 - char *filename) 1260 + char *filename, u32 install_type) 1317 1261 { 1318 - netdev_err(dev, "packages are not yet supported\n"); 1319 - return -EINVAL; 1262 + struct bnxt *bp = netdev_priv(dev); 1263 + struct hwrm_nvm_install_update_output *resp = bp->hwrm_cmd_resp_addr; 1264 + struct hwrm_nvm_install_update_input install = {0}; 1265 + const struct firmware *fw; 1266 + u32 item_len; 1267 + u16 index; 1268 + int rc; 1269 + 1270 + bnxt_hwrm_fw_set_time(bp); 1271 + 1272 + if (bnxt_find_nvram_item(dev, BNX_DIR_TYPE_UPDATE, 1273 + BNX_DIR_ORDINAL_FIRST, BNX_DIR_EXT_NONE, 1274 + &index, &item_len, NULL) != 0) { 1275 + netdev_err(dev, "PKG update area not created in nvram\n"); 1276 + return -ENOBUFS; 1277 + } 1278 + 1279 + rc = request_firmware(&fw, filename, &dev->dev); 1280 + if (rc != 0) { 1281 + netdev_err(dev, "PKG error %d requesting file: %s\n", 1282 + rc, filename); 1283 + return rc; 1284 + } 1285 + 1286 + if (fw->size > item_len) { 1287 + netdev_err(dev, "PKG insufficient update area in nvram: %lu", 1288 + (unsigned long)fw->size); 1289 + rc = -EFBIG; 1290 + } else { 1291 + dma_addr_t dma_handle; 1292 + u8 *kmem; 1293 + struct hwrm_nvm_modify_input modify = {0}; 1294 + 1295 + bnxt_hwrm_cmd_hdr_init(bp, &modify, HWRM_NVM_MODIFY, -1, -1); 1296 + 1297 + modify.dir_idx = cpu_to_le16(index); 1298 + modify.len = cpu_to_le32(fw->size); 1299 + 1300 + kmem = dma_alloc_coherent(&bp->pdev->dev, fw->size, 1301 + &dma_handle, GFP_KERNEL); 1302 + if (!kmem) { 1303 + netdev_err(dev, 1304 + "dma_alloc_coherent failure, length = %u\n", 1305 + (unsigned int)fw->size); 1306 + rc = -ENOMEM; 1307 + } else { 1308 + memcpy(kmem, fw->data, fw->size); 1309 + modify.host_src_addr = cpu_to_le64(dma_handle); 1310 + 1311 + rc = hwrm_send_message(bp, &modify, sizeof(modify), 1312 + FLASH_PACKAGE_TIMEOUT); 1313 + dma_free_coherent(&bp->pdev->dev, fw->size, kmem, 1314 + dma_handle); 1315 + } 1316 + } 1317 + release_firmware(fw); 1318 + if (rc) 1319 + return rc; 1320 + 1321 + if ((install_type & 0xffff) == 0) 1322 + install_type >>= 16; 1323 + bnxt_hwrm_cmd_hdr_init(bp, &install, HWRM_NVM_INSTALL_UPDATE, -1, -1); 1324 + install.install_type = cpu_to_le32(install_type); 1325 + 1326 + rc = hwrm_send_message(bp, &install, sizeof(install), 1327 + INSTALL_PACKAGE_TIMEOUT); 1328 + if (rc) 1329 + return -EOPNOTSUPP; 1330 + 1331 + if (resp->result) { 1332 + netdev_err(dev, "PKG install error = %d, problem_item = %d\n", 1333 + (s8)resp->result, (int)resp->problem_item); 1334 + return -ENOPKG; 1335 + } 1336 + return 0; 1320 1337 } 1321 1338 1322 1339 static int bnxt_flash_device(struct net_device *dev, ··· 1400 1271 return -EINVAL; 1401 1272 } 1402 1273 1403 - if (flash->region == ETHTOOL_FLASH_ALL_REGIONS) 1404 - return bnxt_flash_package_from_file(dev, flash->data); 1274 + if (flash->region == ETHTOOL_FLASH_ALL_REGIONS || 1275 + flash->region > 0xffff) 1276 + return bnxt_flash_package_from_file(dev, flash->data, 1277 + flash->region); 1405 1278 1406 1279 return bnxt_flash_firmware_from_file(dev, flash->region, flash->data); 1407 1280 } ··· 1647 1516 1648 1517 /* Create or re-write an NVM item: */ 1649 1518 if (bnxt_dir_type_is_executable(type) == true) 1650 - return -EINVAL; 1519 + return -EOPNOTSUPP; 1651 1520 ext = eeprom->magic & 0xffff; 1652 1521 ordinal = eeprom->offset >> 16; 1653 1522 attr = eeprom->offset & 0xffff; ··· 1849 1718 return rc; 1850 1719 } 1851 1720 1721 + static int bnxt_nway_reset(struct net_device *dev) 1722 + { 1723 + int rc = 0; 1724 + 1725 + struct bnxt *bp = netdev_priv(dev); 1726 + struct bnxt_link_info *link_info = &bp->link_info; 1727 + 1728 + if (!BNXT_SINGLE_PF(bp)) 1729 + return -EOPNOTSUPP; 1730 + 1731 + if (!(link_info->autoneg & BNXT_AUTONEG_SPEED)) 1732 + return -EINVAL; 1733 + 1734 + if (netif_running(dev)) 1735 + rc = bnxt_hwrm_set_link_setting(bp, true, false); 1736 + 1737 + return rc; 1738 + } 1739 + 1852 1740 const struct ethtool_ops bnxt_ethtool_ops = { 1853 1741 .get_link_ksettings = bnxt_get_link_ksettings, 1854 1742 .set_link_ksettings = bnxt_set_link_ksettings, ··· 1900 1750 .set_eee = bnxt_set_eee, 1901 1751 .get_module_info = bnxt_get_module_info, 1902 1752 .get_module_eeprom = bnxt_get_module_eeprom, 1753 + .nway_reset = bnxt_nway_reset 1903 1754 };
+15 -1
drivers/net/ethernet/broadcom/bnxt/bnxt_fw_hdr.h
··· 11 11 #define __BNXT_FW_HDR_H__ 12 12 13 13 #define BNXT_FIRMWARE_BIN_SIGNATURE 0x1a4d4342 /* "BCM"+0x1a */ 14 + #define BNXT_UCODE_TRAILER_SIGNATURE 0x726c7254 /* "Trlr" */ 14 15 15 16 enum SUPPORTED_FAMILY { 16 17 DEVICE_5702_3_4_FAMILY, /* 0 - Denali, Vinson, K2 */ ··· 86 85 87 86 struct bnxt_fw_header { 88 87 __le32 signature; /* constains the constant value of 89 - * BNXT_Firmware_Bin_Signatures 88 + * BNXT_FIRMWARE_BIN_SIGNATURE 90 89 */ 91 90 u8 flags; /* reserved for ChiMP use */ 92 91 u8 code_type; /* enum SUPPORTED_CODE */ ··· 101 100 u8 revision; 102 101 u8 minor_ver; 103 102 u8 major_ver; 103 + }; 104 + 105 + /* Microcode and pre-boot software/firmware trailer: */ 106 + struct bnxt_ucode_trailer { 107 + u8 rsa_sig[256]; 108 + __le16 flags; 109 + u8 version_format; 110 + u8 version_length; 111 + u8 version[16]; 112 + __le16 dir_type; 113 + __le16 trailer_length; 114 + __le32 sig; /* BNXT_UCODE_TRAILER_SIGNATURE */ 115 + __le32 chksum; /* CRC-32 */ 104 116 }; 105 117 106 118 #endif
+750 -501
drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h
··· 39 39 __le16 type; 40 40 #define EJECT_CMPL_TYPE_MASK 0x3fUL 41 41 #define EJECT_CMPL_TYPE_SFT 0 42 - #define EJECT_CMPL_TYPE_STAT_EJECT (0x1aUL << 0) 42 + #define EJECT_CMPL_TYPE_STAT_EJECT 0x1aUL 43 43 __le16 len; 44 44 __le32 opaque; 45 45 __le32 v; ··· 52 52 __le16 type; 53 53 #define HWRM_CMPL_TYPE_MASK 0x3fUL 54 54 #define HWRM_CMPL_TYPE_SFT 0 55 - #define HWRM_CMPL_TYPE_HWRM_DONE (0x20UL << 0) 55 + #define HWRM_CMPL_TYPE_HWRM_DONE 0x20UL 56 56 __le16 sequence_id; 57 57 __le32 unused_1; 58 58 __le32 v; ··· 65 65 __le16 req_len_type; 66 66 #define HWRM_FWD_REQ_CMPL_TYPE_MASK 0x3fUL 67 67 #define HWRM_FWD_REQ_CMPL_TYPE_SFT 0 68 - #define HWRM_FWD_REQ_CMPL_TYPE_HWRM_FWD_REQ (0x22UL << 0) 68 + #define HWRM_FWD_REQ_CMPL_TYPE_HWRM_FWD_REQ 0x22UL 69 69 #define HWRM_FWD_REQ_CMPL_REQ_LEN_MASK 0xffc0UL 70 70 #define HWRM_FWD_REQ_CMPL_REQ_LEN_SFT 6 71 71 __le16 source_id; ··· 81 81 __le16 type; 82 82 #define HWRM_FWD_RESP_CMPL_TYPE_MASK 0x3fUL 83 83 #define HWRM_FWD_RESP_CMPL_TYPE_SFT 0 84 - #define HWRM_FWD_RESP_CMPL_TYPE_HWRM_FWD_RESP (0x24UL << 0) 84 + #define HWRM_FWD_RESP_CMPL_TYPE_HWRM_FWD_RESP 0x24UL 85 85 __le16 source_id; 86 86 __le16 resp_len; 87 87 __le16 unused_1; ··· 96 96 __le16 type; 97 97 #define HWRM_ASYNC_EVENT_CMPL_TYPE_MASK 0x3fUL 98 98 #define HWRM_ASYNC_EVENT_CMPL_TYPE_SFT 0 99 - #define HWRM_ASYNC_EVENT_CMPL_TYPE_HWRM_ASYNC_EVENT (0x2eUL << 0) 99 + #define HWRM_ASYNC_EVENT_CMPL_TYPE_HWRM_ASYNC_EVENT 0x2eUL 100 100 __le16 event_id; 101 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE (0x0UL << 0) 102 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_MTU_CHANGE (0x1UL << 0) 103 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CHANGE (0x2UL << 0) 104 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_DCB_CONFIG_CHANGE (0x3UL << 0) 105 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED (0x4UL << 0) 106 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED (0x5UL << 0) 107 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE (0x6UL << 0) 108 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_PHY_CFG_CHANGE (0x7UL << 0) 109 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_UNLOAD (0x10UL << 0) 110 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_LOAD (0x11UL << 0) 111 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD (0x20UL << 0) 112 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_LOAD (0x21UL << 0) 113 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_FLR (0x30UL << 0) 114 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_MAC_ADDR_CHANGE (0x31UL << 0) 115 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_VF_COMM_STATUS_CHANGE (0x32UL << 0) 116 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE (0x33UL << 0) 117 - #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR (0xffUL << 0) 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 118 119 __le32 event_data2; 119 120 u8 opaque_v; 120 121 #define HWRM_ASYNC_EVENT_CMPL_V 0x1UL ··· 131 130 __le16 type; 132 131 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_MASK 0x3fUL 133 132 #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 << 0) 133 + #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 135 134 __le16 event_id; 136 - #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_ID_LINK_STATUS_CHANGE (0x0UL << 0) 135 + #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_ID_LINK_STATUS_CHANGE 0x0UL 137 136 __le32 event_data2; 138 137 u8 opaque_v; 139 138 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_V 0x1UL ··· 157 156 __le16 type; 158 157 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_MASK 0x3fUL 159 158 #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 << 0) 159 + #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 161 160 __le16 event_id; 162 - #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_ID_LINK_MTU_CHANGE (0x1UL << 0) 161 + #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_EVENT_ID_LINK_MTU_CHANGE 0x1UL 163 162 __le32 event_data2; 164 163 u8 opaque_v; 165 164 #define HWRM_ASYNC_EVENT_CMPL_LINK_MTU_CHANGE_V 0x1UL ··· 177 176 __le16 type; 178 177 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_MASK 0x3fUL 179 178 #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 << 0) 179 + #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 181 180 __le16 event_id; 182 - #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_ID_LINK_SPEED_CHANGE (0x2UL << 0) 181 + #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_ID_LINK_SPEED_CHANGE 0x2UL 183 182 __le32 event_data2; 184 183 u8 opaque_v; 185 184 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_V 0x1UL ··· 201 200 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_40GB (0x190UL << 1) 202 201 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_50GB (0x1f4UL << 1) 203 202 #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_10MB (0xffffUL << 1) 205 - #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_10MB 203 + #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 206 204 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffff0000UL 207 205 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_SFT 16 208 206 }; ··· 211 211 __le16 type; 212 212 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_MASK 0x3fUL 213 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 << 0) 214 + #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 215 215 __le16 event_id; 216 - #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_ID_DCB_CONFIG_CHANGE (0x3UL << 0) 216 + #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_EVENT_ID_DCB_CONFIG_CHANGE 0x3UL 217 217 __le32 event_data2; 218 218 u8 opaque_v; 219 219 #define HWRM_ASYNC_EVENT_CMPL_DCB_CONFIG_CHANGE_V 0x1UL ··· 231 231 __le16 type; 232 232 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_MASK 0x3fUL 233 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 << 0) 234 + #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT 0x2eUL 235 235 __le16 event_id; 236 - #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_ID_PORT_CONN_NOT_ALLOWED (0x4UL << 0) 236 + #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_ID_PORT_CONN_NOT_ALLOWED 0x4UL 237 237 __le32 event_data2; 238 238 u8 opaque_v; 239 239 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_V 0x1UL ··· 258 258 __le16 type; 259 259 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_MASK 0x3fUL 260 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 << 0) 261 + #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT 0x2eUL 262 262 __le16 event_id; 263 - #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED (0x5UL << 0) 263 + #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED 0x5UL 264 264 __le32 event_data2; 265 265 u8 opaque_v; 266 266 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_V 0x1UL ··· 278 278 __le16 type; 279 279 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_MASK 0x3fUL 280 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 << 0) 281 + #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 282 282 __le16 event_id; 283 - #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LINK_SPEED_CFG_CHANGE (0x6UL << 0) 283 + #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LINK_SPEED_CFG_CHANGE 0x6UL 284 284 __le32 event_data2; 285 285 u8 opaque_v; 286 286 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_V 0x1UL ··· 300 300 __le16 type; 301 301 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_MASK 0x3fUL 302 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 << 0) 303 + #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL 304 304 __le16 event_id; 305 - #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_ID_FUNC_DRVR_UNLOAD (0x10UL << 0) 305 + #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_EVENT_ID_FUNC_DRVR_UNLOAD 0x10UL 306 306 __le32 event_data2; 307 307 u8 opaque_v; 308 308 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_UNLOAD_V 0x1UL ··· 320 320 __le16 type; 321 321 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_MASK 0x3fUL 322 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 << 0) 323 + #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL 324 324 __le16 event_id; 325 - #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_ID_FUNC_DRVR_LOAD (0x11UL << 0) 325 + #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_EVENT_ID_FUNC_DRVR_LOAD 0x11UL 326 326 __le32 event_data2; 327 327 u8 opaque_v; 328 328 #define HWRM_ASYNC_EVENT_CMPL_FUNC_DRVR_LOAD_V 0x1UL ··· 340 340 __le16 type; 341 341 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_MASK 0x3fUL 342 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 << 0) 343 + #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL 344 344 __le16 event_id; 345 - #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_ID_PF_DRVR_UNLOAD (0x20UL << 0) 345 + #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_EVENT_ID_PF_DRVR_UNLOAD 0x20UL 346 346 __le32 event_data2; 347 347 u8 opaque_v; 348 348 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_UNLOAD_V 0x1UL ··· 362 362 __le16 type; 363 363 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_MASK 0x3fUL 364 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 << 0) 365 + #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_TYPE_HWRM_ASYNC_EVENT 0x2eUL 366 366 __le16 event_id; 367 - #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_ID_PF_DRVR_LOAD (0x21UL << 0) 367 + #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_EVENT_ID_PF_DRVR_LOAD 0x21UL 368 368 __le32 event_data2; 369 369 u8 opaque_v; 370 370 #define HWRM_ASYNC_EVENT_CMPL_PF_DRVR_LOAD_V 0x1UL ··· 384 384 __le16 type; 385 385 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_TYPE_MASK 0x3fUL 386 386 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_TYPE_SFT 0 387 - #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_TYPE_HWRM_ASYNC_EVENT (0x2eUL << 0) 387 + #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_TYPE_HWRM_ASYNC_EVENT 0x2eUL 388 388 __le16 event_id; 389 - #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_EVENT_ID_VF_FLR (0x30UL << 0) 389 + #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_EVENT_ID_VF_FLR 0x30UL 390 390 __le32 event_data2; 391 391 u8 opaque_v; 392 392 #define HWRM_ASYNC_EVENT_CMPL_VF_FLR_V 0x1UL ··· 404 404 __le16 type; 405 405 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_MASK 0x3fUL 406 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 << 0) 407 + #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 408 408 __le16 event_id; 409 - #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_ID_VF_MAC_ADDR_CHANGE (0x31UL << 0) 409 + #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_ID_VF_MAC_ADDR_CHANGE 0x31UL 410 410 __le32 event_data2; 411 411 u8 opaque_v; 412 412 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_V 0x1UL ··· 424 424 __le16 type; 425 425 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_MASK 0x3fUL 426 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 << 0) 427 + #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 428 428 __le16 event_id; 429 - #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_ID_PF_VF_COMM_STATUS_CHANGE (0x32UL << 0) 429 + #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_ID_PF_VF_COMM_STATUS_CHANGE 0x32UL 430 430 __le32 event_data2; 431 431 u8 opaque_v; 432 432 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_V 0x1UL ··· 443 443 __le16 type; 444 444 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_MASK 0x3fUL 445 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 << 0) 446 + #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT 0x2eUL 447 447 __le16 event_id; 448 - #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_VF_CFG_CHANGE (0x33UL << 0) 448 + #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_VF_CFG_CHANGE 0x33UL 449 449 __le32 event_data2; 450 450 u8 opaque_v; 451 451 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_V 0x1UL ··· 465 465 __le16 type; 466 466 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_MASK 0x3fUL 467 467 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_SFT 0 468 - #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_HWRM_ASYNC_EVENT (0x2eUL << 0) 468 + #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_TYPE_HWRM_ASYNC_EVENT 0x2eUL 469 469 __le16 event_id; 470 - #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_ID_HWRM_ERROR (0xffUL << 0) 470 + #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_ID_HWRM_ERROR 0xffUL 471 471 __le32 event_data2; 472 472 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_MASK 0xffUL 473 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 << 0) 475 - #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_NONFATAL (0x1UL << 0) 476 - #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL (0x2UL << 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 477 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_LAST HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL 478 478 u8 opaque_v; 479 479 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_V 0x1UL ··· 485 485 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA1_TIMESTAMP 0x1UL 486 486 }; 487 487 488 - /* HW Resource Manager Specification 1.3.0 */ 488 + /* HW Resource Manager Specification 1.5.1 */ 489 489 #define HWRM_VERSION_MAJOR 1 490 - #define HWRM_VERSION_MINOR 3 491 - #define HWRM_VERSION_UPDATE 0 490 + #define HWRM_VERSION_MINOR 5 491 + #define HWRM_VERSION_UPDATE 1 492 492 493 - #define HWRM_VERSION_STR "1.3.0" 493 + #define HWRM_VERSION_STR "1.5.1" 494 494 /* 495 495 * Following is the signature for HWRM message field that indicates not 496 496 * applicable (All F's). Need to cast it the size of the field if needed. ··· 556 556 #define HWRM_QUEUE_QPORTCFG (0x30UL) 557 557 #define HWRM_QUEUE_QCFG (0x31UL) 558 558 #define HWRM_QUEUE_CFG (0x32UL) 559 - #define HWRM_QUEUE_BUFFERS_QCFG (0x33UL) 560 - #define HWRM_QUEUE_BUFFERS_CFG (0x34UL) 559 + #define RESERVED2 (0x33UL) 560 + #define RESERVED3 (0x34UL) 561 561 #define HWRM_QUEUE_PFCENABLE_QCFG (0x35UL) 562 562 #define HWRM_QUEUE_PFCENABLE_CFG (0x36UL) 563 563 #define HWRM_QUEUE_PRI2COS_QCFG (0x37UL) ··· 574 574 #define HWRM_VNIC_RSS_QCFG (0x47UL) 575 575 #define HWRM_VNIC_PLCMODES_CFG (0x48UL) 576 576 #define HWRM_VNIC_PLCMODES_QCFG (0x49UL) 577 + #define HWRM_VNIC_QCAPS (0x4aUL) 577 578 #define HWRM_RING_ALLOC (0x50UL) 578 579 #define HWRM_RING_FREE (0x51UL) 579 580 #define HWRM_RING_CMPL_RING_QAGGINT_PARAMS (0x52UL) ··· 582 581 #define HWRM_RING_RESET (0x5eUL) 583 582 #define HWRM_RING_GRP_ALLOC (0x60UL) 584 583 #define HWRM_RING_GRP_FREE (0x61UL) 584 + #define RESERVED5 (0x64UL) 585 + #define RESERVED6 (0x65UL) 585 586 #define HWRM_VNIC_RSS_COS_LB_CTX_ALLOC (0x70UL) 586 587 #define HWRM_VNIC_RSS_COS_LB_CTX_FREE (0x71UL) 587 588 #define HWRM_CFA_L2_FILTER_ALLOC (0x90UL) 588 589 #define HWRM_CFA_L2_FILTER_FREE (0x91UL) 589 590 #define HWRM_CFA_L2_FILTER_CFG (0x92UL) 590 591 #define HWRM_CFA_L2_SET_RX_MASK (0x93UL) 591 - #define RESERVED3 (0x94UL) 592 + #define RESERVED4 (0x94UL) 592 593 #define HWRM_CFA_TUNNEL_FILTER_ALLOC (0x95UL) 593 594 #define HWRM_CFA_TUNNEL_FILTER_FREE (0x96UL) 594 595 #define HWRM_CFA_ENCAP_RECORD_ALLOC (0x97UL) ··· 610 607 #define HWRM_STAT_CTX_CLR_STATS (0xb3UL) 611 608 #define HWRM_FW_RESET (0xc0UL) 612 609 #define HWRM_FW_QSTATUS (0xc1UL) 610 + #define HWRM_FW_SET_TIME (0xc8UL) 611 + #define HWRM_FW_GET_TIME (0xc9UL) 613 612 #define HWRM_EXEC_FWD_RESP (0xd0UL) 614 613 #define HWRM_REJECT_FWD_RESP (0xd1UL) 615 614 #define HWRM_FWD_RESP (0xd2UL) ··· 620 615 #define HWRM_WOL_FILTER_ALLOC (0xf0UL) 621 616 #define HWRM_WOL_FILTER_FREE (0xf1UL) 622 617 #define HWRM_WOL_FILTER_QCFG (0xf2UL) 618 + #define HWRM_WOL_REASON_QCFG (0xf3UL) 623 619 #define HWRM_DBG_READ_DIRECT (0xff10UL) 624 620 #define HWRM_DBG_READ_INDIRECT (0xff11UL) 625 621 #define HWRM_DBG_WRITE_DIRECT (0xff12UL) 626 622 #define HWRM_DBG_WRITE_INDIRECT (0xff13UL) 627 623 #define HWRM_DBG_DUMP (0xff14UL) 624 + #define HWRM_NVM_INSTALL_UPDATE (0xfff3UL) 628 625 #define HWRM_NVM_MODIFY (0xfff4UL) 629 626 #define HWRM_NVM_VERIFY_UPDATE (0xfff5UL) 630 627 #define HWRM_NVM_GET_DEV_INFO (0xfff6UL) ··· 831 824 u8 netctrl_fw_min; 832 825 u8 netctrl_fw_bld; 833 826 u8 netctrl_fw_rsvd; 834 - __le32 reserved1; 827 + __le32 dev_caps_cfg; 828 + #define VER_GET_RESP_DEV_CAPS_CFG_SECURE_FW_UPD_SUPPORTED 0x1UL 829 + #define VER_GET_RESP_DEV_CAPS_CFG_FW_DCBX_AGENT_SUPPORTED 0x2UL 835 830 u8 roce_fw_maj; 836 831 u8 roce_fw_min; 837 832 u8 roce_fw_bld; ··· 848 839 u8 chip_metal; 849 840 u8 chip_bond_id; 850 841 u8 chip_platform_type; 851 - #define VER_GET_RESP_CHIP_PLATFORM_TYPE_ASIC (0x0UL << 0) 852 - #define VER_GET_RESP_CHIP_PLATFORM_TYPE_FPGA (0x1UL << 0) 853 - #define VER_GET_RESP_CHIP_PLATFORM_TYPE_PALLADIUM (0x2UL << 0) 842 + #define VER_GET_RESP_CHIP_PLATFORM_TYPE_ASIC 0x0UL 843 + #define VER_GET_RESP_CHIP_PLATFORM_TYPE_FPGA 0x1UL 844 + #define VER_GET_RESP_CHIP_PLATFORM_TYPE_PALLADIUM 0x2UL 854 845 __le16 max_req_win_len; 855 846 __le16 max_resp_len; 856 847 __le16 def_req_timeout; ··· 872 863 #define FUNC_RESET_REQ_ENABLES_VF_ID_VALID 0x1UL 873 864 __le16 vf_id; 874 865 u8 func_reset_level; 875 - #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETALL (0x0UL << 0) 876 - #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETME (0x1UL << 0) 877 - #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETCHILDREN (0x2UL << 0) 878 - #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETVF (0x3UL << 0) 866 + #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETALL 0x0UL 867 + #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETME 0x1UL 868 + #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETCHILDREN 0x2UL 869 + #define FUNC_RESET_REQ_FUNC_RESET_LEVEL_RESETVF 0x3UL 879 870 u8 unused_0; 880 871 }; 881 872 ··· 1037 1028 #define FUNC_QCAPS_RESP_FLAGS_ROCE_V2_SUPPORTED 0x10UL 1038 1029 #define FUNC_QCAPS_RESP_FLAGS_WOL_MAGICPKT_SUPPORTED 0x20UL 1039 1030 #define FUNC_QCAPS_RESP_FLAGS_WOL_BMP_SUPPORTED 0x40UL 1031 + #define FUNC_QCAPS_RESP_FLAGS_TX_RING_RL_SUPPORTED 0x80UL 1032 + #define FUNC_QCAPS_RESP_FLAGS_TX_BW_CFG_SUPPORTED 0x100UL 1033 + #define FUNC_QCAPS_RESP_FLAGS_VF_TX_RING_RL_SUPPORTED 0x200UL 1034 + #define FUNC_QCAPS_RESP_FLAGS_VF_BW_CFG_SUPPORTED 0x400UL 1040 1035 u8 mac_address[6]; 1041 1036 __le16 max_rsscos_ctx; 1042 1037 __le16 max_cmpl_rings; ··· 1060 1047 __le32 max_mcast_filters; 1061 1048 __le32 max_flow_id; 1062 1049 __le32 max_hw_ring_grps; 1050 + __le16 max_sp_tx_rings; 1063 1051 u8 unused_0; 1064 - u8 unused_1; 1065 - u8 unused_2; 1066 1052 u8 valid; 1067 1053 }; 1068 1054 ··· 1089 1077 __le16 flags; 1090 1078 #define FUNC_QCFG_RESP_FLAGS_OOB_WOL_MAGICPKT_ENABLED 0x1UL 1091 1079 #define FUNC_QCFG_RESP_FLAGS_OOB_WOL_BMP_ENABLED 0x2UL 1080 + #define FUNC_QCFG_RESP_FLAGS_FW_DCBX_AGENT_ENABLED 0x4UL 1092 1081 u8 mac_address[6]; 1093 1082 __le16 pci_id; 1094 1083 __le16 alloc_rsscos_ctx; ··· 1102 1089 __le16 mru; 1103 1090 __le16 stat_ctx_id; 1104 1091 u8 port_partition_type; 1105 - #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_SPF (0x0UL << 0) 1106 - #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_MPFS (0x1UL << 0) 1107 - #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0 (0x2UL << 0) 1108 - #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_5 (0x3UL << 0) 1109 - #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR2_0 (0x4UL << 0) 1110 - #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_UNKNOWN (0xffUL << 0) 1092 + #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_SPF 0x0UL 1093 + #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_MPFS 0x1UL 1094 + #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0 0x2UL 1095 + #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_5 0x3UL 1096 + #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR2_0 0x4UL 1097 + #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_UNKNOWN 0xffUL 1111 1098 u8 unused_0; 1112 1099 __le16 dflt_vnic_id; 1113 1100 u8 unused_1; 1114 1101 u8 unused_2; 1115 1102 __le32 min_bw; 1103 + #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_MASK 0xfffffffUL 1104 + #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_SFT 0 1105 + #define FUNC_QCFG_RESP_MIN_BW_RSVD 0x10000000UL 1106 + #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 1107 + #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_SFT 29 1108 + #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 1109 + #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 1110 + #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 1111 + #define FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_LAST FUNC_QCFG_RESP_MIN_BW_BW_VALUE_UNIT_INVALID 1116 1112 __le32 max_bw; 1113 + #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_MASK 0xfffffffUL 1114 + #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_SFT 0 1115 + #define FUNC_QCFG_RESP_MAX_BW_RSVD 0x10000000UL 1116 + #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 1117 + #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_SFT 29 1118 + #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 1119 + #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 1120 + #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 1121 + #define FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_LAST FUNC_QCFG_RESP_MAX_BW_BW_VALUE_UNIT_INVALID 1117 1122 u8 evb_mode; 1118 - #define FUNC_QCFG_RESP_EVB_MODE_NO_EVB (0x0UL << 0) 1119 - #define FUNC_QCFG_RESP_EVB_MODE_VEB (0x1UL << 0) 1120 - #define FUNC_QCFG_RESP_EVB_MODE_VEPA (0x2UL << 0) 1123 + #define FUNC_QCFG_RESP_EVB_MODE_NO_EVB 0x0UL 1124 + #define FUNC_QCFG_RESP_EVB_MODE_VEB 0x1UL 1125 + #define FUNC_QCFG_RESP_EVB_MODE_VEPA 0x2UL 1121 1126 u8 unused_3; 1122 - __le16 unused_4; 1127 + __le16 alloc_vfs; 1123 1128 __le32 alloc_mcast_filters; 1124 1129 __le32 alloc_hw_ring_grps; 1125 - u8 unused_5; 1126 - u8 unused_6; 1127 - u8 unused_7; 1130 + __le16 alloc_sp_tx_rings; 1131 + u8 unused_4; 1128 1132 u8 valid; 1129 1133 }; 1130 1134 ··· 1201 1171 __le16 dflt_vlan; 1202 1172 __be32 dflt_ip_addr[4]; 1203 1173 __le32 min_bw; 1174 + #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_MASK 0xfffffffUL 1175 + #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_SFT 0 1176 + #define FUNC_CFG_REQ_MIN_BW_RSVD 0x10000000UL 1177 + #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 1178 + #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_SFT 29 1179 + #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 1180 + #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 1181 + #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 1182 + #define FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_LAST FUNC_CFG_REQ_MIN_BW_BW_VALUE_UNIT_INVALID 1204 1183 __le32 max_bw; 1184 + #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_MASK 0xfffffffUL 1185 + #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_SFT 0 1186 + #define FUNC_CFG_REQ_MAX_BW_RSVD 0x10000000UL 1187 + #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 1188 + #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_SFT 29 1189 + #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 1190 + #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 1191 + #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 1192 + #define FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_LAST FUNC_CFG_REQ_MAX_BW_BW_VALUE_UNIT_INVALID 1205 1193 __le16 async_event_cr; 1206 1194 u8 vlan_antispoof_mode; 1207 - #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_NOCHECK (0x0UL << 0) 1208 - #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_VALIDATE_VLAN (0x1UL << 0) 1209 - #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_IF_VLANDNE (0x2UL << 0) 1210 - #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_OR_OVERRIDE_VLAN (0x3UL << 0) 1195 + #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_NOCHECK 0x0UL 1196 + #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_VALIDATE_VLAN 0x1UL 1197 + #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_IF_VLANDNE 0x2UL 1198 + #define FUNC_CFG_REQ_VLAN_ANTISPOOF_MODE_INSERT_OR_OVERRIDE_VLAN 0x3UL 1211 1199 u8 allowed_vlan_pris; 1212 1200 u8 evb_mode; 1213 - #define FUNC_CFG_REQ_EVB_MODE_NO_EVB (0x0UL << 0) 1214 - #define FUNC_CFG_REQ_EVB_MODE_VEB (0x1UL << 0) 1215 - #define FUNC_CFG_REQ_EVB_MODE_VEPA (0x2UL << 0) 1201 + #define FUNC_CFG_REQ_EVB_MODE_NO_EVB 0x0UL 1202 + #define FUNC_CFG_REQ_EVB_MODE_VEB 0x1UL 1203 + #define FUNC_CFG_REQ_EVB_MODE_VEPA 0x2UL 1216 1204 u8 unused_2; 1217 1205 __le16 num_mcast_filters; 1218 1206 }; ··· 1389 1341 #define FUNC_DRV_RGTR_REQ_ENABLES_VF_REQ_FWD 0x8UL 1390 1342 #define FUNC_DRV_RGTR_REQ_ENABLES_ASYNC_EVENT_FWD 0x10UL 1391 1343 __le16 os_type; 1392 - #define FUNC_DRV_RGTR_REQ_OS_TYPE_UNKNOWN (0x0UL << 0) 1393 - #define FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER (0x1UL << 0) 1394 - #define FUNC_DRV_RGTR_REQ_OS_TYPE_MSDOS (0xeUL << 0) 1395 - #define FUNC_DRV_RGTR_REQ_OS_TYPE_WINDOWS (0x12UL << 0) 1396 - #define FUNC_DRV_RGTR_REQ_OS_TYPE_SOLARIS (0x1dUL << 0) 1397 - #define FUNC_DRV_RGTR_REQ_OS_TYPE_LINUX (0x24UL << 0) 1398 - #define FUNC_DRV_RGTR_REQ_OS_TYPE_FREEBSD (0x2aUL << 0) 1399 - #define FUNC_DRV_RGTR_REQ_OS_TYPE_ESXI (0x68UL << 0) 1400 - #define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN864 (0x73UL << 0) 1401 - #define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN2012R2 (0x74UL << 0) 1344 + #define FUNC_DRV_RGTR_REQ_OS_TYPE_UNKNOWN 0x0UL 1345 + #define FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER 0x1UL 1346 + #define FUNC_DRV_RGTR_REQ_OS_TYPE_MSDOS 0xeUL 1347 + #define FUNC_DRV_RGTR_REQ_OS_TYPE_WINDOWS 0x12UL 1348 + #define FUNC_DRV_RGTR_REQ_OS_TYPE_SOLARIS 0x1dUL 1349 + #define FUNC_DRV_RGTR_REQ_OS_TYPE_LINUX 0x24UL 1350 + #define FUNC_DRV_RGTR_REQ_OS_TYPE_FREEBSD 0x2aUL 1351 + #define FUNC_DRV_RGTR_REQ_OS_TYPE_ESXI 0x68UL 1352 + #define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN864 0x73UL 1353 + #define FUNC_DRV_RGTR_REQ_OS_TYPE_WIN2012R2 0x74UL 1402 1354 u8 ver_maj; 1403 1355 u8 ver_min; 1404 1356 u8 ver_upd; ··· 1463 1415 __le16 vf_id; 1464 1416 __le16 req_buf_num_pages; 1465 1417 __le16 req_buf_page_size; 1466 - #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_16B (0x4UL << 0) 1467 - #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4K (0xcUL << 0) 1468 - #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_8K (0xdUL << 0) 1469 - #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_64K (0x10UL << 0) 1470 - #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_2M (0x15UL << 0) 1471 - #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4M (0x16UL << 0) 1472 - #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_1G (0x1eUL << 0) 1418 + #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_16B 0x4UL 1419 + #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4K 0xcUL 1420 + #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_8K 0xdUL 1421 + #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_64K 0x10UL 1422 + #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_2M 0x15UL 1423 + #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_4M 0x16UL 1424 + #define FUNC_BUF_RGTR_REQ_REQ_BUF_PAGE_SIZE_1G 0x1eUL 1473 1425 __le16 req_buf_len; 1474 1426 __le16 resp_buf_len; 1475 1427 u8 unused_0; ··· 1521 1473 __le16 seq_id; 1522 1474 __le16 resp_len; 1523 1475 __le16 os_type; 1524 - #define FUNC_DRV_QVER_RESP_OS_TYPE_UNKNOWN (0x0UL << 0) 1525 - #define FUNC_DRV_QVER_RESP_OS_TYPE_OTHER (0x1UL << 0) 1526 - #define FUNC_DRV_QVER_RESP_OS_TYPE_MSDOS (0xeUL << 0) 1527 - #define FUNC_DRV_QVER_RESP_OS_TYPE_WINDOWS (0x12UL << 0) 1528 - #define FUNC_DRV_QVER_RESP_OS_TYPE_SOLARIS (0x1dUL << 0) 1529 - #define FUNC_DRV_QVER_RESP_OS_TYPE_LINUX (0x24UL << 0) 1530 - #define FUNC_DRV_QVER_RESP_OS_TYPE_FREEBSD (0x2aUL << 0) 1531 - #define FUNC_DRV_QVER_RESP_OS_TYPE_ESXI (0x68UL << 0) 1532 - #define FUNC_DRV_QVER_RESP_OS_TYPE_WIN864 (0x73UL << 0) 1533 - #define FUNC_DRV_QVER_RESP_OS_TYPE_WIN2012R2 (0x74UL << 0) 1476 + #define FUNC_DRV_QVER_RESP_OS_TYPE_UNKNOWN 0x0UL 1477 + #define FUNC_DRV_QVER_RESP_OS_TYPE_OTHER 0x1UL 1478 + #define FUNC_DRV_QVER_RESP_OS_TYPE_MSDOS 0xeUL 1479 + #define FUNC_DRV_QVER_RESP_OS_TYPE_WINDOWS 0x12UL 1480 + #define FUNC_DRV_QVER_RESP_OS_TYPE_SOLARIS 0x1dUL 1481 + #define FUNC_DRV_QVER_RESP_OS_TYPE_LINUX 0x24UL 1482 + #define FUNC_DRV_QVER_RESP_OS_TYPE_FREEBSD 0x2aUL 1483 + #define FUNC_DRV_QVER_RESP_OS_TYPE_ESXI 0x68UL 1484 + #define FUNC_DRV_QVER_RESP_OS_TYPE_WIN864 0x73UL 1485 + #define FUNC_DRV_QVER_RESP_OS_TYPE_WIN2012R2 0x74UL 1534 1486 u8 ver_maj; 1535 1487 u8 ver_min; 1536 1488 u8 ver_upd; ··· 1576 1528 #define PORT_PHY_CFG_REQ_ENABLES_TX_LPI_TIMER 0x400UL 1577 1529 __le16 port_id; 1578 1530 __le16 force_link_speed; 1579 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100MB (0x1UL << 0) 1580 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB (0xaUL << 0) 1581 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2GB (0x14UL << 0) 1582 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2_5GB (0x19UL << 0) 1583 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10GB (0x64UL << 0) 1584 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_20GB (0xc8UL << 0) 1585 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB (0xfaUL << 0) 1586 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_40GB (0x190UL << 0) 1587 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_50GB (0x1f4UL << 0) 1588 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100GB (0x3e8UL << 0) 1589 - #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10MB (0xffffUL << 0) 1531 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100MB 0x1UL 1532 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_1GB 0xaUL 1533 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2GB 0x14UL 1534 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_2_5GB 0x19UL 1535 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10GB 0x64UL 1536 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_20GB 0xc8UL 1537 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB 0xfaUL 1538 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_40GB 0x190UL 1539 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_50GB 0x1f4UL 1540 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100GB 0x3e8UL 1541 + #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10MB 0xffffUL 1590 1542 u8 auto_mode; 1591 - #define PORT_PHY_CFG_REQ_AUTO_MODE_NONE (0x0UL << 0) 1592 - #define PORT_PHY_CFG_REQ_AUTO_MODE_ALL_SPEEDS (0x1UL << 0) 1593 - #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_SPEED (0x2UL << 0) 1594 - #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_OR_BELOW (0x3UL << 0) 1595 - #define PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK (0x4UL << 0) 1543 + #define PORT_PHY_CFG_REQ_AUTO_MODE_NONE 0x0UL 1544 + #define PORT_PHY_CFG_REQ_AUTO_MODE_ALL_SPEEDS 0x1UL 1545 + #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_SPEED 0x2UL 1546 + #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_OR_BELOW 0x3UL 1547 + #define PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK 0x4UL 1596 1548 u8 auto_duplex; 1597 - #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_HALF (0x0UL << 0) 1598 - #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_FULL (0x1UL << 0) 1599 - #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH (0x2UL << 0) 1549 + #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_HALF 0x0UL 1550 + #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_FULL 0x1UL 1551 + #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_BOTH 0x2UL 1600 1552 u8 auto_pause; 1601 1553 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_TX 0x1UL 1602 1554 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_RX 0x2UL 1603 1555 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_AUTONEG_PAUSE 0x4UL 1604 1556 u8 unused_0; 1605 1557 __le16 auto_link_speed; 1606 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100MB (0x1UL << 0) 1607 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_1GB (0xaUL << 0) 1608 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2GB (0x14UL << 0) 1609 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2_5GB (0x19UL << 0) 1610 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10GB (0x64UL << 0) 1611 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_20GB (0xc8UL << 0) 1612 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_25GB (0xfaUL << 0) 1613 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_40GB (0x190UL << 0) 1614 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_50GB (0x1f4UL << 0) 1615 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100GB (0x3e8UL << 0) 1616 - #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10MB (0xffffUL << 0) 1558 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100MB 0x1UL 1559 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_1GB 0xaUL 1560 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2GB 0x14UL 1561 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_2_5GB 0x19UL 1562 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10GB 0x64UL 1563 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_20GB 0xc8UL 1564 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_25GB 0xfaUL 1565 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_40GB 0x190UL 1566 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_50GB 0x1f4UL 1567 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100GB 0x3e8UL 1568 + #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10MB 0xffffUL 1617 1569 __le16 auto_link_speed_mask; 1618 1570 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MBHD 0x1UL 1619 1571 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MB 0x2UL ··· 1630 1582 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MBHD 0x1000UL 1631 1583 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MB 0x2000UL 1632 1584 u8 wirespeed; 1633 - #define PORT_PHY_CFG_REQ_WIRESPEED_OFF (0x0UL << 0) 1634 - #define PORT_PHY_CFG_REQ_WIRESPEED_ON (0x1UL << 0) 1585 + #define PORT_PHY_CFG_REQ_WIRESPEED_OFF 0x0UL 1586 + #define PORT_PHY_CFG_REQ_WIRESPEED_ON 0x1UL 1635 1587 u8 lpbk; 1636 - #define PORT_PHY_CFG_REQ_LPBK_NONE (0x0UL << 0) 1637 - #define PORT_PHY_CFG_REQ_LPBK_LOCAL (0x1UL << 0) 1638 - #define PORT_PHY_CFG_REQ_LPBK_REMOTE (0x2UL << 0) 1588 + #define PORT_PHY_CFG_REQ_LPBK_NONE 0x0UL 1589 + #define PORT_PHY_CFG_REQ_LPBK_LOCAL 0x1UL 1590 + #define PORT_PHY_CFG_REQ_LPBK_REMOTE 0x2UL 1639 1591 u8 force_pause; 1640 1592 #define PORT_PHY_CFG_REQ_FORCE_PAUSE_TX 0x1UL 1641 1593 #define PORT_PHY_CFG_REQ_FORCE_PAUSE_RX 0x2UL ··· 1689 1641 __le16 seq_id; 1690 1642 __le16 resp_len; 1691 1643 u8 link; 1692 - #define PORT_PHY_QCFG_RESP_LINK_NO_LINK (0x0UL << 0) 1693 - #define PORT_PHY_QCFG_RESP_LINK_SIGNAL (0x1UL << 0) 1694 - #define PORT_PHY_QCFG_RESP_LINK_LINK (0x2UL << 0) 1644 + #define PORT_PHY_QCFG_RESP_LINK_NO_LINK 0x0UL 1645 + #define PORT_PHY_QCFG_RESP_LINK_SIGNAL 0x1UL 1646 + #define PORT_PHY_QCFG_RESP_LINK_LINK 0x2UL 1695 1647 u8 unused_0; 1696 1648 __le16 link_speed; 1697 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_100MB (0x1UL << 0) 1698 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_1GB (0xaUL << 0) 1699 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_2GB (0x14UL << 0) 1700 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_2_5GB (0x19UL << 0) 1701 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_10GB (0x64UL << 0) 1702 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_20GB (0xc8UL << 0) 1703 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_25GB (0xfaUL << 0) 1704 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_40GB (0x190UL << 0) 1705 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_50GB (0x1f4UL << 0) 1706 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_100GB (0x3e8UL << 0) 1707 - #define PORT_PHY_QCFG_RESP_LINK_SPEED_10MB (0xffffUL << 0) 1649 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_100MB 0x1UL 1650 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_1GB 0xaUL 1651 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_2GB 0x14UL 1652 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_2_5GB 0x19UL 1653 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_10GB 0x64UL 1654 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_20GB 0xc8UL 1655 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_25GB 0xfaUL 1656 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_40GB 0x190UL 1657 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_50GB 0x1f4UL 1658 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_100GB 0x3e8UL 1659 + #define PORT_PHY_QCFG_RESP_LINK_SPEED_10MB 0xffffUL 1708 1660 u8 duplex; 1709 - #define PORT_PHY_QCFG_RESP_DUPLEX_HALF (0x0UL << 0) 1710 - #define PORT_PHY_QCFG_RESP_DUPLEX_FULL (0x1UL << 0) 1661 + #define PORT_PHY_QCFG_RESP_DUPLEX_HALF 0x0UL 1662 + #define PORT_PHY_QCFG_RESP_DUPLEX_FULL 0x1UL 1711 1663 u8 pause; 1712 1664 #define PORT_PHY_QCFG_RESP_PAUSE_TX 0x1UL 1713 1665 #define PORT_PHY_QCFG_RESP_PAUSE_RX 0x2UL ··· 1727 1679 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MBHD 0x1000UL 1728 1680 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MB 0x2000UL 1729 1681 __le16 force_link_speed; 1730 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100MB (0x1UL << 0) 1731 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_1GB (0xaUL << 0) 1732 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2GB (0x14UL << 0) 1733 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2_5GB (0x19UL << 0) 1734 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10GB (0x64UL << 0) 1735 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_20GB (0xc8UL << 0) 1736 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_25GB (0xfaUL << 0) 1737 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_40GB (0x190UL << 0) 1738 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_50GB (0x1f4UL << 0) 1739 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100GB (0x3e8UL << 0) 1740 - #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB (0xffffUL << 0) 1682 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100MB 0x1UL 1683 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_1GB 0xaUL 1684 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2GB 0x14UL 1685 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_2_5GB 0x19UL 1686 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10GB 0x64UL 1687 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_20GB 0xc8UL 1688 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_25GB 0xfaUL 1689 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_40GB 0x190UL 1690 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_50GB 0x1f4UL 1691 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100GB 0x3e8UL 1692 + #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB 0xffffUL 1741 1693 u8 auto_mode; 1742 - #define PORT_PHY_QCFG_RESP_AUTO_MODE_NONE (0x0UL << 0) 1743 - #define PORT_PHY_QCFG_RESP_AUTO_MODE_ALL_SPEEDS (0x1UL << 0) 1744 - #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_SPEED (0x2UL << 0) 1745 - #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_OR_BELOW (0x3UL << 0) 1746 - #define PORT_PHY_QCFG_RESP_AUTO_MODE_SPEED_MASK (0x4UL << 0) 1694 + #define PORT_PHY_QCFG_RESP_AUTO_MODE_NONE 0x0UL 1695 + #define PORT_PHY_QCFG_RESP_AUTO_MODE_ALL_SPEEDS 0x1UL 1696 + #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_SPEED 0x2UL 1697 + #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_OR_BELOW 0x3UL 1698 + #define PORT_PHY_QCFG_RESP_AUTO_MODE_SPEED_MASK 0x4UL 1747 1699 u8 auto_pause; 1748 1700 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_TX 0x1UL 1749 1701 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_RX 0x2UL 1750 1702 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_AUTONEG_PAUSE 0x4UL 1751 1703 __le16 auto_link_speed; 1752 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100MB (0x1UL << 0) 1753 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_1GB (0xaUL << 0) 1754 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2GB (0x14UL << 0) 1755 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2_5GB (0x19UL << 0) 1756 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10GB (0x64UL << 0) 1757 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_20GB (0xc8UL << 0) 1758 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_25GB (0xfaUL << 0) 1759 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_40GB (0x190UL << 0) 1760 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_50GB (0x1f4UL << 0) 1761 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100GB (0x3e8UL << 0) 1762 - #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10MB (0xffffUL << 0) 1704 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100MB 0x1UL 1705 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_1GB 0xaUL 1706 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2GB 0x14UL 1707 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_2_5GB 0x19UL 1708 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10GB 0x64UL 1709 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_20GB 0xc8UL 1710 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_25GB 0xfaUL 1711 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_40GB 0x190UL 1712 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_50GB 0x1f4UL 1713 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100GB 0x3e8UL 1714 + #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10MB 0xffffUL 1763 1715 __le16 auto_link_speed_mask; 1764 1716 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MBHD 0x1UL 1765 1717 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MB 0x2UL ··· 1776 1728 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MBHD 0x1000UL 1777 1729 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MB 0x2000UL 1778 1730 u8 wirespeed; 1779 - #define PORT_PHY_QCFG_RESP_WIRESPEED_OFF (0x0UL << 0) 1780 - #define PORT_PHY_QCFG_RESP_WIRESPEED_ON (0x1UL << 0) 1731 + #define PORT_PHY_QCFG_RESP_WIRESPEED_OFF 0x0UL 1732 + #define PORT_PHY_QCFG_RESP_WIRESPEED_ON 0x1UL 1781 1733 u8 lpbk; 1782 - #define PORT_PHY_QCFG_RESP_LPBK_NONE (0x0UL << 0) 1783 - #define PORT_PHY_QCFG_RESP_LPBK_LOCAL (0x1UL << 0) 1784 - #define PORT_PHY_QCFG_RESP_LPBK_REMOTE (0x2UL << 0) 1734 + #define PORT_PHY_QCFG_RESP_LPBK_NONE 0x0UL 1735 + #define PORT_PHY_QCFG_RESP_LPBK_LOCAL 0x1UL 1736 + #define PORT_PHY_QCFG_RESP_LPBK_REMOTE 0x2UL 1785 1737 u8 force_pause; 1786 1738 #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_TX 0x1UL 1787 1739 #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_RX 0x2UL 1788 1740 u8 module_status; 1789 - #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NONE (0x0UL << 0) 1790 - #define PORT_PHY_QCFG_RESP_MODULE_STATUS_DISABLETX (0x1UL << 0) 1791 - #define PORT_PHY_QCFG_RESP_MODULE_STATUS_WARNINGMSG (0x2UL << 0) 1792 - #define PORT_PHY_QCFG_RESP_MODULE_STATUS_PWRDOWN (0x3UL << 0) 1793 - #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTINSERTED (0x4UL << 0) 1794 - #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE (0xffUL << 0) 1741 + #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NONE 0x0UL 1742 + #define PORT_PHY_QCFG_RESP_MODULE_STATUS_DISABLETX 0x1UL 1743 + #define PORT_PHY_QCFG_RESP_MODULE_STATUS_WARNINGMSG 0x2UL 1744 + #define PORT_PHY_QCFG_RESP_MODULE_STATUS_PWRDOWN 0x3UL 1745 + #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTINSERTED 0x4UL 1746 + #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE 0xffUL 1795 1747 __le32 preemphasis; 1796 1748 u8 phy_maj; 1797 1749 u8 phy_min; 1798 1750 u8 phy_bld; 1799 1751 u8 phy_type; 1800 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_UNKNOWN (0x0UL << 0) 1801 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASECR (0x1UL << 0) 1802 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR4 (0x2UL << 0) 1803 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASELR (0x3UL << 0) 1804 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASESR (0x4UL << 0) 1805 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR2 (0x5UL << 0) 1806 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKX (0x6UL << 0) 1807 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR (0x7UL << 0) 1808 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASET (0x8UL << 0) 1809 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASETE (0x9UL << 0) 1810 - #define PORT_PHY_QCFG_RESP_PHY_TYPE_SGMIIEXTPHY (0xaUL << 0) 1752 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_UNKNOWN 0x0UL 1753 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASECR 0x1UL 1754 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR4 0x2UL 1755 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASELR 0x3UL 1756 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASESR 0x4UL 1757 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR2 0x5UL 1758 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKX 0x6UL 1759 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR 0x7UL 1760 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASET 0x8UL 1761 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASETE 0x9UL 1762 + #define PORT_PHY_QCFG_RESP_PHY_TYPE_SGMIIEXTPHY 0xaUL 1811 1763 u8 media_type; 1812 - #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_UNKNOWN (0x0UL << 0) 1813 - #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP (0x1UL << 0) 1814 - #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC (0x2UL << 0) 1815 - #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE (0x3UL << 0) 1764 + #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_UNKNOWN 0x0UL 1765 + #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP 0x1UL 1766 + #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC 0x2UL 1767 + #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE 0x3UL 1816 1768 u8 xcvr_pkg_type; 1817 - #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_INTERNAL (0x1UL << 0) 1818 - #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_EXTERNAL (0x2UL << 0) 1769 + #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_INTERNAL 0x1UL 1770 + #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_EXTERNAL 0x2UL 1819 1771 u8 eee_config_phy_addr; 1820 1772 #define PORT_PHY_QCFG_RESP_PHY_ADDR_MASK 0x1fUL 1821 1773 #define PORT_PHY_QCFG_RESP_PHY_ADDR_SFT 0 ··· 1844 1796 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MBHD 0x1000UL 1845 1797 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MB 0x2000UL 1846 1798 u8 link_partner_adv_auto_mode; 1847 - #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_NONE (0x0UL << 0) 1848 - #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ALL_SPEEDS (0x1UL << 0) 1849 - #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_SPEED (0x2UL << 0) 1850 - #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_OR_BELOW (0x3UL << 0) 1851 - #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK (0x4UL << 0) 1799 + #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_NONE 0x0UL 1800 + #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ALL_SPEEDS 0x1UL 1801 + #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_SPEED 0x2UL 1802 + #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_OR_BELOW 0x3UL 1803 + #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK 0x4UL 1852 1804 u8 link_partner_adv_pause; 1853 1805 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_TX 0x1UL 1854 1806 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_RX 0x2UL ··· 1907 1859 __le64 resp_addr; 1908 1860 __le32 flags; 1909 1861 #define PORT_MAC_CFG_REQ_FLAGS_MATCH_LINK 0x1UL 1910 - #define PORT_MAC_CFG_REQ_FLAGS_COS_ASSIGNMENT_ENABLE 0x2UL 1862 + #define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_ENABLE 0x2UL 1911 1863 #define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_ENABLE 0x4UL 1912 1864 #define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_ENABLE 0x8UL 1913 1865 #define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_ENABLE 0x10UL ··· 1916 1868 #define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_DISABLE 0x80UL 1917 1869 #define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_ENABLE 0x100UL 1918 1870 #define PORT_MAC_CFG_REQ_FLAGS_OOB_WOL_DISABLE 0x200UL 1871 + #define PORT_MAC_CFG_REQ_FLAGS_VLAN_PRI2COS_DISABLE 0x400UL 1872 + #define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_DISABLE 0x800UL 1873 + #define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_DISABLE 0x1000UL 1919 1874 __le32 enables; 1920 1875 #define PORT_MAC_CFG_REQ_ENABLES_IPG 0x1UL 1921 1876 #define PORT_MAC_CFG_REQ_ENABLES_LPBK 0x2UL 1922 - #define PORT_MAC_CFG_REQ_ENABLES_IVLAN_PRI2COS_MAP_PRI 0x4UL 1923 - #define PORT_MAC_CFG_REQ_ENABLES_LCOS_MAP_PRI 0x8UL 1877 + #define PORT_MAC_CFG_REQ_ENABLES_VLAN_PRI2COS_MAP_PRI 0x4UL 1878 + #define PORT_MAC_CFG_REQ_ENABLES_RESERVED1 0x8UL 1924 1879 #define PORT_MAC_CFG_REQ_ENABLES_TUNNEL_PRI2COS_MAP_PRI 0x10UL 1925 1880 #define PORT_MAC_CFG_REQ_ENABLES_DSCP2COS_MAP_PRI 0x20UL 1926 1881 #define PORT_MAC_CFG_REQ_ENABLES_RX_TS_CAPTURE_PTP_MSG_TYPE 0x40UL 1927 1882 #define PORT_MAC_CFG_REQ_ENABLES_TX_TS_CAPTURE_PTP_MSG_TYPE 0x80UL 1883 + #define PORT_MAC_CFG_REQ_ENABLES_COS_FIELD_CFG 0x100UL 1928 1884 __le16 port_id; 1929 1885 u8 ipg; 1930 1886 u8 lpbk; 1931 - #define PORT_MAC_CFG_REQ_LPBK_NONE (0x0UL << 0) 1932 - #define PORT_MAC_CFG_REQ_LPBK_LOCAL (0x1UL << 0) 1933 - #define PORT_MAC_CFG_REQ_LPBK_REMOTE (0x2UL << 0) 1934 - u8 ivlan_pri2cos_map_pri; 1935 - u8 lcos_map_pri; 1887 + #define PORT_MAC_CFG_REQ_LPBK_NONE 0x0UL 1888 + #define PORT_MAC_CFG_REQ_LPBK_LOCAL 0x1UL 1889 + #define PORT_MAC_CFG_REQ_LPBK_REMOTE 0x2UL 1890 + u8 vlan_pri2cos_map_pri; 1891 + u8 reserved1; 1936 1892 u8 tunnel_pri2cos_map_pri; 1937 1893 u8 dscp2pri_map_pri; 1938 1894 __le16 rx_ts_capture_ptp_msg_type; 1939 1895 __le16 tx_ts_capture_ptp_msg_type; 1940 - __le32 unused_0; 1896 + u8 cos_field_cfg; 1897 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_RSVD1 0x1UL 1898 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_MASK 0x6UL 1899 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_SFT 1 1900 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_INNERMOST (0x0UL << 1) 1901 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTER (0x1UL << 1) 1902 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_OUTERMOST (0x2UL << 1) 1903 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED (0x3UL << 1) 1904 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_LAST PORT_MAC_CFG_REQ_COS_FIELD_CFG_VLAN_PRI_SEL_UNSPECIFIED 1905 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_MASK 0x18UL 1906 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_SFT 3 1907 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_INNERMOST (0x0UL << 3) 1908 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTER (0x1UL << 3) 1909 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_OUTERMOST (0x2UL << 3) 1910 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_T_VLAN_PRI_SEL_UNSPECIFIED (0x3UL << 3) 1911 + #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 1912 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_MASK 0xe0UL 1913 + #define PORT_MAC_CFG_REQ_COS_FIELD_CFG_DEFAULT_COS_SFT 5 1914 + u8 unused_0[3]; 1941 1915 }; 1942 1916 1943 1917 /* Output (16 bytes) */ ··· 1972 1902 __le16 mtu; 1973 1903 u8 ipg; 1974 1904 u8 lpbk; 1975 - #define PORT_MAC_CFG_RESP_LPBK_NONE (0x0UL << 0) 1976 - #define PORT_MAC_CFG_RESP_LPBK_LOCAL (0x1UL << 0) 1977 - #define PORT_MAC_CFG_RESP_LPBK_REMOTE (0x2UL << 0) 1905 + #define PORT_MAC_CFG_RESP_LPBK_NONE 0x0UL 1906 + #define PORT_MAC_CFG_RESP_LPBK_LOCAL 0x1UL 1907 + #define PORT_MAC_CFG_RESP_LPBK_REMOTE 0x2UL 1978 1908 u8 unused_0; 1979 1909 u8 valid; 1980 1910 }; ··· 2233 2163 __le64 resp_addr; 2234 2164 __le32 flags; 2235 2165 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH 0x1UL 2236 - #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 2237 - #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 2166 + #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_TX 0x0UL 2167 + #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX 0x1UL 2238 2168 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_LAST QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX 2239 2169 __le16 port_id; 2240 2170 __le16 unused_0; ··· 2249 2179 u8 max_configurable_queues; 2250 2180 u8 max_configurable_lossless_queues; 2251 2181 u8 queue_cfg_allowed; 2252 - u8 queue_buffers_cfg_allowed; 2182 + u8 queue_cfg_info; 2183 + #define QUEUE_QPORTCFG_RESP_QUEUE_CFG_INFO_ASYM_CFG 0x1UL 2253 2184 u8 queue_pfcenable_cfg_allowed; 2254 2185 u8 queue_pri2cos_cfg_allowed; 2255 2186 u8 queue_cos2bw_cfg_allowed; 2256 2187 u8 queue_id0; 2257 2188 u8 queue_id0_service_profile; 2258 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSY (0x0UL << 0) 2259 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS (0x1UL << 0) 2260 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_UNKNOWN (0xffUL << 0) 2189 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSY 0x0UL 2190 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_LOSSLESS 0x1UL 2191 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID0_SERVICE_PROFILE_UNKNOWN 0xffUL 2261 2192 u8 queue_id1; 2262 2193 u8 queue_id1_service_profile; 2263 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSY (0x0UL << 0) 2264 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS (0x1UL << 0) 2265 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_UNKNOWN (0xffUL << 0) 2194 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSY 0x0UL 2195 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_LOSSLESS 0x1UL 2196 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID1_SERVICE_PROFILE_UNKNOWN 0xffUL 2266 2197 u8 queue_id2; 2267 2198 u8 queue_id2_service_profile; 2268 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSY (0x0UL << 0) 2269 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS (0x1UL << 0) 2270 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN (0xffUL << 0) 2199 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSY 0x0UL 2200 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_LOSSLESS 0x1UL 2201 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID2_SERVICE_PROFILE_UNKNOWN 0xffUL 2271 2202 u8 queue_id3; 2272 2203 u8 queue_id3_service_profile; 2273 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSY (0x0UL << 0) 2274 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS (0x1UL << 0) 2275 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN (0xffUL << 0) 2204 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSY 0x0UL 2205 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_LOSSLESS 0x1UL 2206 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID3_SERVICE_PROFILE_UNKNOWN 0xffUL 2276 2207 u8 queue_id4; 2277 2208 u8 queue_id4_service_profile; 2278 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSY (0x0UL << 0) 2279 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS (0x1UL << 0) 2280 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN (0xffUL << 0) 2209 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSY 0x0UL 2210 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_LOSSLESS 0x1UL 2211 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID4_SERVICE_PROFILE_UNKNOWN 0xffUL 2281 2212 u8 queue_id5; 2282 2213 u8 queue_id5_service_profile; 2283 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSY (0x0UL << 0) 2284 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS (0x1UL << 0) 2285 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN (0xffUL << 0) 2214 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSY 0x0UL 2215 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_LOSSLESS 0x1UL 2216 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID5_SERVICE_PROFILE_UNKNOWN 0xffUL 2286 2217 u8 queue_id6; 2287 2218 u8 queue_id6_service_profile; 2288 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSY (0x0UL << 0) 2289 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS (0x1UL << 0) 2290 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN (0xffUL << 0) 2219 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSY 0x0UL 2220 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_LOSSLESS 0x1UL 2221 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID6_SERVICE_PROFILE_UNKNOWN 0xffUL 2291 2222 u8 queue_id7; 2292 2223 u8 queue_id7_service_profile; 2293 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSY (0x0UL << 0) 2294 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS (0x1UL << 0) 2295 - #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN (0xffUL << 0) 2224 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSY 0x0UL 2225 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_LOSSLESS 0x1UL 2226 + #define QUEUE_QPORTCFG_RESP_QUEUE_ID7_SERVICE_PROFILE_UNKNOWN 0xffUL 2296 2227 u8 valid; 2297 2228 }; 2298 2229 ··· 2306 2235 __le16 target_id; 2307 2236 __le64 resp_addr; 2308 2237 __le32 flags; 2309 - #define QUEUE_CFG_REQ_FLAGS_PATH 0x1UL 2310 - #define QUEUE_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 2311 - #define QUEUE_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 2312 - #define QUEUE_CFG_REQ_FLAGS_PATH_LAST QUEUE_CFG_REQ_FLAGS_PATH_RX 2238 + #define QUEUE_CFG_REQ_FLAGS_PATH_MASK 0x3UL 2239 + #define QUEUE_CFG_REQ_FLAGS_PATH_SFT 0 2240 + #define QUEUE_CFG_REQ_FLAGS_PATH_TX 0x0UL 2241 + #define QUEUE_CFG_REQ_FLAGS_PATH_RX 0x1UL 2242 + #define QUEUE_CFG_REQ_FLAGS_PATH_BIDIR 0x2UL 2243 + #define QUEUE_CFG_REQ_FLAGS_PATH_LAST QUEUE_CFG_REQ_FLAGS_PATH_BIDIR 2313 2244 __le32 enables; 2314 2245 #define QUEUE_CFG_REQ_ENABLES_DFLT_LEN 0x1UL 2315 2246 #define QUEUE_CFG_REQ_ENABLES_SERVICE_PROFILE 0x2UL 2316 2247 __le32 queue_id; 2317 2248 __le32 dflt_len; 2318 2249 u8 service_profile; 2319 - #define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSY (0x0UL << 0) 2320 - #define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSLESS (0x1UL << 0) 2321 - #define QUEUE_CFG_REQ_SERVICE_PROFILE_UNKNOWN (0xffUL << 0) 2250 + #define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSY 0x0UL 2251 + #define QUEUE_CFG_REQ_SERVICE_PROFILE_LOSSLESS 0x1UL 2252 + #define QUEUE_CFG_REQ_SERVICE_PROFILE_UNKNOWN 0xffUL 2322 2253 u8 unused_0[7]; 2323 2254 }; 2324 2255 2325 2256 /* Output (16 bytes) */ 2326 2257 struct hwrm_queue_cfg_output { 2327 - __le16 error_code; 2328 - __le16 req_type; 2329 - __le16 seq_id; 2330 - __le16 resp_len; 2331 - __le32 unused_0; 2332 - u8 unused_1; 2333 - u8 unused_2; 2334 - u8 unused_3; 2335 - u8 valid; 2336 - }; 2337 - 2338 - /* hwrm_queue_buffers_cfg */ 2339 - /* Input (56 bytes) */ 2340 - struct hwrm_queue_buffers_cfg_input { 2341 - __le16 req_type; 2342 - __le16 cmpl_ring; 2343 - __le16 seq_id; 2344 - __le16 target_id; 2345 - __le64 resp_addr; 2346 - __le32 flags; 2347 - #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH 0x1UL 2348 - #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 2349 - #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 2350 - #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH_LAST QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH_RX 2351 - __le32 enables; 2352 - #define QUEUE_BUFFERS_CFG_REQ_ENABLES_RESERVED 0x1UL 2353 - #define QUEUE_BUFFERS_CFG_REQ_ENABLES_SHARED 0x2UL 2354 - #define QUEUE_BUFFERS_CFG_REQ_ENABLES_XOFF 0x4UL 2355 - #define QUEUE_BUFFERS_CFG_REQ_ENABLES_XON 0x8UL 2356 - #define QUEUE_BUFFERS_CFG_REQ_ENABLES_FULL 0x10UL 2357 - #define QUEUE_BUFFERS_CFG_REQ_ENABLES_NOTFULL 0x20UL 2358 - #define QUEUE_BUFFERS_CFG_REQ_ENABLES_MAX 0x40UL 2359 - __le32 queue_id; 2360 - __le32 reserved; 2361 - __le32 shared; 2362 - __le32 xoff; 2363 - __le32 xon; 2364 - __le32 full; 2365 - __le32 notfull; 2366 - __le32 max; 2367 - }; 2368 - 2369 - /* Output (16 bytes) */ 2370 - struct hwrm_queue_buffers_cfg_output { 2371 2258 __le16 error_code; 2372 2259 __le16 req_type; 2373 2260 __le16 seq_id; ··· 2380 2351 __le16 target_id; 2381 2352 __le64 resp_addr; 2382 2353 __le32 flags; 2383 - #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH 0x1UL 2354 + #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_MASK 0x3UL 2355 + #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_SFT 0 2384 2356 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 2385 2357 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 2386 - #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_LAST QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_RX 2387 - #define QUEUE_PRI2COS_CFG_REQ_FLAGS_IVLAN 0x2UL 2358 + #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR (0x2UL << 0) 2359 + #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_LAST QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_BIDIR 2360 + #define QUEUE_PRI2COS_CFG_REQ_FLAGS_IVLAN 0x4UL 2388 2361 __le32 enables; 2362 + #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI0_COS_QUEUE_ID 0x1UL 2363 + #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI1_COS_QUEUE_ID 0x2UL 2364 + #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI2_COS_QUEUE_ID 0x4UL 2365 + #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI3_COS_QUEUE_ID 0x8UL 2366 + #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI4_COS_QUEUE_ID 0x10UL 2367 + #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI5_COS_QUEUE_ID 0x20UL 2368 + #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI6_COS_QUEUE_ID 0x40UL 2369 + #define QUEUE_PRI2COS_CFG_REQ_ENABLES_PRI7_COS_QUEUE_ID 0x80UL 2389 2370 u8 port_id; 2390 2371 u8 pri0_cos_queue_id; 2391 2372 u8 pri1_cos_queue_id; ··· 2443 2404 u8 queue_id0; 2444 2405 u8 unused_0; 2445 2406 __le32 queue_id0_min_bw; 2407 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2408 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_SFT 0 2409 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_RSVD 0x10000000UL 2410 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2411 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_SFT 29 2412 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2413 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2414 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2415 + #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 2446 2416 __le32 queue_id0_max_bw; 2417 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2418 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_SFT 0 2419 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_RSVD 0x10000000UL 2420 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2421 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_SFT 29 2422 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2423 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2424 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2425 + #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 2447 2426 u8 queue_id0_tsa_assign; 2448 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_SP (0x0UL << 0) 2449 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_ETS (0x1UL << 0) 2450 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST (0x2UL << 0) 2451 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST (0xffUL << 0) 2427 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_SP 0x0UL 2428 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_ETS 0x1UL 2429 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2430 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID0_TSA_ASSIGN_RESERVED_LAST 0xffUL 2452 2431 u8 queue_id0_pri_lvl; 2453 2432 u8 queue_id0_bw_weight; 2454 2433 u8 queue_id1; 2455 2434 __le32 queue_id1_min_bw; 2435 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2436 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_SFT 0 2437 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_RSVD 0x10000000UL 2438 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2439 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_SFT 29 2440 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2441 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2442 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2443 + #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 2456 2444 __le32 queue_id1_max_bw; 2445 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2446 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_SFT 0 2447 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_RSVD 0x10000000UL 2448 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2449 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_SFT 29 2450 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2451 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2452 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2453 + #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 2457 2454 u8 queue_id1_tsa_assign; 2458 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_SP (0x0UL << 0) 2459 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_ETS (0x1UL << 0) 2460 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_FIRST (0x2UL << 0) 2461 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_LAST (0xffUL << 0) 2455 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_SP 0x0UL 2456 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_ETS 0x1UL 2457 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2458 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID1_TSA_ASSIGN_RESERVED_LAST 0xffUL 2462 2459 u8 queue_id1_pri_lvl; 2463 2460 u8 queue_id1_bw_weight; 2464 2461 u8 queue_id2; 2465 2462 __le32 queue_id2_min_bw; 2463 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2464 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_SFT 0 2465 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_RSVD 0x10000000UL 2466 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2467 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_SFT 29 2468 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2469 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2470 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2471 + #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 2466 2472 __le32 queue_id2_max_bw; 2473 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2474 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_SFT 0 2475 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_RSVD 0x10000000UL 2476 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2477 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_SFT 29 2478 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2479 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2480 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2481 + #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 2467 2482 u8 queue_id2_tsa_assign; 2468 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_SP (0x0UL << 0) 2469 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_ETS (0x1UL << 0) 2470 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_FIRST (0x2UL << 0) 2471 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_LAST (0xffUL << 0) 2483 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_SP 0x0UL 2484 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_ETS 0x1UL 2485 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2486 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID2_TSA_ASSIGN_RESERVED_LAST 0xffUL 2472 2487 u8 queue_id2_pri_lvl; 2473 2488 u8 queue_id2_bw_weight; 2474 2489 u8 queue_id3; 2475 2490 __le32 queue_id3_min_bw; 2491 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2492 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_SFT 0 2493 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_RSVD 0x10000000UL 2494 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2495 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_SFT 29 2496 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2497 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2498 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2499 + #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 2476 2500 __le32 queue_id3_max_bw; 2501 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2502 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_SFT 0 2503 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_RSVD 0x10000000UL 2504 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2505 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_SFT 29 2506 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2507 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2508 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2509 + #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 2477 2510 u8 queue_id3_tsa_assign; 2478 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_SP (0x0UL << 0) 2479 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_ETS (0x1UL << 0) 2480 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_FIRST (0x2UL << 0) 2481 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_LAST (0xffUL << 0) 2511 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_SP 0x0UL 2512 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_ETS 0x1UL 2513 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2514 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID3_TSA_ASSIGN_RESERVED_LAST 0xffUL 2482 2515 u8 queue_id3_pri_lvl; 2483 2516 u8 queue_id3_bw_weight; 2484 2517 u8 queue_id4; 2485 2518 __le32 queue_id4_min_bw; 2519 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2520 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_SFT 0 2521 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_RSVD 0x10000000UL 2522 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2523 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_SFT 29 2524 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2525 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2526 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2527 + #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 2486 2528 __le32 queue_id4_max_bw; 2529 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2530 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_SFT 0 2531 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_RSVD 0x10000000UL 2532 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2533 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_SFT 29 2534 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2535 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2536 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2537 + #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 2487 2538 u8 queue_id4_tsa_assign; 2488 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_SP (0x0UL << 0) 2489 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_ETS (0x1UL << 0) 2490 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_FIRST (0x2UL << 0) 2491 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_LAST (0xffUL << 0) 2539 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_SP 0x0UL 2540 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_ETS 0x1UL 2541 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2542 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID4_TSA_ASSIGN_RESERVED_LAST 0xffUL 2492 2543 u8 queue_id4_pri_lvl; 2493 2544 u8 queue_id4_bw_weight; 2494 2545 u8 queue_id5; 2495 2546 __le32 queue_id5_min_bw; 2547 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2548 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_SFT 0 2549 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_RSVD 0x10000000UL 2550 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2551 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_SFT 29 2552 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2553 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2554 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2555 + #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 2496 2556 __le32 queue_id5_max_bw; 2557 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2558 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_SFT 0 2559 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_RSVD 0x10000000UL 2560 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2561 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_SFT 29 2562 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2563 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2564 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2565 + #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 2497 2566 u8 queue_id5_tsa_assign; 2498 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_SP (0x0UL << 0) 2499 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_ETS (0x1UL << 0) 2500 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_FIRST (0x2UL << 0) 2501 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_LAST (0xffUL << 0) 2567 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_SP 0x0UL 2568 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_ETS 0x1UL 2569 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2570 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID5_TSA_ASSIGN_RESERVED_LAST 0xffUL 2502 2571 u8 queue_id5_pri_lvl; 2503 2572 u8 queue_id5_bw_weight; 2504 2573 u8 queue_id6; 2505 2574 __le32 queue_id6_min_bw; 2575 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2576 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_SFT 0 2577 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_RSVD 0x10000000UL 2578 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2579 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_SFT 29 2580 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2581 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2582 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2583 + #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 2506 2584 __le32 queue_id6_max_bw; 2585 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2586 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_SFT 0 2587 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_RSVD 0x10000000UL 2588 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2589 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_SFT 29 2590 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2591 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2592 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2593 + #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 2507 2594 u8 queue_id6_tsa_assign; 2508 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_SP (0x0UL << 0) 2509 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_ETS (0x1UL << 0) 2510 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_FIRST (0x2UL << 0) 2511 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_LAST (0xffUL << 0) 2595 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_SP 0x0UL 2596 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_ETS 0x1UL 2597 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2598 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID6_TSA_ASSIGN_RESERVED_LAST 0xffUL 2512 2599 u8 queue_id6_pri_lvl; 2513 2600 u8 queue_id6_bw_weight; 2514 2601 u8 queue_id7; 2515 2602 __le32 queue_id7_min_bw; 2603 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_MASK 0xfffffffUL 2604 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_SFT 0 2605 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_RSVD 0x10000000UL 2606 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2607 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_SFT 29 2608 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2609 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2610 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MIN_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2611 + #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 2516 2612 __le32 queue_id7_max_bw; 2613 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2614 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_SFT 0 2615 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_RSVD 0x10000000UL 2616 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2617 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_SFT 29 2618 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2619 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2620 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2621 + #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 2517 2622 u8 queue_id7_tsa_assign; 2518 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_SP (0x0UL << 0) 2519 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_ETS (0x1UL << 0) 2520 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_FIRST (0x2UL << 0) 2521 - #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_LAST (0xffUL << 0) 2623 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_SP 0x0UL 2624 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_ETS 0x1UL 2625 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_FIRST 0x2UL 2626 + #define QUEUE_COS2BW_CFG_REQ_QUEUE_ID7_TSA_ASSIGN_RESERVED_LAST 0xffUL 2522 2627 u8 queue_id7_pri_lvl; 2523 2628 u8 queue_id7_bw_weight; 2524 2629 u8 unused_1[5]; ··· 2746 2563 #define VNIC_CFG_REQ_FLAGS_BD_STALL_MODE 0x4UL 2747 2564 #define VNIC_CFG_REQ_FLAGS_ROCE_DUAL_VNIC_MODE 0x8UL 2748 2565 #define VNIC_CFG_REQ_FLAGS_ROCE_ONLY_VNIC_MODE 0x10UL 2566 + #define VNIC_CFG_REQ_FLAGS_RSS_DFLT_CR_MODE 0x20UL 2749 2567 __le32 enables; 2750 2568 #define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP 0x1UL 2751 2569 #define VNIC_CFG_REQ_ENABLES_RSS_RULE 0x2UL ··· 2799 2615 #define VNIC_TPA_CFG_REQ_ENABLES_MIN_AGG_LEN 0x8UL 2800 2616 __le16 vnic_id; 2801 2617 __le16 max_agg_segs; 2802 - #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_1 (0x0UL << 0) 2803 - #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_2 (0x1UL << 0) 2804 - #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_4 (0x2UL << 0) 2805 - #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_8 (0x3UL << 0) 2806 - #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_MAX (0x1fUL << 0) 2618 + #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_1 0x0UL 2619 + #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_2 0x1UL 2620 + #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_4 0x2UL 2621 + #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_8 0x3UL 2622 + #define VNIC_TPA_CFG_REQ_MAX_AGG_SEGS_MAX 0x1fUL 2807 2623 __le16 max_aggs; 2808 - #define VNIC_TPA_CFG_REQ_MAX_AGGS_1 (0x0UL << 0) 2809 - #define VNIC_TPA_CFG_REQ_MAX_AGGS_2 (0x1UL << 0) 2810 - #define VNIC_TPA_CFG_REQ_MAX_AGGS_4 (0x2UL << 0) 2811 - #define VNIC_TPA_CFG_REQ_MAX_AGGS_8 (0x3UL << 0) 2812 - #define VNIC_TPA_CFG_REQ_MAX_AGGS_16 (0x4UL << 0) 2813 - #define VNIC_TPA_CFG_REQ_MAX_AGGS_MAX (0x7UL << 0) 2624 + #define VNIC_TPA_CFG_REQ_MAX_AGGS_1 0x0UL 2625 + #define VNIC_TPA_CFG_REQ_MAX_AGGS_2 0x1UL 2626 + #define VNIC_TPA_CFG_REQ_MAX_AGGS_4 0x2UL 2627 + #define VNIC_TPA_CFG_REQ_MAX_AGGS_8 0x3UL 2628 + #define VNIC_TPA_CFG_REQ_MAX_AGGS_16 0x4UL 2629 + #define VNIC_TPA_CFG_REQ_MAX_AGGS_MAX 0x7UL 2814 2630 u8 unused_0; 2815 2631 u8 unused_1; 2816 2632 __le32 max_agg_timer; ··· 2964 2780 __le64 resp_addr; 2965 2781 __le32 enables; 2966 2782 #define RING_ALLOC_REQ_ENABLES_RESERVED1 0x1UL 2967 - #define RING_ALLOC_REQ_ENABLES_RESERVED2 0x2UL 2783 + #define RING_ALLOC_REQ_ENABLES_RING_ARB_CFG 0x2UL 2968 2784 #define RING_ALLOC_REQ_ENABLES_RESERVED3 0x4UL 2969 2785 #define RING_ALLOC_REQ_ENABLES_STAT_CTX_ID_VALID 0x8UL 2970 2786 #define RING_ALLOC_REQ_ENABLES_RESERVED4 0x10UL 2971 2787 #define RING_ALLOC_REQ_ENABLES_MAX_BW_VALID 0x20UL 2972 2788 u8 ring_type; 2973 - #define RING_ALLOC_REQ_RING_TYPE_CMPL (0x0UL << 0) 2974 - #define RING_ALLOC_REQ_RING_TYPE_TX (0x1UL << 0) 2975 - #define RING_ALLOC_REQ_RING_TYPE_RX (0x2UL << 0) 2789 + #define RING_ALLOC_REQ_RING_TYPE_CMPL 0x0UL 2790 + #define RING_ALLOC_REQ_RING_TYPE_TX 0x1UL 2791 + #define RING_ALLOC_REQ_RING_TYPE_RX 0x2UL 2976 2792 u8 unused_0; 2977 2793 __le16 unused_1; 2978 2794 __le64 page_tbl_addr; ··· 2988 2804 u8 unused_4; 2989 2805 u8 unused_5; 2990 2806 __le32 reserved1; 2991 - __le16 reserved2; 2807 + __le16 ring_arb_cfg; 2808 + #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_MASK 0xfUL 2809 + #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SFT 0 2810 + #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_SP (0x1UL << 0) 2811 + #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ (0x2UL << 0) 2812 + #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_LAST RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_WFQ 2813 + #define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_MASK 0xf0UL 2814 + #define RING_ALLOC_REQ_RING_ARB_CFG_RSVD_SFT 4 2815 + #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_MASK 0xff00UL 2816 + #define RING_ALLOC_REQ_RING_ARB_CFG_ARB_POLICY_PARAM_SFT 8 2992 2817 u8 unused_6; 2993 2818 u8 unused_7; 2994 2819 __le32 reserved3; 2995 2820 __le32 stat_ctx_id; 2996 2821 __le32 reserved4; 2997 2822 __le32 max_bw; 2823 + #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_MASK 0xfffffffUL 2824 + #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_SFT 0 2825 + #define RING_ALLOC_REQ_MAX_BW_RSVD 0x10000000UL 2826 + #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MASK 0xe0000000UL 2827 + #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_SFT 29 2828 + #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_MBPS (0x0UL << 29) 2829 + #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_PERCENT1_100 (0x1UL << 29) 2830 + #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID (0x7UL << 29) 2831 + #define RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_LAST RING_ALLOC_REQ_MAX_BW_BW_VALUE_UNIT_INVALID 2998 2832 u8 int_mode; 2999 - #define RING_ALLOC_REQ_INT_MODE_LEGACY (0x0UL << 0) 3000 - #define RING_ALLOC_REQ_INT_MODE_RSVD (0x1UL << 0) 3001 - #define RING_ALLOC_REQ_INT_MODE_MSIX (0x2UL << 0) 3002 - #define RING_ALLOC_REQ_INT_MODE_POLL (0x3UL << 0) 2833 + #define RING_ALLOC_REQ_INT_MODE_LEGACY 0x0UL 2834 + #define RING_ALLOC_REQ_INT_MODE_RSVD 0x1UL 2835 + #define RING_ALLOC_REQ_INT_MODE_MSIX 0x2UL 2836 + #define RING_ALLOC_REQ_INT_MODE_POLL 0x3UL 3003 2837 u8 unused_8[3]; 3004 2838 }; 3005 2839 ··· 3044 2842 __le16 target_id; 3045 2843 __le64 resp_addr; 3046 2844 u8 ring_type; 3047 - #define RING_FREE_REQ_RING_TYPE_CMPL (0x0UL << 0) 3048 - #define RING_FREE_REQ_RING_TYPE_TX (0x1UL << 0) 3049 - #define RING_FREE_REQ_RING_TYPE_RX (0x2UL << 0) 2845 + #define RING_FREE_REQ_RING_TYPE_CMPL 0x0UL 2846 + #define RING_FREE_REQ_RING_TYPE_TX 0x1UL 2847 + #define RING_FREE_REQ_RING_TYPE_RX 0x2UL 3050 2848 u8 unused_0; 3051 2849 __le16 ring_id; 3052 2850 __le32 unused_1; ··· 3144 2942 __le16 target_id; 3145 2943 __le64 resp_addr; 3146 2944 u8 ring_type; 3147 - #define RING_RESET_REQ_RING_TYPE_CMPL (0x0UL << 0) 3148 - #define RING_RESET_REQ_RING_TYPE_TX (0x1UL << 0) 3149 - #define RING_RESET_REQ_RING_TYPE_RX (0x2UL << 0) 2945 + #define RING_RESET_REQ_RING_TYPE_CMPL 0x0UL 2946 + #define RING_RESET_REQ_RING_TYPE_TX 0x1UL 2947 + #define RING_RESET_REQ_RING_TYPE_RX 0x2UL 3150 2948 u8 unused_0; 3151 2949 __le16 ring_id; 3152 2950 __le32 unused_1; ··· 3270 3068 __le16 t_l2_ivlan; 3271 3069 __le16 t_l2_ivlan_mask; 3272 3070 u8 src_type; 3273 - #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_NPORT (0x0UL << 0) 3274 - #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_PF (0x1UL << 0) 3275 - #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VF (0x2UL << 0) 3276 - #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VNIC (0x3UL << 0) 3277 - #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_KONG (0x4UL << 0) 3278 - #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_APE (0x5UL << 0) 3279 - #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_BONO (0x6UL << 0) 3280 - #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_TANG (0x7UL << 0) 3071 + #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_NPORT 0x0UL 3072 + #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_PF 0x1UL 3073 + #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VF 0x2UL 3074 + #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_VNIC 0x3UL 3075 + #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_KONG 0x4UL 3076 + #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_APE 0x5UL 3077 + #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_BONO 0x6UL 3078 + #define CFA_L2_FILTER_ALLOC_REQ_SRC_TYPE_TANG 0x7UL 3281 3079 u8 unused_6; 3282 3080 __le32 src_id; 3283 3081 u8 tunnel_type; 3284 - #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL (0x0UL << 0) 3285 - #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN (0x1UL << 0) 3286 - #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE (0x2UL << 0) 3287 - #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE (0x3UL << 0) 3288 - #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP (0x4UL << 0) 3289 - #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE (0x5UL << 0) 3290 - #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS (0x6UL << 0) 3291 - #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT (0x7UL << 0) 3292 - #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE (0x8UL << 0) 3293 - #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL (0xffUL << 0) 3082 + #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL 3083 + #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3084 + #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE 0x2UL 3085 + #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE 0x3UL 3086 + #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP 0x4UL 3087 + #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3088 + #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS 0x6UL 3089 + #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT 0x7UL 3090 + #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE 0x8UL 3091 + #define CFA_L2_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL 3294 3092 u8 unused_7; 3295 3093 __le16 dst_id; 3296 3094 __le16 mirror_vnic_id; 3297 3095 u8 pri_hint; 3298 - #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER (0x0UL << 0) 3299 - #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_ABOVE_FILTER (0x1UL << 0) 3300 - #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_BELOW_FILTER (0x2UL << 0) 3301 - #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MAX (0x3UL << 0) 3302 - #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MIN (0x4UL << 0) 3096 + #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER 0x0UL 3097 + #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_ABOVE_FILTER 0x1UL 3098 + #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_BELOW_FILTER 0x2UL 3099 + #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MAX 0x3UL 3100 + #define CFA_L2_FILTER_ALLOC_REQ_PRI_HINT_MIN 0x4UL 3303 3101 u8 unused_8; 3304 3102 __le32 unused_9; 3305 3103 __le64 l2_filter_id_hint; ··· 3448 3246 u8 l3_addr_type; 3449 3247 u8 t_l3_addr_type; 3450 3248 u8 tunnel_type; 3451 - #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL (0x0UL << 0) 3452 - #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN (0x1UL << 0) 3453 - #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE (0x2UL << 0) 3454 - #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE (0x3UL << 0) 3455 - #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP (0x4UL << 0) 3456 - #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE (0x5UL << 0) 3457 - #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS (0x6UL << 0) 3458 - #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT (0x7UL << 0) 3459 - #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE (0x8UL << 0) 3460 - #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL (0xffUL << 0) 3249 + #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL 3250 + #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3251 + #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE 0x2UL 3252 + #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE 0x3UL 3253 + #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP 0x4UL 3254 + #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3255 + #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS 0x6UL 3256 + #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT 0x7UL 3257 + #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE 0x8UL 3258 + #define CFA_TUNNEL_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL 3461 3259 u8 unused_0; 3462 3260 __le32 vni; 3463 3261 __le32 dst_vnic_id; ··· 3513 3311 __le32 flags; 3514 3312 #define CFA_ENCAP_RECORD_ALLOC_REQ_FLAGS_LOOPBACK 0x1UL 3515 3313 u8 encap_type; 3516 - #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN (0x1UL << 0) 3517 - #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_NVGRE (0x2UL << 0) 3518 - #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2GRE (0x3UL << 0) 3519 - #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPIP (0x4UL << 0) 3520 - #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_GENEVE (0x5UL << 0) 3521 - #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_MPLS (0x6UL << 0) 3522 - #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VLAN (0x7UL << 0) 3523 - #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE (0x8UL << 0) 3314 + #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VXLAN 0x1UL 3315 + #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_NVGRE 0x2UL 3316 + #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_L2GRE 0x3UL 3317 + #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPIP 0x4UL 3318 + #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_GENEVE 0x5UL 3319 + #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_MPLS 0x6UL 3320 + #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_VLAN 0x7UL 3321 + #define CFA_ENCAP_RECORD_ALLOC_REQ_ENCAP_TYPE_IPGRE 0x8UL 3524 3322 u8 unused_0; 3525 3323 __le16 unused_1; 3526 3324 __le32 encap_data[16]; ··· 3599 3397 u8 src_macaddr[6]; 3600 3398 __be16 ethertype; 3601 3399 u8 ip_addr_type; 3602 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN (0x0UL << 0) 3603 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV4 (0x4UL << 0) 3604 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6 (0x6UL << 0) 3400 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_UNKNOWN 0x0UL 3401 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV4 0x4UL 3402 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_ADDR_TYPE_IPV6 0x6UL 3605 3403 u8 ip_protocol; 3606 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN (0x0UL << 0) 3607 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP (0x6UL << 0) 3608 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP (0x11UL << 0) 3404 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UNKNOWN 0x0UL 3405 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_UDP 0x6UL 3406 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_IP_PROTOCOL_TCP 0x11UL 3609 3407 __le16 dst_id; 3610 3408 __le16 mirror_vnic_id; 3611 3409 u8 tunnel_type; 3612 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL (0x0UL << 0) 3613 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN (0x1UL << 0) 3614 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE (0x2UL << 0) 3615 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE (0x3UL << 0) 3616 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP (0x4UL << 0) 3617 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE (0x5UL << 0) 3618 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS (0x6UL << 0) 3619 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT (0x7UL << 0) 3620 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE (0x8UL << 0) 3621 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL (0xffUL << 0) 3410 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NONTUNNEL 0x0UL 3411 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3412 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_NVGRE 0x2UL 3413 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_L2GRE 0x3UL 3414 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPIP 0x4UL 3415 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3416 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_MPLS 0x6UL 3417 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_STT 0x7UL 3418 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_IPGRE 0x8UL 3419 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_TUNNEL_TYPE_ANYTUNNEL 0xffUL 3622 3420 u8 pri_hint; 3623 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER (0x0UL << 0) 3624 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_ABOVE (0x1UL << 0) 3625 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_BELOW (0x2UL << 0) 3626 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_HIGHEST (0x3UL << 0) 3627 - #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LOWEST (0x4UL << 0) 3421 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_NO_PREFER 0x0UL 3422 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_ABOVE 0x1UL 3423 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_BELOW 0x2UL 3424 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_HIGHEST 0x3UL 3425 + #define CFA_NTUPLE_FILTER_ALLOC_REQ_PRI_HINT_LOWEST 0x4UL 3628 3426 __be32 src_ipaddr[4]; 3629 3427 __be32 src_ipaddr_mask[4]; 3630 3428 __be32 dst_ipaddr[4]; ··· 3713 3511 __le16 target_id; 3714 3512 __le64 resp_addr; 3715 3513 u8 tunnel_type; 3716 - #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN (0x1UL << 0) 3717 - #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_GENEVE (0x5UL << 0) 3514 + #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3515 + #define TUNNEL_DST_PORT_QUERY_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3718 3516 u8 unused_0[7]; 3719 3517 }; 3720 3518 ··· 3741 3539 __le16 target_id; 3742 3540 __le64 resp_addr; 3743 3541 u8 tunnel_type; 3744 - #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN (0x1UL << 0) 3745 - #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_GENEVE (0x5UL << 0) 3542 + #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3543 + #define TUNNEL_DST_PORT_ALLOC_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3746 3544 u8 unused_0; 3747 3545 __be16 tunnel_dst_port_val; 3748 3546 __le32 unused_1; ··· 3772 3570 __le16 target_id; 3773 3571 __le64 resp_addr; 3774 3572 u8 tunnel_type; 3775 - #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN (0x1UL << 0) 3776 - #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE (0x5UL << 0) 3573 + #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_VXLAN 0x1UL 3574 + #define TUNNEL_DST_PORT_FREE_REQ_TUNNEL_TYPE_GENEVE 0x5UL 3777 3575 u8 unused_0; 3778 3576 __le16 tunnel_dst_port_id; 3779 3577 __le32 unused_1; ··· 3922 3720 __le16 target_id; 3923 3721 __le64 resp_addr; 3924 3722 u8 embedded_proc_type; 3925 - #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_BOOT (0x0UL << 0) 3926 - #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_MGMT (0x1UL << 0) 3927 - #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_NETCTRL (0x2UL << 0) 3928 - #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_ROCE (0x3UL << 0) 3929 - #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_RSVD (0x4UL << 0) 3723 + #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_BOOT 0x0UL 3724 + #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_MGMT 0x1UL 3725 + #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_NETCTRL 0x2UL 3726 + #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_ROCE 0x3UL 3727 + #define FW_RESET_REQ_EMBEDDED_PROC_TYPE_RSVD 0x4UL 3930 3728 u8 selfrst_status; 3931 - #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTNONE (0x0UL << 0) 3932 - #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTASAP (0x1UL << 0) 3933 - #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTPCIERST (0x2UL << 0) 3729 + #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTNONE 0x0UL 3730 + #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTASAP 0x1UL 3731 + #define FW_RESET_REQ_SELFRST_STATUS_SELFRSTPCIERST 0x2UL 3934 3732 __le16 unused_0[3]; 3935 3733 }; 3936 3734 ··· 3941 3739 __le16 seq_id; 3942 3740 __le16 resp_len; 3943 3741 u8 selfrst_status; 3944 - #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTNONE (0x0UL << 0) 3945 - #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTASAP (0x1UL << 0) 3946 - #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTPCIERST (0x2UL << 0) 3742 + #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTNONE 0x0UL 3743 + #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTASAP 0x1UL 3744 + #define FW_RESET_RESP_SELFRST_STATUS_SELFRSTPCIERST 0x2UL 3947 3745 u8 unused_0; 3948 3746 __le16 unused_1; 3949 3747 u8 unused_2; ··· 3961 3759 __le16 target_id; 3962 3760 __le64 resp_addr; 3963 3761 u8 embedded_proc_type; 3964 - #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_BOOT (0x0UL << 0) 3965 - #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_MGMT (0x1UL << 0) 3966 - #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_NETCTRL (0x2UL << 0) 3967 - #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_ROCE (0x3UL << 0) 3968 - #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_RSVD (0x4UL << 0) 3762 + #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_BOOT 0x0UL 3763 + #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_MGMT 0x1UL 3764 + #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_NETCTRL 0x2UL 3765 + #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_ROCE 0x3UL 3766 + #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_RSVD 0x4UL 3969 3767 u8 unused_0[7]; 3970 3768 }; 3971 3769 ··· 3976 3774 __le16 seq_id; 3977 3775 __le16 resp_len; 3978 3776 u8 selfrst_status; 3979 - #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTNONE (0x0UL << 0) 3980 - #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTASAP (0x1UL << 0) 3981 - #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPCIERST (0x2UL << 0) 3777 + #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTNONE 0x0UL 3778 + #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTASAP 0x1UL 3779 + #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPCIERST 0x2UL 3982 3780 u8 unused_0; 3983 3781 __le16 unused_1; 3984 3782 u8 unused_2; 3985 3783 u8 unused_3; 3986 3784 u8 unused_4; 3785 + u8 valid; 3786 + }; 3787 + 3788 + /* hwrm_fw_set_time */ 3789 + /* Input (32 bytes) */ 3790 + struct hwrm_fw_set_time_input { 3791 + __le16 req_type; 3792 + __le16 cmpl_ring; 3793 + __le16 seq_id; 3794 + __le16 target_id; 3795 + __le64 resp_addr; 3796 + __le16 year; 3797 + #define FW_SET_TIME_REQ_YEAR_UNKNOWN 0x0UL 3798 + u8 month; 3799 + u8 day; 3800 + u8 hour; 3801 + u8 minute; 3802 + u8 second; 3803 + u8 unused_0; 3804 + __le16 millisecond; 3805 + __le16 zone; 3806 + #define FW_SET_TIME_REQ_ZONE_UTC 0x0UL 3807 + #define FW_SET_TIME_REQ_ZONE_UNKNOWN 0xffffUL 3808 + __le32 unused_1; 3809 + }; 3810 + 3811 + /* Output (16 bytes) */ 3812 + struct hwrm_fw_set_time_output { 3813 + __le16 error_code; 3814 + __le16 req_type; 3815 + __le16 seq_id; 3816 + __le16 resp_len; 3817 + __le32 unused_0; 3818 + u8 unused_1; 3819 + u8 unused_2; 3820 + u8 unused_3; 3987 3821 u8 valid; 3988 3822 }; 3989 3823 ··· 4156 3918 u8 unused_2; 4157 3919 u8 unused_3; 4158 3920 u8 unused_4; 4159 - u8 valid; 4160 - }; 4161 - 4162 - /* hwrm_nvm_raw_write_blk */ 4163 - /* Input (32 bytes) */ 4164 - struct hwrm_nvm_raw_write_blk_input { 4165 - __le16 req_type; 4166 - __le16 cmpl_ring; 4167 - __le16 seq_id; 4168 - __le16 target_id; 4169 - __le64 resp_addr; 4170 - __le64 host_src_addr; 4171 - __le32 dest_addr; 4172 - __le32 len; 4173 - }; 4174 - 4175 - /* Output (16 bytes) */ 4176 - struct hwrm_nvm_raw_write_blk_output { 4177 - __le16 error_code; 4178 - __le16 req_type; 4179 - __le16 seq_id; 4180 - __le16 resp_len; 4181 - __le32 unused_0; 4182 - u8 unused_1; 4183 - u8 unused_2; 4184 - u8 unused_3; 4185 3921 u8 valid; 4186 3922 }; 4187 3923 ··· 4344 4132 u8 opt_ordinal; 4345 4133 #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_MASK 0x3UL 4346 4134 #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_SFT 0 4347 - #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_EQ (0x0UL << 0) 4348 - #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GE (0x1UL << 0) 4349 - #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GT (0x2UL << 0) 4135 + #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_EQ 0x0UL 4136 + #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GE 0x1UL 4137 + #define NVM_FIND_DIR_ENTRY_REQ_OPT_ORDINAL_GT 0x2UL 4350 4138 u8 unused_1[3]; 4351 4139 }; 4352 4140 ··· 4472 4260 __le16 seq_id; 4473 4261 __le16 resp_len; 4474 4262 __le32 unused_0; 4263 + u8 unused_1; 4264 + u8 unused_2; 4265 + u8 unused_3; 4266 + u8 valid; 4267 + }; 4268 + 4269 + /* hwrm_nvm_install_update */ 4270 + /* Input (24 bytes) */ 4271 + struct hwrm_nvm_install_update_input { 4272 + __le16 req_type; 4273 + __le16 cmpl_ring; 4274 + __le16 seq_id; 4275 + __le16 target_id; 4276 + __le64 resp_addr; 4277 + __le32 install_type; 4278 + #define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_NORMAL 0x0UL 4279 + #define NVM_INSTALL_UPDATE_REQ_INSTALL_TYPE_ALL 0xffffffffUL 4280 + __le32 unused_0; 4281 + }; 4282 + 4283 + /* Output (24 bytes) */ 4284 + struct hwrm_nvm_install_update_output { 4285 + __le16 error_code; 4286 + __le16 req_type; 4287 + __le16 seq_id; 4288 + __le16 resp_len; 4289 + __le64 installed_items; 4290 + u8 result; 4291 + #define NVM_INSTALL_UPDATE_RESP_RESULT_SUCCESS 0x0UL 4292 + u8 problem_item; 4293 + #define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_NONE 0x0UL 4294 + #define NVM_INSTALL_UPDATE_RESP_PROBLEM_ITEM_PACKAGE 0xffUL 4295 + u8 reset_required; 4296 + #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_NONE 0x0UL 4297 + #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_PCI 0x1UL 4298 + #define NVM_INSTALL_UPDATE_RESP_RESET_REQUIRED_POWER 0x2UL 4299 + u8 unused_0; 4475 4300 u8 unused_1; 4476 4301 u8 unused_2; 4477 4302 u8 unused_3;
+42 -42
drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
··· 19 19 #include "bnxt_ethtool.h" 20 20 21 21 #ifdef CONFIG_BNXT_SRIOV 22 + static int bnxt_hwrm_fwd_async_event_cmpl(struct bnxt *bp, 23 + struct bnxt_vf_info *vf, u16 event_id) 24 + { 25 + struct hwrm_fwd_async_event_cmpl_output *resp = bp->hwrm_cmd_resp_addr; 26 + struct hwrm_fwd_async_event_cmpl_input req = {0}; 27 + struct hwrm_async_event_cmpl *async_cmpl; 28 + int rc = 0; 29 + 30 + bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_FWD_ASYNC_EVENT_CMPL, -1, -1); 31 + if (vf) 32 + req.encap_async_event_target_id = cpu_to_le16(vf->fw_fid); 33 + else 34 + /* broadcast this async event to all VFs */ 35 + req.encap_async_event_target_id = cpu_to_le16(0xffff); 36 + async_cmpl = (struct hwrm_async_event_cmpl *)req.encap_async_event_cmpl; 37 + async_cmpl->type = 38 + cpu_to_le16(HWRM_ASYNC_EVENT_CMPL_TYPE_HWRM_ASYNC_EVENT); 39 + async_cmpl->event_id = cpu_to_le16(event_id); 40 + 41 + mutex_lock(&bp->hwrm_cmd_lock); 42 + rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); 43 + 44 + if (rc) { 45 + netdev_err(bp->dev, "hwrm_fwd_async_event_cmpl failed. rc:%d\n", 46 + rc); 47 + goto fwd_async_event_cmpl_exit; 48 + } 49 + 50 + if (resp->error_code) { 51 + netdev_err(bp->dev, "hwrm_fwd_async_event_cmpl error %d\n", 52 + resp->error_code); 53 + rc = -1; 54 + } 55 + 56 + fwd_async_event_cmpl_exit: 57 + mutex_unlock(&bp->hwrm_cmd_lock); 58 + return rc; 59 + } 60 + 22 61 static int bnxt_vf_ndo_prep(struct bnxt *bp, int vf_id) 23 62 { 24 63 if (!test_bit(BNXT_STATE_OPEN, &bp->state)) { ··· 282 243 rc = -EINVAL; 283 244 break; 284 245 } 285 - /* CHIMP TODO: send msg to VF to update new link state */ 286 - 246 + if (vf->flags & (BNXT_VF_LINK_UP | BNXT_VF_LINK_FORCED)) 247 + rc = bnxt_hwrm_fwd_async_event_cmpl(bp, vf, 248 + HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE); 287 249 return rc; 288 250 } 289 251 ··· 562 522 err_out1: 563 523 bnxt_free_vf_resources(bp); 564 524 565 - return rc; 566 - } 567 - 568 - static int bnxt_hwrm_fwd_async_event_cmpl(struct bnxt *bp, 569 - struct bnxt_vf_info *vf, 570 - u16 event_id) 571 - { 572 - int rc = 0; 573 - struct hwrm_fwd_async_event_cmpl_input req = {0}; 574 - struct hwrm_fwd_async_event_cmpl_output *resp = bp->hwrm_cmd_resp_addr; 575 - struct hwrm_async_event_cmpl *async_cmpl; 576 - 577 - bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_FWD_ASYNC_EVENT_CMPL, -1, -1); 578 - if (vf) 579 - req.encap_async_event_target_id = cpu_to_le16(vf->fw_fid); 580 - else 581 - /* broadcast this async event to all VFs */ 582 - req.encap_async_event_target_id = cpu_to_le16(0xffff); 583 - async_cmpl = (struct hwrm_async_event_cmpl *)req.encap_async_event_cmpl; 584 - async_cmpl->type = 585 - cpu_to_le16(HWRM_ASYNC_EVENT_CMPL_TYPE_HWRM_ASYNC_EVENT); 586 - async_cmpl->event_id = cpu_to_le16(event_id); 587 - 588 - mutex_lock(&bp->hwrm_cmd_lock); 589 - rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); 590 - 591 - if (rc) { 592 - netdev_err(bp->dev, "hwrm_fwd_async_event_cmpl failed. rc:%d\n", 593 - rc); 594 - goto fwd_async_event_cmpl_exit; 595 - } 596 - 597 - if (resp->error_code) { 598 - netdev_err(bp->dev, "hwrm_fwd_async_event_cmpl error %d\n", 599 - resp->error_code); 600 - rc = -1; 601 - } 602 - 603 - fwd_async_event_cmpl_exit: 604 - mutex_unlock(&bp->hwrm_cmd_lock); 605 525 return rc; 606 526 } 607 527