Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12edfdfc authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'hns3-error-handling'



Salil Mehta says:

====================
net: hns3: Additions/optimizations related to HNS3 H/W err handling

This patch set primarily does following addtions and optimizations
related to error handling in HNS3 Ethernet driver:

 1. Name changes for enable and process functions and minor loop
    optimizations. [PATCH 1-6]
 2. Modify query and clearing of RAS errors using new set of commands
    because modules specific commands for clearing RCB PPP PF, SSU are
    obselete. [PATCH 7]
 3. Deletes logging 1-bit errors for RAS in HNS3 driver as these never
    get reported to the driver. [PATCH 8]
 4. Add handling of NIC hw errors reported through MSIx rather than
    PCIe AER channel. [PATCH 9]
 5. Add handling for the HW RAS and MSIx errors in the modules MAC, PPP
    PF, MSIx SRAM, RCB and SSU. [PATCH 10-13]
 6. Add handling of RoCEE RAS errors. [PATCH 14]
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 9f4c2cff 630ba007
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -136,6 +136,7 @@ enum hnae3_reset_type {
	HNAE3_CORE_RESET,
	HNAE3_GLOBAL_RESET,
	HNAE3_IMP_RESET,
	HNAE3_UNKNOWN_RESET,
	HNAE3_NONE_RESET,
};

@@ -454,7 +455,7 @@ struct hnae3_ae_ops {
	int (*restore_fd_rules)(struct hnae3_handle *handle);
	void (*enable_fd)(struct hnae3_handle *handle, bool enable);
	int (*dbg_run_cmd)(struct hnae3_handle *handle, char *cmd_buf);
	pci_ers_result_t (*process_hw_error)(struct hnae3_ae_dev *ae_dev);
	pci_ers_result_t (*handle_hw_ras_error)(struct hnae3_ae_dev *ae_dev);
	bool (*get_hw_reset_stat)(struct hnae3_handle *handle);
	bool (*ae_dev_resetting)(struct hnae3_handle *handle);
	unsigned long (*ae_dev_reset_cnt)(struct hnae3_handle *handle);
+2 −2
Original line number Diff line number Diff line
@@ -1828,8 +1828,8 @@ static pci_ers_result_t hns3_error_detected(struct pci_dev *pdev,
		return PCI_ERS_RESULT_NONE;
	}

	if (ae_dev->ops->process_hw_error)
		ret = ae_dev->ops->process_hw_error(ae_dev);
	if (ae_dev->ops->handle_hw_ras_error)
		ret = ae_dev->ops->handle_hw_ras_error(ae_dev);
	else
		return PCI_ERS_RESULT_NONE;

+15 −12
Original line number Diff line number Diff line
@@ -215,26 +215,29 @@ enum hclge_opcode_type {
	HCLGE_OPC_SFP_GET_SPEED		= 0x7104,

	/* Error INT commands */
	HCLGE_MAC_COMMON_INT_EN		= 0x030E,
	HCLGE_TM_SCH_ECC_INT_EN		= 0x0829,
	HCLGE_TM_SCH_ECC_ERR_RINT_CMD	= 0x082d,
	HCLGE_TM_SCH_ECC_ERR_RINT_CE	= 0x082f,
	HCLGE_TM_SCH_ECC_ERR_RINT_NFE	= 0x0830,
	HCLGE_TM_SCH_ECC_ERR_RINT_FE	= 0x0831,
	HCLGE_TM_SCH_MBIT_ECC_INFO_CMD	= 0x0833,
	HCLGE_SSU_ECC_INT_CMD		= 0x0989,
	HCLGE_SSU_COMMON_INT_CMD	= 0x098C,
	HCLGE_PPU_MPF_ECC_INT_CMD	= 0x0B40,
	HCLGE_PPU_MPF_OTHER_INT_CMD	= 0x0B41,
	HCLGE_PPU_PF_OTHER_INT_CMD	= 0x0B42,
	HCLGE_COMMON_ECC_INT_CFG	= 0x1505,
	HCLGE_IGU_EGU_TNL_INT_QUERY	= 0x1802,
	HCLGE_QUERY_RAS_INT_STS_BD_NUM	= 0x1510,
	HCLGE_QUERY_CLEAR_MPF_RAS_INT	= 0x1511,
	HCLGE_QUERY_CLEAR_PF_RAS_INT	= 0x1512,
	HCLGE_QUERY_MSIX_INT_STS_BD_NUM	= 0x1513,
	HCLGE_QUERY_CLEAR_ALL_MPF_MSIX_INT	= 0x1514,
	HCLGE_QUERY_CLEAR_ALL_PF_MSIX_INT	= 0x1515,
	HCLGE_CONFIG_ROCEE_RAS_INT_EN	= 0x1580,
	HCLGE_QUERY_CLEAR_ROCEE_RAS_INT = 0x1581,
	HCLGE_ROCEE_PF_RAS_INT_CMD	= 0x1584,
	HCLGE_IGU_EGU_TNL_INT_EN	= 0x1803,
	HCLGE_IGU_EGU_TNL_INT_CLR	= 0x1804,
	HCLGE_IGU_COMMON_INT_QUERY	= 0x1805,
	HCLGE_IGU_COMMON_INT_EN		= 0x1806,
	HCLGE_IGU_COMMON_INT_CLR	= 0x1807,
	HCLGE_TM_QCN_MEM_INT_CFG	= 0x1A14,
	HCLGE_TM_QCN_MEM_INT_INFO_CMD	= 0x1A17,
	HCLGE_PPP_CMD0_INT_CMD		= 0x2100,
	HCLGE_PPP_CMD1_INT_CMD		= 0x2101,
	HCLGE_NCSI_INT_QUERY		= 0x2400,
	HCLGE_NCSI_INT_EN		= 0x2401,
	HCLGE_NCSI_INT_CLR		= 0x2402,
};

#define HCLGE_TQP_REG_OFFSET		0x80000
Loading