mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 11:33:28 +02:00
Merge branch 'bnxt_en-updates-for-net-next'
Michael Chan says: ==================== bnxt_en: Updates for net-next This patchset updates the driver with a FW interface update to support FEC stats histogram and NVRAM defragmentation. Patch #2 adds PTP cross timestamps [1]. Patch #3 adds FEC histogram stats. Patch #4 adds NVRAM defragmentation support that prevents FW update failure when NVRAM is fragmented. Patch #5 improves RSS distribution accuracy when certain number of rings is in use. The last patch adds ethtool .get_link_ext_state() support. ==================== Link: https://patch.msgid.link/20260108183521.215610-1-michael.chan@broadcom.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
60d8484c4c
|
|
@ -595,10 +595,10 @@ int bnxt_re_hwrm_cfg_vnic(struct bnxt_re_dev *rdev, u32 qp_id)
|
|||
bnxt_re_init_hwrm_hdr((void *)&req, HWRM_VNIC_CFG);
|
||||
|
||||
req.flags = cpu_to_le32(VNIC_CFG_REQ_FLAGS_ROCE_ONLY_VNIC_MODE);
|
||||
req.enables = cpu_to_le32(VNIC_CFG_REQ_ENABLES_RAW_QP_ID |
|
||||
req.enables = cpu_to_le32(VNIC_CFG_REQ_ENABLES_QP_ID |
|
||||
VNIC_CFG_REQ_ENABLES_MRU);
|
||||
req.vnic_id = cpu_to_le16(rdev->mirror_vnic_id);
|
||||
req.raw_qp_id = cpu_to_le32(qp_id);
|
||||
req.qp_id = cpu_to_le32(qp_id);
|
||||
req.mru = cpu_to_le16(rdev->netdev->mtu + VLAN_ETH_HLEN);
|
||||
|
||||
bnxt_re_fill_fw_msg(&fw_msg, (void *)&req, sizeof(req), NULL,
|
||||
|
|
|
|||
|
|
@ -6567,6 +6567,9 @@ int bnxt_get_nr_rss_ctxs(struct bnxt *bp, int rx_rings)
|
|||
if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
|
||||
if (!rx_rings)
|
||||
return 0;
|
||||
if (bp->rss_cap & BNXT_RSS_CAP_LARGE_RSS_CTX)
|
||||
return BNXT_RSS_TABLE_MAX_TBL_P5;
|
||||
|
||||
return bnxt_calc_nr_ring_pages(rx_rings - 1,
|
||||
BNXT_RSS_TABLE_ENTRIES_P5);
|
||||
}
|
||||
|
|
@ -8077,6 +8080,11 @@ static int __bnxt_reserve_rings(struct bnxt *bp)
|
|||
bp->rx_nr_rings = rx_rings;
|
||||
bp->cp_nr_rings = hwr.cp;
|
||||
|
||||
/* Fall back if we cannot reserve enough HW RSS contexts */
|
||||
if ((bp->rss_cap & BNXT_RSS_CAP_LARGE_RSS_CTX) &&
|
||||
hwr.rss_ctx < bnxt_get_total_rss_ctxs(bp, &hwr))
|
||||
bp->rss_cap &= ~BNXT_RSS_CAP_LARGE_RSS_CTX;
|
||||
|
||||
if (!bnxt_rings_ok(bp, &hwr))
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
@ -9567,6 +9575,10 @@ int bnxt_hwrm_func_resc_qcaps(struct bnxt *bp, bool all)
|
|||
hw_resc->min_stat_ctxs = le16_to_cpu(resp->min_stat_ctx);
|
||||
hw_resc->max_stat_ctxs = le16_to_cpu(resp->max_stat_ctx);
|
||||
|
||||
if (hw_resc->max_rsscos_ctxs >=
|
||||
hw_resc->max_vnics * BNXT_LARGE_RSS_TO_VNIC_RATIO)
|
||||
bp->rss_cap |= BNXT_RSS_CAP_LARGE_RSS_CTX;
|
||||
|
||||
if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) {
|
||||
u16 max_msix = le16_to_cpu(resp->max_msix);
|
||||
|
||||
|
|
@ -9700,6 +9712,8 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
|
|||
bp->fw_cap |= BNXT_FW_CAP_EXT_HW_STATS_SUPPORTED;
|
||||
if (BNXT_PF(bp) && (flags_ext & FUNC_QCAPS_RESP_FLAGS_EXT_PTP_PPS_SUPPORTED))
|
||||
bp->fw_cap |= BNXT_FW_CAP_PTP_PPS;
|
||||
if (flags_ext & FUNC_QCAPS_RESP_FLAGS_EXT_PTP_PTM_SUPPORTED)
|
||||
bp->fw_cap |= BNXT_FW_CAP_PTP_PTM;
|
||||
if (flags_ext & FUNC_QCAPS_RESP_FLAGS_EXT_PTP_64BIT_RTC_SUPPORTED)
|
||||
bp->fw_cap |= BNXT_FW_CAP_PTP_RTC;
|
||||
if (BNXT_PF(bp) && (flags_ext & FUNC_QCAPS_RESP_FLAGS_EXT_HOT_RESET_IF_SUPPORT))
|
||||
|
|
@ -11901,6 +11915,26 @@ static char *bnxt_report_fec(struct bnxt_link_info *link_info)
|
|||
}
|
||||
}
|
||||
|
||||
static char *bnxt_link_down_reason(struct bnxt_link_info *link_info)
|
||||
{
|
||||
u8 reason = link_info->link_down_reason;
|
||||
|
||||
/* Multiple bits can be set, we report 1 bit only in order of
|
||||
* priority.
|
||||
*/
|
||||
if (reason & PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_RF)
|
||||
return "(Remote fault)";
|
||||
if (reason & PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_OTP_SPEED_VIOLATION)
|
||||
return "(OTP Speed limit violation)";
|
||||
if (reason & PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_CABLE_REMOVED)
|
||||
return "(Cable removed)";
|
||||
if (reason & PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_MODULE_FAULT)
|
||||
return "(Module fault)";
|
||||
if (reason & PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_BMC_REQUEST)
|
||||
return "(BMC request down)";
|
||||
return "";
|
||||
}
|
||||
|
||||
void bnxt_report_link(struct bnxt *bp)
|
||||
{
|
||||
if (BNXT_LINK_IS_UP(bp)) {
|
||||
|
|
@ -11958,8 +11992,10 @@ void bnxt_report_link(struct bnxt *bp)
|
|||
(fec & BNXT_FEC_AUTONEG) ? "on" : "off",
|
||||
bnxt_report_fec(&bp->link_info));
|
||||
} else {
|
||||
char *str = bnxt_link_down_reason(&bp->link_info);
|
||||
|
||||
netif_carrier_off(bp->dev);
|
||||
netdev_err(bp->dev, "NIC Link is Down\n");
|
||||
netdev_err(bp->dev, "NIC Link is Down %s\n", str);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -12159,6 +12195,7 @@ int bnxt_update_link(struct bnxt *bp, bool chng_link_state)
|
|||
link_info->phy_addr = resp->eee_config_phy_addr &
|
||||
PORT_PHY_QCFG_RESP_PHY_ADDR_MASK;
|
||||
link_info->module_status = resp->module_status;
|
||||
link_info->link_down_reason = resp->link_down_reason;
|
||||
|
||||
if (bp->phy_flags & BNXT_PHY_FL_EEE_CAP) {
|
||||
struct ethtool_keee *eee = &bp->eee;
|
||||
|
|
|
|||
|
|
@ -1367,6 +1367,8 @@ struct bnxt_hw_resc {
|
|||
u32 max_rx_wm_flows;
|
||||
};
|
||||
|
||||
#define BNXT_LARGE_RSS_TO_VNIC_RATIO 7
|
||||
|
||||
#if defined(CONFIG_BNXT_SRIOV)
|
||||
struct bnxt_vf_info {
|
||||
u16 fw_fid;
|
||||
|
|
@ -1551,6 +1553,7 @@ struct bnxt_link_info {
|
|||
#define BNXT_LINK_STATE_DOWN 1
|
||||
#define BNXT_LINK_STATE_UP 2
|
||||
#define BNXT_LINK_IS_UP(bp) ((bp)->link_info.link_state == BNXT_LINK_STATE_UP)
|
||||
u8 link_down_reason;
|
||||
u8 active_lanes;
|
||||
u8 duplex;
|
||||
#define BNXT_LINK_DUPLEX_HALF PORT_PHY_QCFG_RESP_DUPLEX_STATE_HALF
|
||||
|
|
@ -2410,6 +2413,7 @@ struct bnxt {
|
|||
#define BNXT_RSS_CAP_ESP_V6_RSS_CAP BIT(7)
|
||||
#define BNXT_RSS_CAP_MULTI_RSS_CTX BIT(8)
|
||||
#define BNXT_RSS_CAP_IPV6_FLOW_LABEL_RSS_CAP BIT(9)
|
||||
#define BNXT_RSS_CAP_LARGE_RSS_CTX BIT(10)
|
||||
|
||||
u8 rss_hash_key[HW_HASH_KEY_SIZE];
|
||||
u8 rss_hash_key_valid:1;
|
||||
|
|
@ -2516,6 +2520,7 @@ struct bnxt {
|
|||
#define BNXT_FW_CAP_SW_MAX_RESOURCE_LIMITS BIT_ULL(41)
|
||||
#define BNXT_FW_CAP_NPAR_1_2 BIT_ULL(42)
|
||||
#define BNXT_FW_CAP_MIRROR_ON_ROCE BIT_ULL(43)
|
||||
#define BNXT_FW_CAP_PTP_PTM BIT_ULL(44)
|
||||
|
||||
u32 fw_dbg_cap;
|
||||
|
||||
|
|
@ -2701,6 +2706,7 @@ struct bnxt {
|
|||
#define BNXT_PHY_FL_NO_PFC (PORT_PHY_QCAPS_RESP_FLAGS2_PFC_UNSUPPORTED << 8)
|
||||
#define BNXT_PHY_FL_BANK_SEL (PORT_PHY_QCAPS_RESP_FLAGS2_BANK_ADDR_SUPPORTED << 8)
|
||||
#define BNXT_PHY_FL_SPEEDS2 (PORT_PHY_QCAPS_RESP_FLAGS2_SPEEDS2_SUPPORTED << 8)
|
||||
#define BNXT_PHY_FL_FDRSTATS (PORT_PHY_QCAPS_RESP_FLAGS2_FDRSTAT_CMD_SUPPORTED << 8)
|
||||
|
||||
/* copied from flags in hwrm_port_mac_qcaps_output */
|
||||
u8 mac_flags;
|
||||
|
|
|
|||
|
|
@ -3216,6 +3216,56 @@ static int bnxt_get_fecparam(struct net_device *dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const struct ethtool_fec_hist_range bnxt_fec_ranges[] = {
|
||||
{ 0, 0},
|
||||
{ 1, 1},
|
||||
{ 2, 2},
|
||||
{ 3, 3},
|
||||
{ 4, 4},
|
||||
{ 5, 5},
|
||||
{ 6, 6},
|
||||
{ 7, 7},
|
||||
{ 8, 8},
|
||||
{ 9, 9},
|
||||
{ 10, 10},
|
||||
{ 11, 11},
|
||||
{ 12, 12},
|
||||
{ 13, 13},
|
||||
{ 14, 14},
|
||||
{ 15, 15},
|
||||
{ 0, 0},
|
||||
};
|
||||
|
||||
static void bnxt_hwrm_port_phy_fdrstat(struct bnxt *bp,
|
||||
struct ethtool_fec_hist *hist)
|
||||
{
|
||||
struct ethtool_fec_hist_value *values = hist->values;
|
||||
struct hwrm_port_phy_fdrstat_output *resp;
|
||||
struct hwrm_port_phy_fdrstat_input *req;
|
||||
int rc, i;
|
||||
|
||||
if (!(bp->phy_flags & BNXT_PHY_FL_FDRSTATS))
|
||||
return;
|
||||
|
||||
rc = hwrm_req_init(bp, req, HWRM_PORT_PHY_FDRSTAT);
|
||||
if (rc)
|
||||
return;
|
||||
|
||||
req->port_id = cpu_to_le16(bp->pf.port_id);
|
||||
req->ops = cpu_to_le16(PORT_PHY_FDRSTAT_REQ_OPS_COUNTER);
|
||||
resp = hwrm_req_hold(bp, req);
|
||||
rc = hwrm_req_send(bp, req);
|
||||
if (!rc) {
|
||||
hist->ranges = bnxt_fec_ranges;
|
||||
for (i = 0; i <= 15; i++) {
|
||||
__le64 sum = resp->accumulated_codewords_err_s[i];
|
||||
|
||||
values[i].sum = le64_to_cpu(sum);
|
||||
}
|
||||
}
|
||||
hwrm_req_drop(bp, req);
|
||||
}
|
||||
|
||||
static void bnxt_get_fec_stats(struct net_device *dev,
|
||||
struct ethtool_fec_stats *fec_stats,
|
||||
struct ethtool_fec_hist *hist)
|
||||
|
|
@ -3237,6 +3287,7 @@ static void bnxt_get_fec_stats(struct net_device *dev,
|
|||
*(rx + BNXT_RX_STATS_EXT_OFFSET(rx_fec_corrected_blocks));
|
||||
fec_stats->uncorrectable_blocks.total =
|
||||
*(rx + BNXT_RX_STATS_EXT_OFFSET(rx_fec_uncorrectable_blocks));
|
||||
bnxt_hwrm_port_phy_fdrstat(bp, hist);
|
||||
}
|
||||
|
||||
static u32 bnxt_ethtool_forced_fec_to_fw(struct bnxt_link_info *link_info,
|
||||
|
|
@ -3381,6 +3432,40 @@ static u32 bnxt_get_link(struct net_device *dev)
|
|||
return BNXT_LINK_IS_UP(bp);
|
||||
}
|
||||
|
||||
static int bnxt_get_link_ext_state(struct net_device *dev,
|
||||
struct ethtool_link_ext_state_info *info)
|
||||
{
|
||||
struct bnxt *bp = netdev_priv(dev);
|
||||
u8 reason;
|
||||
|
||||
if (BNXT_LINK_IS_UP(bp))
|
||||
return -ENODATA;
|
||||
|
||||
reason = bp->link_info.link_down_reason;
|
||||
if (reason & PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_RF) {
|
||||
info->link_ext_state = ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE;
|
||||
info->link_training = ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT;
|
||||
return 0;
|
||||
}
|
||||
if (reason & PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_CABLE_REMOVED) {
|
||||
info->link_ext_state = ETHTOOL_LINK_EXT_STATE_NO_CABLE;
|
||||
return 0;
|
||||
}
|
||||
if (reason & PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_OTP_SPEED_VIOLATION) {
|
||||
info->link_ext_state = ETHTOOL_LINK_EXT_STATE_OTP_SPEED_VIOLATION;
|
||||
return 0;
|
||||
}
|
||||
if (reason & PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_MODULE_FAULT) {
|
||||
info->link_ext_state = ETHTOOL_LINK_EXT_STATE_MODULE;
|
||||
return 0;
|
||||
}
|
||||
if (reason & PORT_PHY_QCFG_RESP_LINK_DOWN_REASON_BMC_REQUEST) {
|
||||
info->link_ext_state = ETHTOOL_LINK_EXT_STATE_BMC_REQUEST_DOWN;
|
||||
return 0;
|
||||
}
|
||||
return -ENODATA;
|
||||
}
|
||||
|
||||
int bnxt_hwrm_nvm_get_dev_info(struct bnxt *bp,
|
||||
struct hwrm_nvm_get_dev_info_output *nvm_dev_info)
|
||||
{
|
||||
|
|
@ -3797,9 +3882,25 @@ static int nvm_update_err_to_stderr(struct net_device *dev, u8 result,
|
|||
#define BNXT_NVM_MORE_FLAG (cpu_to_le16(NVM_MODIFY_REQ_FLAGS_BATCH_MODE))
|
||||
#define BNXT_NVM_LAST_FLAG (cpu_to_le16(NVM_MODIFY_REQ_FLAGS_BATCH_LAST))
|
||||
|
||||
static int bnxt_hwrm_nvm_defrag(struct bnxt *bp)
|
||||
{
|
||||
struct hwrm_nvm_defrag_input *req;
|
||||
int rc;
|
||||
|
||||
rc = hwrm_req_init(bp, req, HWRM_NVM_DEFRAG);
|
||||
if (rc)
|
||||
return rc;
|
||||
req->flags = cpu_to_le32(NVM_DEFRAG_REQ_FLAGS_DEFRAG);
|
||||
hwrm_req_timeout(bp, req, bp->hwrm_cmd_max_timeout);
|
||||
|
||||
return hwrm_req_send(bp, req);
|
||||
}
|
||||
|
||||
static int bnxt_resize_update_entry(struct net_device *dev, size_t fw_size,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct bnxt *bp = netdev_priv(dev);
|
||||
bool retry = false;
|
||||
u32 item_len;
|
||||
int rc;
|
||||
|
||||
|
|
@ -3812,9 +3913,19 @@ static int bnxt_resize_update_entry(struct net_device *dev, size_t fw_size,
|
|||
}
|
||||
|
||||
if (fw_size > item_len) {
|
||||
rc = bnxt_flash_nvram(dev, BNX_DIR_TYPE_UPDATE,
|
||||
BNX_DIR_ORDINAL_FIRST, 0, 1,
|
||||
round_up(fw_size, 4096), NULL, 0);
|
||||
do {
|
||||
rc = bnxt_flash_nvram(dev, BNX_DIR_TYPE_UPDATE,
|
||||
BNX_DIR_ORDINAL_FIRST, 0, 1,
|
||||
round_up(fw_size, 4096), NULL,
|
||||
0);
|
||||
|
||||
if (rc == -ENOSPC) {
|
||||
if (retry || bnxt_hwrm_nvm_defrag(bp))
|
||||
break;
|
||||
retry = true;
|
||||
}
|
||||
} while (rc == -ENOSPC);
|
||||
|
||||
if (rc) {
|
||||
BNXT_NVM_ERR_MSG(dev, extack, MSG_RESIZE_UPDATE_ERR);
|
||||
return rc;
|
||||
|
|
@ -5634,6 +5745,7 @@ const struct ethtool_ops bnxt_ethtool_ops = {
|
|||
.get_eeprom = bnxt_get_eeprom,
|
||||
.set_eeprom = bnxt_set_eeprom,
|
||||
.get_link = bnxt_get_link,
|
||||
.get_link_ext_state = bnxt_get_link_ext_state,
|
||||
.get_link_ext_stats = bnxt_get_link_ext_stats,
|
||||
.get_eee = bnxt_get_eee,
|
||||
.set_eee = bnxt_set_eee,
|
||||
|
|
|
|||
|
|
@ -882,6 +882,49 @@ void bnxt_tx_ts_cmp(struct bnxt *bp, struct bnxt_napi *bnapi,
|
|||
}
|
||||
}
|
||||
|
||||
static int bnxt_phc_get_syncdevicetime(ktime_t *device,
|
||||
struct system_counterval_t *system,
|
||||
void *ctx)
|
||||
{
|
||||
struct bnxt_ptp_cfg *ptp = (struct bnxt_ptp_cfg *)ctx;
|
||||
struct hwrm_func_ptp_ts_query_output *resp;
|
||||
struct hwrm_func_ptp_ts_query_input *req;
|
||||
struct bnxt *bp = ptp->bp;
|
||||
u64 ptm_local_ts;
|
||||
int rc;
|
||||
|
||||
rc = hwrm_req_init(bp, req, HWRM_FUNC_PTP_TS_QUERY);
|
||||
if (rc)
|
||||
return rc;
|
||||
req->flags = cpu_to_le32(FUNC_PTP_TS_QUERY_REQ_FLAGS_PTM_TIME);
|
||||
resp = hwrm_req_hold(bp, req);
|
||||
rc = hwrm_req_send(bp, req);
|
||||
if (rc) {
|
||||
hwrm_req_drop(bp, req);
|
||||
return rc;
|
||||
}
|
||||
ptm_local_ts = le64_to_cpu(resp->ptm_local_ts);
|
||||
*device = ns_to_ktime(bnxt_timecounter_cyc2time(ptp, ptm_local_ts));
|
||||
/* ptm_system_ts is 64-bit */
|
||||
system->cycles = le64_to_cpu(resp->ptm_system_ts);
|
||||
system->cs_id = CSID_X86_ART;
|
||||
system->use_nsecs = true;
|
||||
|
||||
hwrm_req_drop(bp, req);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bnxt_ptp_getcrosststamp(struct ptp_clock_info *ptp_info,
|
||||
struct system_device_crosststamp *xtstamp)
|
||||
{
|
||||
struct bnxt_ptp_cfg *ptp = container_of(ptp_info, struct bnxt_ptp_cfg,
|
||||
ptp_info);
|
||||
|
||||
return get_device_system_crosststamp(bnxt_phc_get_syncdevicetime,
|
||||
ptp, NULL, xtstamp);
|
||||
}
|
||||
|
||||
static const struct ptp_clock_info bnxt_ptp_caps = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "bnxt clock",
|
||||
|
|
@ -1094,6 +1137,10 @@ int bnxt_ptp_init(struct bnxt *bp)
|
|||
if (bnxt_ptp_pps_init(bp))
|
||||
netdev_err(bp->dev, "1pps not initialized, continuing without 1pps support\n");
|
||||
}
|
||||
if ((bp->fw_cap & BNXT_FW_CAP_PTP_PTM) && pcie_ptm_enabled(bp->pdev) &&
|
||||
boot_cpu_has(X86_FEATURE_ART))
|
||||
ptp->ptp_info.getcrosststamp = bnxt_ptp_getcrosststamp;
|
||||
|
||||
ptp->ptp_clock = ptp_clock_register(&ptp->ptp_info, &bp->pdev->dev);
|
||||
if (IS_ERR(ptp->ptp_clock)) {
|
||||
int err = PTR_ERR(ptp->ptp_clock);
|
||||
|
|
|
|||
|
|
@ -187,6 +187,8 @@ struct cmd_nums {
|
|||
#define HWRM_RING_QCFG 0x63UL
|
||||
#define HWRM_RESERVED5 0x64UL
|
||||
#define HWRM_RESERVED6 0x65UL
|
||||
#define HWRM_PORT_ADSM_QSTATES 0x66UL
|
||||
#define HWRM_PORT_EVENTS_LOG 0x67UL
|
||||
#define HWRM_VNIC_RSS_COS_LB_CTX_ALLOC 0x70UL
|
||||
#define HWRM_VNIC_RSS_COS_LB_CTX_FREE 0x71UL
|
||||
#define HWRM_QUEUE_MPLS_QCAPS 0x80UL
|
||||
|
|
@ -235,7 +237,7 @@ struct cmd_nums {
|
|||
#define HWRM_PORT_PHY_MDIO_BUS_ACQUIRE 0xb7UL
|
||||
#define HWRM_PORT_PHY_MDIO_BUS_RELEASE 0xb8UL
|
||||
#define HWRM_PORT_QSTATS_EXT_PFC_WD 0xb9UL
|
||||
#define HWRM_RESERVED7 0xbaUL
|
||||
#define HWRM_PORT_QSTATS_EXT_PFC_ADV 0xbaUL
|
||||
#define HWRM_PORT_TX_FIR_CFG 0xbbUL
|
||||
#define HWRM_PORT_TX_FIR_QCFG 0xbcUL
|
||||
#define HWRM_PORT_ECN_QSTATS 0xbdUL
|
||||
|
|
@ -271,6 +273,7 @@ struct cmd_nums {
|
|||
#define HWRM_PORT_EP_TX_CFG 0xdbUL
|
||||
#define HWRM_PORT_CFG 0xdcUL
|
||||
#define HWRM_PORT_QCFG 0xddUL
|
||||
#define HWRM_PORT_DSC_COLLECTION 0xdeUL
|
||||
#define HWRM_PORT_MAC_QCAPS 0xdfUL
|
||||
#define HWRM_TEMP_MONITOR_QUERY 0xe0UL
|
||||
#define HWRM_REG_POWER_QUERY 0xe1UL
|
||||
|
|
@ -280,6 +283,7 @@ struct cmd_nums {
|
|||
#define HWRM_MONITOR_PAX_HISTOGRAM_COLLECT 0xe5UL
|
||||
#define HWRM_STAT_QUERY_ROCE_STATS 0xe6UL
|
||||
#define HWRM_STAT_QUERY_ROCE_STATS_EXT 0xe7UL
|
||||
#define HWRM_MONITOR_DEVICE_HEALTH 0xe8UL
|
||||
#define HWRM_WOL_FILTER_ALLOC 0xf0UL
|
||||
#define HWRM_WOL_FILTER_FREE 0xf1UL
|
||||
#define HWRM_WOL_FILTER_QCFG 0xf2UL
|
||||
|
|
@ -640,8 +644,8 @@ struct hwrm_err_output {
|
|||
#define HWRM_VERSION_MAJOR 1
|
||||
#define HWRM_VERSION_MINOR 10
|
||||
#define HWRM_VERSION_UPDATE 3
|
||||
#define HWRM_VERSION_RSVD 133
|
||||
#define HWRM_VERSION_STR "1.10.3.133"
|
||||
#define HWRM_VERSION_RSVD 151
|
||||
#define HWRM_VERSION_STR "1.10.3.151"
|
||||
|
||||
/* hwrm_ver_get_input (size:192b/24B) */
|
||||
struct hwrm_ver_get_input {
|
||||
|
|
@ -1416,7 +1420,8 @@ struct hwrm_async_event_cmpl_error_report_base {
|
|||
#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_DB_DROP 0x8UL
|
||||
#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_MD_TEMP 0x9UL
|
||||
#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_VNIC_ERR 0xaUL
|
||||
#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_LAST ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_VNIC_ERR
|
||||
#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_L2_TX_RING 0xbUL
|
||||
#define ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_LAST ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_L2_TX_RING
|
||||
};
|
||||
|
||||
/* hwrm_async_event_cmpl_error_report_pause_storm (size:128b/16B) */
|
||||
|
|
@ -1934,7 +1939,9 @@ struct hwrm_func_qcaps_output {
|
|||
#define FUNC_QCAPS_RESP_FLAGS_EXT3_PCIE_COMPLIANCE_SUPPORTED 0x100UL
|
||||
#define FUNC_QCAPS_RESP_FLAGS_EXT3_MULTI_L2_DB_SUPPORTED 0x200UL
|
||||
#define FUNC_QCAPS_RESP_FLAGS_EXT3_PCIE_SECURE_ATS_SUPPORTED 0x400UL
|
||||
#define FUNC_QCAPS_RESP_FLAGS_EXT3_MBUF_STATS_SUPPORTED 0x800UL
|
||||
#define FUNC_QCAPS_RESP_FLAGS_EXT3_MBUF_DATA_SUPPORTED 0x800UL
|
||||
#define FUNC_QCAPS_RESP_FLAGS_EXT3_ROCE_CMPL_TS_SUPPORTED 0x1000UL
|
||||
#define FUNC_QCAPS_RESP_FLAGS_EXT3_ROCE_ST_SUPPORTED 0x2000UL
|
||||
__le16 max_roce_vfs;
|
||||
__le16 max_crypto_rx_flow_filters;
|
||||
u8 unused_3[3];
|
||||
|
|
@ -4441,7 +4448,10 @@ struct hwrm_port_phy_cfg_input {
|
|||
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEEDS2_200GB_PAM4_112 0x7d2UL
|
||||
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEEDS2_400GB_PAM4_112 0xfa2UL
|
||||
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEEDS2_800GB_PAM4_112 0x1f42UL
|
||||
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEEDS2_LAST PORT_PHY_CFG_REQ_FORCE_LINK_SPEEDS2_800GB_PAM4_112
|
||||
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEEDS2_200GB_PAM4_224 0x7d3UL
|
||||
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEEDS2_400GB_PAM4_224 0xfa3UL
|
||||
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEEDS2_800GB_PAM4_224 0x1f43UL
|
||||
#define PORT_PHY_CFG_REQ_FORCE_LINK_SPEEDS2_LAST PORT_PHY_CFG_REQ_FORCE_LINK_SPEEDS2_800GB_PAM4_224
|
||||
__le16 auto_link_speeds2_mask;
|
||||
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEEDS2_MASK_1GB 0x1UL
|
||||
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEEDS2_MASK_10GB 0x2UL
|
||||
|
|
@ -4457,7 +4467,11 @@ struct hwrm_port_phy_cfg_input {
|
|||
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEEDS2_MASK_200GB_PAM4_112 0x800UL
|
||||
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEEDS2_MASK_400GB_PAM4_112 0x1000UL
|
||||
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEEDS2_MASK_800GB_PAM4_112 0x2000UL
|
||||
u8 unused_2[6];
|
||||
__le16 auto_link_speeds2_ext_mask;
|
||||
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEEDS2_EXT_MASK_200GB_PAM4_224 0x1UL
|
||||
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEEDS2_EXT_MASK_400GB_PAM4_224 0x2UL
|
||||
#define PORT_PHY_CFG_REQ_AUTO_LINK_SPEEDS2_EXT_MASK_800GB_PAM4_224 0x4UL
|
||||
u8 unused_2[4];
|
||||
};
|
||||
|
||||
/* hwrm_port_phy_cfg_output (size:128b/16B) */
|
||||
|
|
@ -4491,7 +4505,7 @@ struct hwrm_port_phy_qcfg_input {
|
|||
u8 unused_0[6];
|
||||
};
|
||||
|
||||
/* hwrm_port_phy_qcfg_output (size:832b/104B) */
|
||||
/* hwrm_port_phy_qcfg_output (size:896b/112B) */
|
||||
struct hwrm_port_phy_qcfg_output {
|
||||
__le16 error_code;
|
||||
__le16 req_type;
|
||||
|
|
@ -4501,14 +4515,17 @@ struct hwrm_port_phy_qcfg_output {
|
|||
#define PORT_PHY_QCFG_RESP_LINK_NO_LINK 0x0UL
|
||||
#define PORT_PHY_QCFG_RESP_LINK_SIGNAL 0x1UL
|
||||
#define PORT_PHY_QCFG_RESP_LINK_LINK 0x2UL
|
||||
#define PORT_PHY_QCFG_RESP_LINK_LAST PORT_PHY_QCFG_RESP_LINK_LINK
|
||||
#define PORT_PHY_QCFG_RESP_LINK_NO_SD 0x3UL
|
||||
#define PORT_PHY_QCFG_RESP_LINK_NO_LOCK 0x4UL
|
||||
#define PORT_PHY_QCFG_RESP_LINK_LAST PORT_PHY_QCFG_RESP_LINK_NO_LOCK
|
||||
u8 active_fec_signal_mode;
|
||||
#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_MASK 0xfUL
|
||||
#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_SFT 0
|
||||
#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_NRZ 0x0UL
|
||||
#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_PAM4 0x1UL
|
||||
#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_PAM4_112 0x2UL
|
||||
#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_LAST PORT_PHY_QCFG_RESP_SIGNAL_MODE_PAM4_112
|
||||
#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_PAM4_224 0x3UL
|
||||
#define PORT_PHY_QCFG_RESP_SIGNAL_MODE_LAST PORT_PHY_QCFG_RESP_SIGNAL_MODE_PAM4_224
|
||||
#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_MASK 0xf0UL
|
||||
#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_SFT 4
|
||||
#define PORT_PHY_QCFG_RESP_ACTIVE_FEC_FEC_NONE_ACTIVE (0x0UL << 4)
|
||||
|
|
@ -4699,7 +4716,9 @@ struct hwrm_port_phy_qcfg_output {
|
|||
#define PORT_PHY_QCFG_RESP_PHY_TYPE_800G_BASEER8 0x3bUL
|
||||
#define PORT_PHY_QCFG_RESP_PHY_TYPE_800G_BASEFR8 0x3cUL
|
||||
#define PORT_PHY_QCFG_RESP_PHY_TYPE_800G_BASEDR8 0x3dUL
|
||||
#define PORT_PHY_QCFG_RESP_PHY_TYPE_LAST PORT_PHY_QCFG_RESP_PHY_TYPE_800G_BASEDR8
|
||||
#define PORT_PHY_QCFG_RESP_PHY_TYPE_400G_BASEDR4 0x3eUL
|
||||
#define PORT_PHY_QCFG_RESP_PHY_TYPE_400G_BASEFR4 0x3fUL
|
||||
#define PORT_PHY_QCFG_RESP_PHY_TYPE_LAST PORT_PHY_QCFG_RESP_PHY_TYPE_400G_BASEFR4
|
||||
u8 media_type;
|
||||
#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_UNKNOWN 0x0UL
|
||||
#define PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP 0x1UL
|
||||
|
|
@ -4859,7 +4878,10 @@ struct hwrm_port_phy_qcfg_output {
|
|||
#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEEDS2_200GB_PAM4_112 0x7d2UL
|
||||
#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEEDS2_400GB_PAM4_112 0xfa2UL
|
||||
#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEEDS2_800GB_PAM4_112 0x1f42UL
|
||||
#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEEDS2_LAST PORT_PHY_QCFG_RESP_FORCE_LINK_SPEEDS2_800GB_PAM4_112
|
||||
#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEEDS2_200GB_PAM4_224 0x7d3UL
|
||||
#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEEDS2_400GB_PAM4_224 0xfa3UL
|
||||
#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEEDS2_800GB_PAM4_224 0x1f43UL
|
||||
#define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEEDS2_LAST PORT_PHY_QCFG_RESP_FORCE_LINK_SPEEDS2_800GB_PAM4_224
|
||||
__le16 auto_link_speeds2;
|
||||
#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEEDS2_1GB 0x1UL
|
||||
#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEEDS2_10GB 0x2UL
|
||||
|
|
@ -4876,6 +4898,16 @@ struct hwrm_port_phy_qcfg_output {
|
|||
#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEEDS2_400GB_PAM4_112 0x1000UL
|
||||
#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEEDS2_800GB_PAM4_112 0x2000UL
|
||||
u8 active_lanes;
|
||||
u8 rsvd1;
|
||||
__le16 support_speeds2_ext;
|
||||
#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS2_EXT_200GB_PAM4_224 0x1UL
|
||||
#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS2_EXT_400GB_PAM4_224 0x2UL
|
||||
#define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS2_EXT_800GB_PAM4_224 0x4UL
|
||||
__le16 auto_link_speeds2_ext;
|
||||
#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEEDS2_EXT_200GB_PAM4_224 0x1UL
|
||||
#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEEDS2_EXT_400GB_PAM4_224 0x2UL
|
||||
#define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEEDS2_EXT_800GB_PAM4_224 0x4UL
|
||||
u8 rsvd2[3];
|
||||
u8 valid;
|
||||
};
|
||||
|
||||
|
|
@ -5478,7 +5510,7 @@ struct hwrm_port_phy_qcaps_input {
|
|||
u8 unused_0[6];
|
||||
};
|
||||
|
||||
/* hwrm_port_phy_qcaps_output (size:320b/40B) */
|
||||
/* hwrm_port_phy_qcaps_output (size:384b/48B) */
|
||||
struct hwrm_port_phy_qcaps_output {
|
||||
__le16 error_code;
|
||||
__le16 req_type;
|
||||
|
|
@ -5563,6 +5595,10 @@ struct hwrm_port_phy_qcaps_output {
|
|||
#define PORT_PHY_QCAPS_RESP_FLAGS2_BANK_ADDR_SUPPORTED 0x4UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS2_SPEEDS2_SUPPORTED 0x8UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS2_REMOTE_LPBK_UNSUPPORTED 0x10UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS2_PFC_ADV_STATS_SUPPORTED 0x20UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS2_ADSM_REPORT_SUPPORTED 0x40UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS2_PM_EVENT_LOG_SUPPORTED 0x80UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS2_FDRSTAT_CMD_SUPPORTED 0x100UL
|
||||
u8 internal_port_cnt;
|
||||
u8 unused_0;
|
||||
__le16 supported_speeds2_force_mode;
|
||||
|
|
@ -5595,7 +5631,15 @@ struct hwrm_port_phy_qcaps_output {
|
|||
#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS2_AUTO_MODE_200GB_PAM4_112 0x800UL
|
||||
#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS2_AUTO_MODE_400GB_PAM4_112 0x1000UL
|
||||
#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS2_AUTO_MODE_800GB_PAM4_112 0x2000UL
|
||||
u8 unused_1[3];
|
||||
__le16 supported_speeds2_ext_force_mode;
|
||||
#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS2_EXT_FORCE_MODE_200GB_PAM4_224 0x1UL
|
||||
#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS2_EXT_FORCE_MODE_400GB_PAM4_224 0x2UL
|
||||
#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS2_EXT_FORCE_MODE_800GB_PAM4_224 0x4UL
|
||||
__le16 supported_speeds2_ext_auto_mode;
|
||||
#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS2_EXT_AUTO_MODE_200GB_PAM4_224 0x1UL
|
||||
#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS2_EXT_AUTO_MODE_400GB_PAM4_224 0x2UL
|
||||
#define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS2_EXT_AUTO_MODE_800GB_PAM4_224 0x4UL
|
||||
u8 unused_1[7];
|
||||
u8 valid;
|
||||
};
|
||||
|
||||
|
|
@ -6051,6 +6095,58 @@ struct hwrm_port_led_qcaps_output {
|
|||
u8 valid;
|
||||
};
|
||||
|
||||
/* hwrm_port_phy_fdrstat_input (size:192b/24B) */
|
||||
struct hwrm_port_phy_fdrstat_input {
|
||||
__le16 req_type;
|
||||
__le16 cmpl_ring;
|
||||
__le16 seq_id;
|
||||
__le16 target_id;
|
||||
__le64 resp_addr;
|
||||
__le16 port_id;
|
||||
__le16 rsvd[2];
|
||||
__le16 ops;
|
||||
#define PORT_PHY_FDRSTAT_REQ_OPS_START 0x0UL
|
||||
#define PORT_PHY_FDRSTAT_REQ_OPS_STOP 0x1UL
|
||||
#define PORT_PHY_FDRSTAT_REQ_OPS_CLEAR 0x2UL
|
||||
#define PORT_PHY_FDRSTAT_REQ_OPS_COUNTER 0x3UL
|
||||
#define PORT_PHY_FDRSTAT_REQ_OPS_LAST PORT_PHY_FDRSTAT_REQ_OPS_COUNTER
|
||||
};
|
||||
|
||||
/* hwrm_port_phy_fdrstat_output (size:3072b/384B) */
|
||||
struct hwrm_port_phy_fdrstat_output {
|
||||
__le16 error_code;
|
||||
__le16 req_type;
|
||||
__le16 seq_id;
|
||||
__le16 resp_len;
|
||||
__le64 start_time;
|
||||
__le64 end_time;
|
||||
__le64 cmic_start_time;
|
||||
__le64 cmic_end_time;
|
||||
__le64 accumulated_uncorrected_codewords;
|
||||
__le64 accumulated_corrected_codewords;
|
||||
__le64 accumulated_total_codewords;
|
||||
__le64 accumulated_symbol_errors;
|
||||
__le64 accumulated_codewords_err_s[17];
|
||||
__le64 uncorrected_codewords;
|
||||
__le64 corrected_codewords;
|
||||
__le64 total_codewords;
|
||||
__le64 symbol_errors;
|
||||
__le64 codewords_err_s[17];
|
||||
__le32 window_size;
|
||||
__le16 unused_0[1];
|
||||
u8 unused_1;
|
||||
u8 valid;
|
||||
};
|
||||
|
||||
/* hwrm_port_phy_fdrstat_cmd_err (size:64b/8B) */
|
||||
struct hwrm_port_phy_fdrstat_cmd_err {
|
||||
u8 code;
|
||||
#define PORT_PHY_FDRSTAT_CMD_ERR_CODE_UNKNOWN 0x0UL
|
||||
#define PORT_PHY_FDRSTAT_CMD_ERR_CODE_NOT_STARTED 0x1UL
|
||||
#define PORT_PHY_FDRSTAT_CMD_ERR_CODE_LAST PORT_PHY_FDRSTAT_CMD_ERR_CODE_NOT_STARTED
|
||||
u8 unused_0[7];
|
||||
};
|
||||
|
||||
/* hwrm_port_mac_qcaps_input (size:192b/24B) */
|
||||
struct hwrm_port_mac_qcaps_input {
|
||||
__le16 req_type;
|
||||
|
|
@ -6912,6 +7008,7 @@ struct hwrm_vnic_cfg_input {
|
|||
#define VNIC_CFG_REQ_FLAGS_RSS_DFLT_CR_MODE 0x20UL
|
||||
#define VNIC_CFG_REQ_FLAGS_ROCE_MIRRORING_CAPABLE_VNIC_MODE 0x40UL
|
||||
#define VNIC_CFG_REQ_FLAGS_PORTCOS_MAPPING_MODE 0x80UL
|
||||
#define VNIC_CFG_REQ_FLAGS_DEST_QP 0x100UL
|
||||
__le32 enables;
|
||||
#define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP 0x1UL
|
||||
#define VNIC_CFG_REQ_ENABLES_RSS_RULE 0x2UL
|
||||
|
|
@ -6923,7 +7020,7 @@ struct hwrm_vnic_cfg_input {
|
|||
#define VNIC_CFG_REQ_ENABLES_QUEUE_ID 0x80UL
|
||||
#define VNIC_CFG_REQ_ENABLES_RX_CSUM_V2_MODE 0x100UL
|
||||
#define VNIC_CFG_REQ_ENABLES_L2_CQE_MODE 0x200UL
|
||||
#define VNIC_CFG_REQ_ENABLES_RAW_QP_ID 0x400UL
|
||||
#define VNIC_CFG_REQ_ENABLES_QP_ID 0x400UL
|
||||
__le16 vnic_id;
|
||||
__le16 dflt_ring_grp;
|
||||
__le16 rss_rule;
|
||||
|
|
@ -6943,7 +7040,7 @@ struct hwrm_vnic_cfg_input {
|
|||
#define VNIC_CFG_REQ_L2_CQE_MODE_COMPRESSED 0x1UL
|
||||
#define VNIC_CFG_REQ_L2_CQE_MODE_MIXED 0x2UL
|
||||
#define VNIC_CFG_REQ_L2_CQE_MODE_LAST VNIC_CFG_REQ_L2_CQE_MODE_MIXED
|
||||
__le32 raw_qp_id;
|
||||
__le32 qp_id;
|
||||
};
|
||||
|
||||
/* hwrm_vnic_cfg_output (size:128b/16B) */
|
||||
|
|
@ -7409,6 +7506,8 @@ struct hwrm_ring_alloc_input {
|
|||
#define RING_ALLOC_REQ_FLAGS_DISABLE_CQ_OVERFLOW_DETECTION 0x2UL
|
||||
#define RING_ALLOC_REQ_FLAGS_NQ_DBR_PACING 0x4UL
|
||||
#define RING_ALLOC_REQ_FLAGS_TX_PKT_TS_CMPL_ENABLE 0x8UL
|
||||
#define RING_ALLOC_REQ_FLAGS_DPI_ROCE_MANAGED 0x10UL
|
||||
#define RING_ALLOC_REQ_FLAGS_TIMER_RESET 0x20UL
|
||||
__le64 page_tbl_addr;
|
||||
__le32 fbo;
|
||||
u8 page_size;
|
||||
|
|
@ -7583,6 +7682,7 @@ struct hwrm_ring_aggint_qcaps_output {
|
|||
#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_CMPL_AGGR_DMA_TMR 0x40UL
|
||||
#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_CMPL_AGGR_DMA_TMR_DURING_INT 0x80UL
|
||||
#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_NUM_CMPL_AGGR_INT 0x100UL
|
||||
#define RING_AGGINT_QCAPS_RESP_CMPL_PARAMS_TMR_RESET_ON_ALLOC 0x200UL
|
||||
__le32 nq_params;
|
||||
#define RING_AGGINT_QCAPS_RESP_NQ_PARAMS_INT_LAT_TMR_MIN 0x1UL
|
||||
__le16 num_cmpl_dma_aggr_min;
|
||||
|
|
@ -10325,6 +10425,9 @@ struct hwrm_dbg_coredump_retrieve_input {
|
|||
__le16 instance;
|
||||
__le16 unused_1;
|
||||
u8 seg_flags;
|
||||
#define DBG_COREDUMP_RETRIEVE_REQ_SFLAG_LIVE_DATA 0x1UL
|
||||
#define DBG_COREDUMP_RETRIEVE_REQ_SFLAG_CRASHED_DATA 0x2UL
|
||||
#define DBG_COREDUMP_RETRIEVE_REQ_SFLAG_NO_COMPRESS 0x4UL
|
||||
u8 unused_2;
|
||||
__le16 unused_3;
|
||||
__le32 unused_4;
|
||||
|
|
@ -10926,6 +11029,38 @@ struct hwrm_nvm_set_variable_cmd_err {
|
|||
u8 unused_0[7];
|
||||
};
|
||||
|
||||
/* hwrm_nvm_defrag_input (size:192b/24B) */
|
||||
struct hwrm_nvm_defrag_input {
|
||||
__le16 req_type;
|
||||
__le16 cmpl_ring;
|
||||
__le16 seq_id;
|
||||
__le16 target_id;
|
||||
__le64 resp_addr;
|
||||
__le32 flags;
|
||||
#define NVM_DEFRAG_REQ_FLAGS_DEFRAG 0x1UL
|
||||
u8 unused_0[4];
|
||||
};
|
||||
|
||||
/* hwrm_nvm_defrag_output (size:128b/16B) */
|
||||
struct hwrm_nvm_defrag_output {
|
||||
__le16 error_code;
|
||||
__le16 req_type;
|
||||
__le16 seq_id;
|
||||
__le16 resp_len;
|
||||
u8 unused_0[7];
|
||||
u8 valid;
|
||||
};
|
||||
|
||||
/* hwrm_nvm_defrag_cmd_err (size:64b/8B) */
|
||||
struct hwrm_nvm_defrag_cmd_err {
|
||||
u8 code;
|
||||
#define NVM_DEFRAG_CMD_ERR_CODE_UNKNOWN 0x0UL
|
||||
#define NVM_DEFRAG_CMD_ERR_CODE_FAIL 0x1UL
|
||||
#define NVM_DEFRAG_CMD_ERR_CODE_CHECK_FAIL 0x2UL
|
||||
#define NVM_DEFRAG_CMD_ERR_CODE_LAST NVM_DEFRAG_CMD_ERR_CODE_CHECK_FAIL
|
||||
u8 unused_0[7];
|
||||
};
|
||||
|
||||
/* hwrm_selftest_qlist_input (size:128b/16B) */
|
||||
struct hwrm_selftest_qlist_input {
|
||||
__le16 req_type;
|
||||
|
|
|
|||
|
|
@ -603,6 +603,8 @@ enum ethtool_link_ext_state {
|
|||
ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED,
|
||||
ETHTOOL_LINK_EXT_STATE_OVERHEAT,
|
||||
ETHTOOL_LINK_EXT_STATE_MODULE,
|
||||
ETHTOOL_LINK_EXT_STATE_OTP_SPEED_VIOLATION,
|
||||
ETHTOOL_LINK_EXT_STATE_BMC_REQUEST_DOWN,
|
||||
};
|
||||
|
||||
/* More information in addition to ETHTOOL_LINK_EXT_STATE_AUTONEG. */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user