net: hns3: Prevent sending command during global or core reset
According to hardware's description, driver should not send command to IMP while hardware doing global or core reset. Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: Peng Li <lipeng321@huawei.com> Signed-off-by: Salil Mehta <salil.mehta@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a754e5c4ed
commit
8d40854fc1
|
@ -206,7 +206,8 @@ int hclge_cmd_send(struct hclge_hw *hw, struct hclge_desc *desc, int num)
|
|||
|
||||
spin_lock_bh(&hw->cmq.csq.lock);
|
||||
|
||||
if (num > hclge_ring_space(&hw->cmq.csq)) {
|
||||
if (num > hclge_ring_space(&hw->cmq.csq) ||
|
||||
test_bit(HCLGE_STATE_CMD_DISABLE, &hdev->state)) {
|
||||
spin_unlock_bh(&hw->cmq.csq.lock);
|
||||
return -EBUSY;
|
||||
}
|
||||
|
@ -346,6 +347,7 @@ int hclge_cmd_init(struct hclge_dev *hdev)
|
|||
spin_lock_init(&hdev->hw.cmq.crq.lock);
|
||||
|
||||
hclge_cmd_init_regs(&hdev->hw);
|
||||
clear_bit(HCLGE_STATE_CMD_DISABLE, &hdev->state);
|
||||
|
||||
ret = hclge_cmd_query_firmware_version(&hdev->hw, &version);
|
||||
if (ret) {
|
||||
|
|
|
@ -2507,12 +2507,14 @@ static u32 hclge_check_event_cause(struct hclge_dev *hdev, u32 *clearval)
|
|||
|
||||
/* check for vector0 reset event sources */
|
||||
if (BIT(HCLGE_VECTOR0_GLOBALRESET_INT_B) & rst_src_reg) {
|
||||
set_bit(HCLGE_STATE_CMD_DISABLE, &hdev->state);
|
||||
set_bit(HNAE3_GLOBAL_RESET, &hdev->reset_pending);
|
||||
*clearval = BIT(HCLGE_VECTOR0_GLOBALRESET_INT_B);
|
||||
return HCLGE_VECTOR0_EVENT_RST;
|
||||
}
|
||||
|
||||
if (BIT(HCLGE_VECTOR0_CORERESET_INT_B) & rst_src_reg) {
|
||||
set_bit(HCLGE_STATE_CMD_DISABLE, &hdev->state);
|
||||
set_bit(HNAE3_CORE_RESET, &hdev->reset_pending);
|
||||
*clearval = BIT(HCLGE_VECTOR0_CORERESET_INT_B);
|
||||
return HCLGE_VECTOR0_EVENT_RST;
|
||||
|
|
|
@ -128,6 +128,7 @@ enum HCLGE_DEV_STATE {
|
|||
HCLGE_STATE_MBX_SERVICE_SCHED,
|
||||
HCLGE_STATE_MBX_HANDLING,
|
||||
HCLGE_STATE_STATISTICS_UPDATING,
|
||||
HCLGE_STATE_CMD_DISABLE,
|
||||
HCLGE_STATE_MAX
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue