提交 b8997cfb 编写于 作者: C Chiqijun 提交者: Yang Yingliang

net/hinic: Add lock for mgmt channel event_flag

driver inclusion
category: bugfix
bugzilla: 4472

-----------------------------------------------------------------------

event_flag in struct hinic_msg_pf_to_mgmt marks the sending status of
the message, add lock for mgmt channel event_flag in
hinic_force_complete_all.
Signed-off-by: NChiqijun <chiqijun@huawei.com>
Reviewed-by: NZengweiliang <zengweiliang.zengweiliang@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 4e8d3889
......@@ -780,10 +780,12 @@ void hinic_force_complete_all(void *hwdev)
if (hinic_func_type(dev) != TYPE_VF &&
hinic_is_hwdev_mod_inited(dev, HINIC_HWDEV_MGMT_INITED)) {
recv_resp_msg = &dev->pf_to_mgmt->recv_resp_msg_from_mgmt;
spin_lock_bh(&dev->pf_to_mgmt->sync_event_lock);
if (dev->pf_to_mgmt->event_flag == SEND_EVENT_START) {
complete(&recv_resp_msg->recv_done);
dev->pf_to_mgmt->event_flag = SEND_EVENT_TIMEOUT;
}
spin_unlock_bh(&dev->pf_to_mgmt->sync_event_lock);
}
/* only flush sync cmdq to avoid blocking remove */
......
......@@ -80,9 +80,9 @@
static void pf_to_mgmt_send_event_set(struct hinic_msg_pf_to_mgmt *pf_to_mgmt,
int event_flag)
{
spin_lock(&pf_to_mgmt->sync_event_lock);
spin_lock_bh(&pf_to_mgmt->sync_event_lock);
pf_to_mgmt->event_flag = event_flag;
spin_unlock(&pf_to_mgmt->sync_event_lock);
spin_unlock_bh(&pf_to_mgmt->sync_event_lock);
}
/**
......@@ -1085,7 +1085,7 @@ static void mgmt_resp_msg_handler(struct hinic_msg_pf_to_mgmt *pf_to_mgmt,
if (recv_msg->msg_id & ASYNC_MSG_FLAG)
return;
spin_lock(&pf_to_mgmt->sync_event_lock);
spin_lock_bh(&pf_to_mgmt->sync_event_lock);
if (recv_msg->msg_id == pf_to_mgmt->sync_msg_id &&
pf_to_mgmt->event_flag == SEND_EVENT_START) {
complete(&recv_msg->recv_done);
......@@ -1098,7 +1098,7 @@ static void mgmt_resp_msg_handler(struct hinic_msg_pf_to_mgmt *pf_to_mgmt,
pf_to_mgmt->sync_msg_id, recv_msg->msg_id,
pf_to_mgmt->event_flag);
}
spin_unlock(&pf_to_mgmt->sync_event_lock);
spin_unlock_bh(&pf_to_mgmt->sync_event_lock);
}
static void recv_mgmt_msg_work_handler(struct work_struct *work)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册