mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-19 20:05:08 +00:00
Merge branch 'bnxt_en-Updates'
Michael Chan says: ==================== bnxt_en: Updates. This series has the firmware interface update that changes the aRFS/ntuple interface on 57500 chips. The 2nd patch adds a counter and improves the hardware buffer error handling on the 57500 chips. The rest of the series is mainly enhancements on error recovery and firmware reset. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
bec39a9fbb
@ -1767,8 +1767,12 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,
|
||||
|
||||
rc = -EIO;
|
||||
if (rx_err & RX_CMPL_ERRORS_BUFFER_ERROR_MASK) {
|
||||
netdev_warn(bp->dev, "RX buffer error %x\n", rx_err);
|
||||
bnxt_sched_reset(bp, rxr);
|
||||
bnapi->cp_ring.rx_buf_errors++;
|
||||
if (!(bp->flags & BNXT_FLAG_CHIP_P5)) {
|
||||
netdev_warn(bp->dev, "RX buffer error %x\n",
|
||||
rx_err);
|
||||
bnxt_sched_reset(bp, rxr);
|
||||
}
|
||||
}
|
||||
goto next_rx_no_len;
|
||||
}
|
||||
@ -4274,6 +4278,11 @@ static int bnxt_hwrm_do_send_msg(struct bnxt *bp, void *msg, u32 msg_len,
|
||||
/* Wait until hwrm response cmpl interrupt is processed */
|
||||
while (bp->hwrm_intr_seq_id != (u16)~seq_id &&
|
||||
i++ < tmo_count) {
|
||||
/* Abort the wait for completion if the FW health
|
||||
* check has failed.
|
||||
*/
|
||||
if (test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state))
|
||||
return -EBUSY;
|
||||
/* on first few passes, just barely sleep */
|
||||
if (i < HWRM_SHORT_TIMEOUT_COUNTER)
|
||||
usleep_range(HWRM_SHORT_MIN_TIMEOUT,
|
||||
@ -4297,6 +4306,11 @@ static int bnxt_hwrm_do_send_msg(struct bnxt *bp, void *msg, u32 msg_len,
|
||||
|
||||
/* Check if response len is updated */
|
||||
for (i = 0; i < tmo_count; i++) {
|
||||
/* Abort the wait for completion if the FW health
|
||||
* check has failed.
|
||||
*/
|
||||
if (test_bit(BNXT_STATE_FW_FATAL_COND, &bp->state))
|
||||
return -EBUSY;
|
||||
len = (le32_to_cpu(*resp_len) & HWRM_RESP_LEN_MASK) >>
|
||||
HWRM_RESP_LEN_SFT;
|
||||
if (len)
|
||||
@ -4437,7 +4451,8 @@ static int bnxt_hwrm_func_drv_rgtr(struct bnxt *bp)
|
||||
flags = FUNC_DRV_RGTR_REQ_FLAGS_16BIT_VER_MODE |
|
||||
FUNC_DRV_RGTR_REQ_FLAGS_HOT_RESET_SUPPORT;
|
||||
if (bp->fw_cap & BNXT_FW_CAP_ERROR_RECOVERY)
|
||||
flags |= FUNC_DRV_RGTR_REQ_FLAGS_ERROR_RECOVERY_SUPPORT;
|
||||
flags |= FUNC_DRV_RGTR_REQ_FLAGS_ERROR_RECOVERY_SUPPORT |
|
||||
FUNC_DRV_RGTR_REQ_FLAGS_MASTER_SUPPORT;
|
||||
req.flags = cpu_to_le32(flags);
|
||||
req.ver_maj_8b = DRV_VER_MAJ;
|
||||
req.ver_min_8b = DRV_VER_MIN;
|
||||
@ -4601,21 +4616,21 @@ static int bnxt_hwrm_cfa_ntuple_filter_alloc(struct bnxt *bp,
|
||||
struct hwrm_cfa_ntuple_filter_alloc_output *resp;
|
||||
struct flow_keys *keys = &fltr->fkeys;
|
||||
struct bnxt_vnic_info *vnic;
|
||||
u32 dst_ena = 0;
|
||||
u32 flags = 0;
|
||||
int rc = 0;
|
||||
|
||||
bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_CFA_NTUPLE_FILTER_ALLOC, -1, -1);
|
||||
req.l2_filter_id = bp->vnic_info[0].fw_l2_filter_id[fltr->l2_fltr_idx];
|
||||
|
||||
if (bp->fw_cap & BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX) {
|
||||
dst_ena = CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_RFS_RING_TBL_IDX;
|
||||
req.rfs_ring_tbl_idx = cpu_to_le16(fltr->rxq);
|
||||
vnic = &bp->vnic_info[0];
|
||||
if (bp->fw_cap & BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX_V2) {
|
||||
flags = CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DEST_RFS_RING_IDX;
|
||||
req.dst_id = cpu_to_le16(fltr->rxq);
|
||||
} else {
|
||||
vnic = &bp->vnic_info[fltr->rxq + 1];
|
||||
req.dst_id = cpu_to_le16(vnic->fw_vnic_id);
|
||||
}
|
||||
req.dst_id = cpu_to_le16(vnic->fw_vnic_id);
|
||||
req.enables = cpu_to_le32(BNXT_NTP_FLTR_FLAGS | dst_ena);
|
||||
req.flags = cpu_to_le32(flags);
|
||||
req.enables = cpu_to_le32(BNXT_NTP_FLTR_FLAGS);
|
||||
|
||||
req.ethertype = htons(ETH_P_IP);
|
||||
memcpy(req.src_macaddr, fltr->src_mac_addr, ETH_ALEN);
|
||||
@ -6943,6 +6958,8 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
|
||||
bp->flags |= BNXT_FLAG_ROCEV2_CAP;
|
||||
if (flags & FUNC_QCAPS_RESP_FLAGS_PCIE_STATS_SUPPORTED)
|
||||
bp->fw_cap |= BNXT_FW_CAP_PCIE_STATS_SUPPORTED;
|
||||
if (flags & FUNC_QCAPS_RESP_FLAGS_HOT_RESET_CAPABLE)
|
||||
bp->fw_cap |= BNXT_FW_CAP_HOT_RESET;
|
||||
if (flags & FUNC_QCAPS_RESP_FLAGS_EXT_STATS_SUPPORTED)
|
||||
bp->fw_cap |= BNXT_FW_CAP_EXT_STATS_SUPPORTED;
|
||||
if (flags & FUNC_QCAPS_RESP_FLAGS_ERROR_RECOVERY_CAPABLE)
|
||||
@ -7042,8 +7059,8 @@ static int bnxt_hwrm_cfa_adv_flow_mgnt_qcaps(struct bnxt *bp)
|
||||
|
||||
flags = le32_to_cpu(resp->flags);
|
||||
if (flags &
|
||||
CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RFS_RING_TBL_IDX_SUPPORTED)
|
||||
bp->fw_cap |= BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX;
|
||||
CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RFS_RING_TBL_IDX_V2_SUPPORTED)
|
||||
bp->fw_cap |= BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX_V2;
|
||||
|
||||
hwrm_cfa_adv_qcaps_exit:
|
||||
mutex_unlock(&bp->hwrm_cmd_lock);
|
||||
@ -9693,7 +9710,7 @@ static bool bnxt_can_reserve_rings(struct bnxt *bp)
|
||||
static bool bnxt_rfs_supported(struct bnxt *bp)
|
||||
{
|
||||
if (bp->flags & BNXT_FLAG_CHIP_P5) {
|
||||
if (bp->fw_cap & BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX)
|
||||
if (bp->fw_cap & BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX_V2)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@ -10115,6 +10132,7 @@ static void bnxt_force_fw_reset(struct bnxt *bp)
|
||||
|
||||
void bnxt_fw_exception(struct bnxt *bp)
|
||||
{
|
||||
netdev_warn(bp->dev, "Detected firmware fatal condition, initiating reset\n");
|
||||
set_bit(BNXT_STATE_FW_FATAL_COND, &bp->state);
|
||||
bnxt_rtnl_lock_sp(bp);
|
||||
bnxt_force_fw_reset(bp);
|
||||
@ -10743,6 +10761,7 @@ static void bnxt_fw_reset_task(struct work_struct *work)
|
||||
smp_mb__before_atomic();
|
||||
clear_bit(BNXT_STATE_IN_FW_RESET, &bp->state);
|
||||
bnxt_ulp_start(bp, rc);
|
||||
bnxt_dl_health_status_update(bp, true);
|
||||
rtnl_unlock();
|
||||
break;
|
||||
}
|
||||
@ -10750,6 +10769,8 @@ static void bnxt_fw_reset_task(struct work_struct *work)
|
||||
|
||||
fw_reset_abort:
|
||||
clear_bit(BNXT_STATE_IN_FW_RESET, &bp->state);
|
||||
if (bp->fw_reset_state != BNXT_FW_RESET_STATE_POLL_VF)
|
||||
bnxt_dl_health_status_update(bp, false);
|
||||
bp->fw_reset_state = 0;
|
||||
rtnl_lock();
|
||||
dev_close(bp->dev);
|
||||
|
@ -12,11 +12,11 @@
|
||||
#define BNXT_H
|
||||
|
||||
#define DRV_MODULE_NAME "bnxt_en"
|
||||
#define DRV_MODULE_VERSION "1.10.0"
|
||||
#define DRV_MODULE_VERSION "1.10.1"
|
||||
|
||||
#define DRV_VER_MAJ 1
|
||||
#define DRV_VER_MIN 10
|
||||
#define DRV_VER_UPD 0
|
||||
#define DRV_VER_UPD 1
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/rhashtable.h>
|
||||
@ -932,6 +932,7 @@ struct bnxt_cp_ring_info {
|
||||
dma_addr_t hw_stats_map;
|
||||
u32 hw_stats_ctx_id;
|
||||
u64 rx_l4_csum_errors;
|
||||
u64 rx_buf_errors;
|
||||
u64 missed_irqs;
|
||||
|
||||
struct bnxt_ring_struct cp_ring_struct;
|
||||
@ -1383,6 +1384,7 @@ struct bnxt_fw_health {
|
||||
u32 last_fw_reset_cnt;
|
||||
u8 enabled:1;
|
||||
u8 master:1;
|
||||
u8 fatal:1;
|
||||
u8 tmr_multiplier;
|
||||
u8 tmr_counter;
|
||||
u8 fw_reset_seq_cnt;
|
||||
@ -1666,10 +1668,11 @@ struct bnxt {
|
||||
#define BNXT_FW_CAP_ERROR_RECOVERY 0x00002000
|
||||
#define BNXT_FW_CAP_PKG_VER 0x00004000
|
||||
#define BNXT_FW_CAP_CFA_ADV_FLOW 0x00008000
|
||||
#define BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX 0x00010000
|
||||
#define BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX_V2 0x00010000
|
||||
#define BNXT_FW_CAP_PCIE_STATS_SUPPORTED 0x00020000
|
||||
#define BNXT_FW_CAP_EXT_STATS_SUPPORTED 0x00040000
|
||||
#define BNXT_FW_CAP_ERR_RECOVER_RELOAD 0x00100000
|
||||
#define BNXT_FW_CAP_HOT_RESET 0x00200000
|
||||
|
||||
#define BNXT_NEW_RM(bp) ((bp)->fw_cap & BNXT_FW_CAP_NEW_RM)
|
||||
u32 hwrm_spec_code;
|
||||
|
@ -91,6 +91,7 @@ static int bnxt_fw_fatal_recover(struct devlink_health_reporter *reporter,
|
||||
if (!priv_ctx)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
bp->fw_health->fatal = true;
|
||||
event = fw_reporter_ctx->sp_event;
|
||||
if (event == BNXT_FW_RESET_NOTIFY_SP_EVENT)
|
||||
bnxt_fw_reset(bp);
|
||||
@ -199,6 +200,26 @@ void bnxt_devlink_health_report(struct bnxt *bp, unsigned long event)
|
||||
}
|
||||
}
|
||||
|
||||
void bnxt_dl_health_status_update(struct bnxt *bp, bool healthy)
|
||||
{
|
||||
struct bnxt_fw_health *health = bp->fw_health;
|
||||
u8 state;
|
||||
|
||||
if (healthy)
|
||||
state = DEVLINK_HEALTH_REPORTER_STATE_HEALTHY;
|
||||
else
|
||||
state = DEVLINK_HEALTH_REPORTER_STATE_ERROR;
|
||||
|
||||
if (health->fatal)
|
||||
devlink_health_reporter_state_update(health->fw_fatal_reporter,
|
||||
state);
|
||||
else
|
||||
devlink_health_reporter_state_update(health->fw_reset_reporter,
|
||||
state);
|
||||
|
||||
health->fatal = false;
|
||||
}
|
||||
|
||||
static const struct devlink_ops bnxt_dl_ops = {
|
||||
#ifdef CONFIG_BNXT_SRIOV
|
||||
.eswitch_mode_set = bnxt_dl_eswitch_mode_set,
|
||||
@ -314,10 +335,17 @@ static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg,
|
||||
} else {
|
||||
rc = hwrm_send_message_silent(bp, msg, msg_len,
|
||||
HWRM_CMD_TIMEOUT);
|
||||
if (!rc)
|
||||
if (!rc) {
|
||||
bnxt_copy_from_nvm_data(val, data,
|
||||
nvm_param.nvm_num_bits,
|
||||
nvm_param.dl_num_bytes);
|
||||
} else {
|
||||
struct hwrm_err_output *resp = bp->hwrm_cmd_resp_addr;
|
||||
|
||||
if (resp->cmd_err ==
|
||||
NVM_GET_VARIABLE_CMD_ERR_CODE_VAR_NOT_EXIST)
|
||||
rc = -EOPNOTSUPP;
|
||||
}
|
||||
}
|
||||
dma_free_coherent(&bp->pdev->dev, sizeof(*data), data, data_dma_addr);
|
||||
if (rc == -EACCES)
|
||||
|
@ -57,6 +57,7 @@ struct bnxt_dl_nvm_param {
|
||||
};
|
||||
|
||||
void bnxt_devlink_health_report(struct bnxt *bp, unsigned long event);
|
||||
void bnxt_dl_health_status_update(struct bnxt *bp, bool healthy);
|
||||
int bnxt_dl_register(struct bnxt *bp);
|
||||
void bnxt_dl_unregister(struct bnxt *bp);
|
||||
|
||||
|
@ -173,6 +173,7 @@ static const char * const bnxt_ring_tpa2_stats_str[] = {
|
||||
|
||||
static const char * const bnxt_ring_sw_stats_str[] = {
|
||||
"rx_l4_csum_errors",
|
||||
"rx_buf_errors",
|
||||
"missed_irqs",
|
||||
};
|
||||
|
||||
@ -552,6 +553,7 @@ static void bnxt_get_ethtool_stats(struct net_device *dev,
|
||||
for (k = 0; k < stat_fields; j++, k++)
|
||||
buf[j] = le64_to_cpu(hw_stats[k]);
|
||||
buf[j++] = cpr->rx_l4_csum_errors;
|
||||
buf[j++] = cpr->rx_buf_errors;
|
||||
buf[j++] = cpr->missed_irqs;
|
||||
|
||||
bnxt_sw_func_stats[RX_TOTAL_DISCARDS].counter +=
|
||||
@ -1785,6 +1787,8 @@ static int bnxt_firmware_reset(struct net_device *dev,
|
||||
case BNXT_FW_RESET_CHIP:
|
||||
req.embedded_proc_type = FW_RESET_REQ_EMBEDDED_PROC_TYPE_CHIP;
|
||||
req.selfrst_status = FW_RESET_REQ_SELFRST_STATUS_SELFRSTASAP;
|
||||
if (bp->fw_cap & BNXT_FW_CAP_HOT_RESET)
|
||||
req.flags = FW_RESET_REQ_FLAGS_RESET_GRACEFUL;
|
||||
break;
|
||||
case BNXT_FW_RESET_AP:
|
||||
req.embedded_proc_type = FW_RESET_REQ_EMBEDDED_PROC_TYPE_AP;
|
||||
@ -2981,7 +2985,8 @@ static int bnxt_reset(struct net_device *dev, u32 *flags)
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
if (pci_vfs_assigned(bp->pdev)) {
|
||||
if (pci_vfs_assigned(bp->pdev) &&
|
||||
!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET)) {
|
||||
netdev_err(dev,
|
||||
"Reset not allowed when VFs are assigned to VMs\n");
|
||||
return -EBUSY;
|
||||
@ -2994,7 +2999,9 @@ static int bnxt_reset(struct net_device *dev, u32 *flags)
|
||||
|
||||
rc = bnxt_firmware_reset(dev, BNXT_FW_RESET_CHIP);
|
||||
if (!rc) {
|
||||
netdev_info(dev, "Reset request successful. Reload driver to complete reset\n");
|
||||
netdev_info(dev, "Reset request successful.\n");
|
||||
if (!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET))
|
||||
netdev_info(dev, "Reload driver to complete reset\n");
|
||||
*flags = 0;
|
||||
}
|
||||
} else if (*flags == ETH_RESET_AP) {
|
||||
@ -3038,7 +3045,8 @@ static int bnxt_hwrm_dbg_dma_data(struct bnxt *bp, void *msg, int msg_len,
|
||||
mutex_lock(&bp->hwrm_cmd_lock);
|
||||
while (1) {
|
||||
*seq_ptr = cpu_to_le16(seq);
|
||||
rc = _hwrm_send_message(bp, msg, msg_len, HWRM_CMD_TIMEOUT);
|
||||
rc = _hwrm_send_message(bp, msg, msg_len,
|
||||
HWRM_COREDUMP_TIMEOUT);
|
||||
if (rc)
|
||||
break;
|
||||
|
||||
|
@ -176,6 +176,9 @@ struct cmd_nums {
|
||||
#define HWRM_RESERVED6 0x65UL
|
||||
#define HWRM_VNIC_RSS_COS_LB_CTX_ALLOC 0x70UL
|
||||
#define HWRM_VNIC_RSS_COS_LB_CTX_FREE 0x71UL
|
||||
#define HWRM_QUEUE_MPLS_QCAPS 0x80UL
|
||||
#define HWRM_QUEUE_MPLSTC2PRI_QCFG 0x81UL
|
||||
#define HWRM_QUEUE_MPLSTC2PRI_CFG 0x82UL
|
||||
#define HWRM_CFA_L2_FILTER_ALLOC 0x90UL
|
||||
#define HWRM_CFA_L2_FILTER_FREE 0x91UL
|
||||
#define HWRM_CFA_L2_FILTER_CFG 0x92UL
|
||||
@ -208,7 +211,7 @@ struct cmd_nums {
|
||||
#define HWRM_FW_QSTATUS 0xc1UL
|
||||
#define HWRM_FW_HEALTH_CHECK 0xc2UL
|
||||
#define HWRM_FW_SYNC 0xc3UL
|
||||
#define HWRM_FW_STATE_BUFFER_QCAPS 0xc4UL
|
||||
#define HWRM_FW_STATE_QCAPS 0xc4UL
|
||||
#define HWRM_FW_STATE_QUIESCE 0xc5UL
|
||||
#define HWRM_FW_STATE_BACKUP 0xc6UL
|
||||
#define HWRM_FW_STATE_RESTORE 0xc7UL
|
||||
@ -225,8 +228,11 @@ struct cmd_nums {
|
||||
#define HWRM_PORT_PRBS_TEST 0xd5UL
|
||||
#define HWRM_PORT_SFP_SIDEBAND_CFG 0xd6UL
|
||||
#define HWRM_PORT_SFP_SIDEBAND_QCFG 0xd7UL
|
||||
#define HWRM_FW_STATE_UNQUIESCE 0xd8UL
|
||||
#define HWRM_PORT_DSC_DUMP 0xd9UL
|
||||
#define HWRM_TEMP_MONITOR_QUERY 0xe0UL
|
||||
#define HWRM_REG_POWER_QUERY 0xe1UL
|
||||
#define HWRM_CORE_FREQUENCY_QUERY 0xe2UL
|
||||
#define HWRM_WOL_FILTER_ALLOC 0xf0UL
|
||||
#define HWRM_WOL_FILTER_FREE 0xf1UL
|
||||
#define HWRM_WOL_FILTER_QCFG 0xf2UL
|
||||
@ -308,6 +314,7 @@ struct cmd_nums {
|
||||
#define HWRM_ENGINE_STATS_CONFIG 0x155UL
|
||||
#define HWRM_ENGINE_STATS_CLEAR 0x156UL
|
||||
#define HWRM_ENGINE_STATS_QUERY 0x157UL
|
||||
#define HWRM_ENGINE_STATS_QUERY_CONTINUOUS_ERROR 0x158UL
|
||||
#define HWRM_ENGINE_RQ_ALLOC 0x15eUL
|
||||
#define HWRM_ENGINE_RQ_FREE 0x15fUL
|
||||
#define HWRM_ENGINE_CQ_ALLOC 0x160UL
|
||||
@ -390,6 +397,7 @@ struct ret_codes {
|
||||
#define HWRM_ERR_CODE_KEY_HASH_COLLISION 0xdUL
|
||||
#define HWRM_ERR_CODE_KEY_ALREADY_EXISTS 0xeUL
|
||||
#define HWRM_ERR_CODE_HWRM_ERROR 0xfUL
|
||||
#define HWRM_ERR_CODE_BUSY 0x10UL
|
||||
#define HWRM_ERR_CODE_TLV_ENCAPSULATED_RESPONSE 0x8000UL
|
||||
#define HWRM_ERR_CODE_UNKNOWN_ERR 0xfffeUL
|
||||
#define HWRM_ERR_CODE_CMD_NOT_SUPPORTED 0xffffUL
|
||||
@ -420,9 +428,9 @@ struct hwrm_err_output {
|
||||
#define HWRM_TARGET_ID_TOOLS 0xFFFD
|
||||
#define HWRM_VERSION_MAJOR 1
|
||||
#define HWRM_VERSION_MINOR 10
|
||||
#define HWRM_VERSION_UPDATE 0
|
||||
#define HWRM_VERSION_RSVD 100
|
||||
#define HWRM_VERSION_STR "1.10.0.100"
|
||||
#define HWRM_VERSION_UPDATE 1
|
||||
#define HWRM_VERSION_RSVD 12
|
||||
#define HWRM_VERSION_STR "1.10.1.12"
|
||||
|
||||
/* hwrm_ver_get_input (size:192b/24B) */
|
||||
struct hwrm_ver_get_input {
|
||||
@ -637,6 +645,8 @@ struct hwrm_async_event_cmpl {
|
||||
#define ASYNC_EVENT_CMPL_EVENT_ID_EEM_CFG_CHANGE 0x3cUL
|
||||
#define ASYNC_EVENT_CMPL_EVENT_ID_TFLIB_DEFAULT_VNIC_CHANGE 0x3dUL
|
||||
#define ASYNC_EVENT_CMPL_EVENT_ID_TFLIB_LINK_STATUS_CHANGE 0x3eUL
|
||||
#define ASYNC_EVENT_CMPL_EVENT_ID_QUIESCE_DONE 0x3fUL
|
||||
#define ASYNC_EVENT_CMPL_EVENT_ID_DEFERRED_RESPONSE 0x40UL
|
||||
#define ASYNC_EVENT_CMPL_EVENT_ID_FW_TRACE_MSG 0xfeUL
|
||||
#define ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR 0xffUL
|
||||
#define ASYNC_EVENT_CMPL_EVENT_ID_LAST ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR
|
||||
@ -1115,6 +1125,7 @@ struct hwrm_func_qcaps_output {
|
||||
#define FUNC_QCAPS_RESP_FLAGS_EXT_STATS_SUPPORTED 0x1000000UL
|
||||
#define FUNC_QCAPS_RESP_FLAGS_ERR_RECOVER_RELOAD 0x2000000UL
|
||||
#define FUNC_QCAPS_RESP_FLAGS_NOTIFY_VF_DEF_VNIC_CHNG_SUPPORTED 0x4000000UL
|
||||
#define FUNC_QCAPS_RESP_FLAGS_VLAN_ACCELERATION_TX_DISABLED 0x8000000UL
|
||||
u8 mac_address[6];
|
||||
__le16 max_rsscos_ctx;
|
||||
__le16 max_cmpl_rings;
|
||||
@ -1255,7 +1266,8 @@ struct hwrm_func_qcfg_output {
|
||||
u8 unused_1;
|
||||
u8 always_1;
|
||||
__le32 reset_addr_poll;
|
||||
u8 unused_2[3];
|
||||
__le16 legacy_l2_db_size_kb;
|
||||
u8 unused_2[1];
|
||||
u8 valid;
|
||||
};
|
||||
|
||||
@ -1500,6 +1512,7 @@ struct hwrm_func_drv_rgtr_input {
|
||||
#define FUNC_DRV_RGTR_REQ_FLAGS_FLOW_HANDLE_64BIT_MODE 0x8UL
|
||||
#define FUNC_DRV_RGTR_REQ_FLAGS_HOT_RESET_SUPPORT 0x10UL
|
||||
#define FUNC_DRV_RGTR_REQ_FLAGS_ERROR_RECOVERY_SUPPORT 0x20UL
|
||||
#define FUNC_DRV_RGTR_REQ_FLAGS_MASTER_SUPPORT 0x40UL
|
||||
__le32 enables;
|
||||
#define FUNC_DRV_RGTR_REQ_ENABLES_OS_TYPE 0x1UL
|
||||
#define FUNC_DRV_RGTR_REQ_ENABLES_VER 0x2UL
|
||||
@ -1762,7 +1775,7 @@ struct hwrm_func_backing_store_qcaps_input {
|
||||
__le64 resp_addr;
|
||||
};
|
||||
|
||||
/* hwrm_func_backing_store_qcaps_output (size:576b/72B) */
|
||||
/* hwrm_func_backing_store_qcaps_output (size:640b/80B) */
|
||||
struct hwrm_func_backing_store_qcaps_output {
|
||||
__le16 error_code;
|
||||
__le16 req_type;
|
||||
@ -1792,6 +1805,10 @@ struct hwrm_func_backing_store_qcaps_output {
|
||||
__le32 tim_max_entries;
|
||||
__le16 mrav_num_entries_units;
|
||||
u8 tqm_entries_multiple;
|
||||
u8 ctx_kind_initializer;
|
||||
__le32 rsvd;
|
||||
__le16 rsvd1;
|
||||
u8 rsvd2;
|
||||
u8 valid;
|
||||
};
|
||||
|
||||
@ -2524,6 +2541,7 @@ struct hwrm_port_phy_qcfg_output {
|
||||
#define PORT_PHY_QCFG_RESP_MODULE_STATUS_WARNINGMSG 0x2UL
|
||||
#define PORT_PHY_QCFG_RESP_MODULE_STATUS_PWRDOWN 0x3UL
|
||||
#define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTINSERTED 0x4UL
|
||||
#define PORT_PHY_QCFG_RESP_MODULE_STATUS_CURRENTFAULT 0x5UL
|
||||
#define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE 0xffUL
|
||||
#define PORT_PHY_QCFG_RESP_MODULE_STATUS_LAST PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE
|
||||
__le32 preemphasis;
|
||||
@ -2761,8 +2779,8 @@ struct hwrm_port_mac_ptp_qcfg_output {
|
||||
__le16 resp_len;
|
||||
u8 flags;
|
||||
#define PORT_MAC_PTP_QCFG_RESP_FLAGS_DIRECT_ACCESS 0x1UL
|
||||
#define PORT_MAC_PTP_QCFG_RESP_FLAGS_HWRM_ACCESS 0x2UL
|
||||
#define PORT_MAC_PTP_QCFG_RESP_FLAGS_ONE_STEP_TX_TS 0x4UL
|
||||
#define PORT_MAC_PTP_QCFG_RESP_FLAGS_HWRM_ACCESS 0x8UL
|
||||
u8 unused_0[3];
|
||||
__le32 rx_ts_reg_off_lower;
|
||||
__le32 rx_ts_reg_off_upper;
|
||||
@ -3177,10 +3195,12 @@ struct hwrm_port_phy_qcaps_output {
|
||||
__le16 seq_id;
|
||||
__le16 resp_len;
|
||||
u8 flags;
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS_EEE_SUPPORTED 0x1UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS_EXTERNAL_LPBK_SUPPORTED 0x2UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS_RSVD1_MASK 0xfcUL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS_RSVD1_SFT 2
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS_EEE_SUPPORTED 0x1UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS_EXTERNAL_LPBK_SUPPORTED 0x2UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS_AUTONEG_LPBK_SUPPORTED 0x4UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS_SHARED_PHY_CFG_SUPPORTED 0x8UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS_RSVD1_MASK 0xf0UL
|
||||
#define PORT_PHY_QCAPS_RESP_FLAGS_RSVD1_SFT 4
|
||||
u8 port_cnt;
|
||||
#define PORT_PHY_QCAPS_RESP_PORT_CNT_UNKNOWN 0x0UL
|
||||
#define PORT_PHY_QCAPS_RESP_PORT_CNT_1 0x1UL
|
||||
@ -4980,6 +5000,15 @@ struct hwrm_vnic_rss_cfg_output {
|
||||
u8 valid;
|
||||
};
|
||||
|
||||
/* hwrm_vnic_rss_cfg_cmd_err (size:64b/8B) */
|
||||
struct hwrm_vnic_rss_cfg_cmd_err {
|
||||
u8 code;
|
||||
#define VNIC_RSS_CFG_CMD_ERR_CODE_UNKNOWN 0x0UL
|
||||
#define VNIC_RSS_CFG_CMD_ERR_CODE_INTERFACE_NOT_READY 0x1UL
|
||||
#define VNIC_RSS_CFG_CMD_ERR_CODE_LAST VNIC_RSS_CFG_CMD_ERR_CODE_INTERFACE_NOT_READY
|
||||
u8 unused_0[7];
|
||||
};
|
||||
|
||||
/* hwrm_vnic_plcmodes_cfg_input (size:320b/40B) */
|
||||
struct hwrm_vnic_plcmodes_cfg_input {
|
||||
__le16 req_type;
|
||||
@ -5807,7 +5836,7 @@ struct hwrm_cfa_encap_record_free_output {
|
||||
u8 valid;
|
||||
};
|
||||
|
||||
/* hwrm_cfa_ntuple_filter_alloc_input (size:1088b/136B) */
|
||||
/* hwrm_cfa_ntuple_filter_alloc_input (size:1024b/128B) */
|
||||
struct hwrm_cfa_ntuple_filter_alloc_input {
|
||||
__le16 req_type;
|
||||
__le16 cmpl_ring;
|
||||
@ -5815,10 +5844,12 @@ struct hwrm_cfa_ntuple_filter_alloc_input {
|
||||
__le16 target_id;
|
||||
__le64 resp_addr;
|
||||
__le32 flags;
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_LOOPBACK 0x1UL
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DROP 0x2UL
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_METER 0x4UL
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DEST_FID 0x8UL
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_LOOPBACK 0x1UL
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DROP 0x2UL
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_METER 0x4UL
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DEST_FID 0x8UL
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_ARP_REPLY 0x10UL
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_FLAGS_DEST_RFS_RING_IDX 0x20UL
|
||||
__le32 enables;
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_L2_FILTER_ID 0x1UL
|
||||
#define CFA_NTUPLE_FILTER_ALLOC_REQ_ENABLES_ETHERTYPE 0x2UL
|
||||
@ -5887,8 +5918,6 @@ struct hwrm_cfa_ntuple_filter_alloc_input {
|
||||
__be16 dst_port;
|
||||
__be16 dst_port_mask;
|
||||
__le64 ntuple_filter_id_hint;
|
||||
__le16 rfs_ring_tbl_idx;
|
||||
u8 unused_0[6];
|
||||
};
|
||||
|
||||
/* hwrm_cfa_ntuple_filter_alloc_output (size:192b/24B) */
|
||||
@ -5954,7 +5983,8 @@ struct hwrm_cfa_ntuple_filter_cfg_input {
|
||||
#define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_MIRROR_VNIC_ID 0x2UL
|
||||
#define CFA_NTUPLE_FILTER_CFG_REQ_ENABLES_NEW_METER_INSTANCE_ID 0x4UL
|
||||
__le32 flags;
|
||||
#define CFA_NTUPLE_FILTER_CFG_REQ_FLAGS_DEST_FID 0x1UL
|
||||
#define CFA_NTUPLE_FILTER_CFG_REQ_FLAGS_DEST_FID 0x1UL
|
||||
#define CFA_NTUPLE_FILTER_CFG_REQ_FLAGS_DEST_RFS_RING_IDX 0x2UL
|
||||
__le64 ntuple_filter_id;
|
||||
__le32 new_dst_id;
|
||||
__le32 new_mirror_vnic_id;
|
||||
@ -6534,18 +6564,21 @@ struct hwrm_cfa_adv_flow_mgnt_qcaps_output {
|
||||
__le16 seq_id;
|
||||
__le16 resp_len;
|
||||
__le32 flags;
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_HND_16BIT_SUPPORTED 0x1UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_HND_64BIT_SUPPORTED 0x2UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_BATCH_DELETE_SUPPORTED 0x4UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_RESET_ALL_SUPPORTED 0x8UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_DEST_FUNC_SUPPORTED 0x10UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_TX_EEM_FLOW_SUPPORTED 0x20UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RX_EEM_FLOW_SUPPORTED 0x40UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_COUNTER_ALLOC_SUPPORTED 0x80UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RFS_RING_TBL_IDX_SUPPORTED 0x100UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_UNTAGGED_VLAN_SUPPORTED 0x200UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_XDP_SUPPORTED 0x400UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_L2_HEADER_SOURCE_FIELDS_SUPPORTED 0x800UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_HND_16BIT_SUPPORTED 0x1UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_HND_64BIT_SUPPORTED 0x2UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_BATCH_DELETE_SUPPORTED 0x4UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_RESET_ALL_SUPPORTED 0x8UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_DEST_FUNC_SUPPORTED 0x10UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_TX_EEM_FLOW_SUPPORTED 0x20UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RX_EEM_FLOW_SUPPORTED 0x40UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_FLOW_COUNTER_ALLOC_SUPPORTED 0x80UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RFS_RING_TBL_IDX_SUPPORTED 0x100UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_UNTAGGED_VLAN_SUPPORTED 0x200UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_XDP_SUPPORTED 0x400UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_L2_HEADER_SOURCE_FIELDS_SUPPORTED 0x800UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_RX_ARP_SUPPORTED 0x1000UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_RFS_RING_TBL_IDX_V2_SUPPORTED 0x2000UL
|
||||
#define CFA_ADV_FLOW_MGNT_QCAPS_RESP_FLAGS_NTUPLE_FLOW_RX_ETHERTYPE_IP_SUPPORTED 0x4000UL
|
||||
u8 unused_0[3];
|
||||
u8 valid;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user