mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 20:02:17 +00:00
i40iw: Correct CQ arming
CQ is armed for solicited events only, ignoring other notification flags. Correct this by arming for next and arming for solicited event if IB_CQ_SOLICITED is set. Also protect CQ shadow area update with spinlock. Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
61c78eea95
commit
747f1c6d9b
1 changed files with 6 additions and 3 deletions
|
@ -2327,13 +2327,16 @@ static int i40iw_req_notify_cq(struct ib_cq *ibcq,
|
|||
{
|
||||
struct i40iw_cq *iwcq;
|
||||
struct i40iw_cq_uk *ukcq;
|
||||
enum i40iw_completion_notify cq_notify = IW_CQ_COMPL_SOLICITED;
|
||||
unsigned long flags;
|
||||
enum i40iw_completion_notify cq_notify = IW_CQ_COMPL_EVENT;
|
||||
|
||||
iwcq = (struct i40iw_cq *)ibcq;
|
||||
ukcq = &iwcq->sc_cq.cq_uk;
|
||||
if (notify_flags == IB_CQ_NEXT_COMP)
|
||||
cq_notify = IW_CQ_COMPL_EVENT;
|
||||
if (notify_flags == IB_CQ_SOLICITED)
|
||||
cq_notify = IW_CQ_COMPL_SOLICITED;
|
||||
spin_lock_irqsave(&iwcq->lock, flags);
|
||||
ukcq->ops.iw_cq_request_notification(ukcq, cq_notify);
|
||||
spin_unlock_irqrestore(&iwcq->lock, flags);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue