mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
net: hns3: bugfix for the initialization of command queue's spin lock
[ Upstream commitb2f74dbaf1] The spin lock of the command queue only need to be initialized once when the driver initializes the command queue. It is not necessary to initialize the spin lock when resetting. At the same time, the modification of the queue member should be performed after acquiring the lock. Fixes:3efb960f05("net: hns3: Refactor the initialization of command queue") Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
355ec07561
commit
91a52a4419
@@ -304,6 +304,10 @@ int hclge_cmd_queue_init(struct hclge_dev *hdev)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Setup the lock for command queue */
|
||||
spin_lock_init(&hdev->hw.cmq.csq.lock);
|
||||
spin_lock_init(&hdev->hw.cmq.crq.lock);
|
||||
|
||||
/* Setup the queue entries for use cmd queue */
|
||||
hdev->hw.cmq.csq.desc_num = HCLGE_NIC_CMQ_DESC_NUM;
|
||||
hdev->hw.cmq.crq.desc_num = HCLGE_NIC_CMQ_DESC_NUM;
|
||||
@@ -337,18 +341,20 @@ int hclge_cmd_init(struct hclge_dev *hdev)
|
||||
u32 version;
|
||||
int ret;
|
||||
|
||||
spin_lock_bh(&hdev->hw.cmq.csq.lock);
|
||||
spin_lock_bh(&hdev->hw.cmq.crq.lock);
|
||||
|
||||
hdev->hw.cmq.csq.next_to_clean = 0;
|
||||
hdev->hw.cmq.csq.next_to_use = 0;
|
||||
hdev->hw.cmq.crq.next_to_clean = 0;
|
||||
hdev->hw.cmq.crq.next_to_use = 0;
|
||||
|
||||
/* Setup the lock for command queue */
|
||||
spin_lock_init(&hdev->hw.cmq.csq.lock);
|
||||
spin_lock_init(&hdev->hw.cmq.crq.lock);
|
||||
|
||||
hclge_cmd_init_regs(&hdev->hw);
|
||||
clear_bit(HCLGE_STATE_CMD_DISABLE, &hdev->state);
|
||||
|
||||
spin_unlock_bh(&hdev->hw.cmq.crq.lock);
|
||||
spin_unlock_bh(&hdev->hw.cmq.csq.lock);
|
||||
|
||||
ret = hclge_cmd_query_firmware_version(&hdev->hw, &version);
|
||||
if (ret) {
|
||||
dev_err(&hdev->pdev->dev,
|
||||
|
||||
Reference in New Issue
Block a user