diff options
author | Mike Marciniszyn <mike.marciniszyn@qlogic.com> | 2011-09-23 13:17:00 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2011-10-21 12:38:57 -0400 |
commit | 9fd5473deb421eb7e5575a5f9d7e43ca67c04fe9 (patch) | |
tree | cf4314fee9e1e4f501ac1114ed200c004ebadf91 /drivers/infiniband/hw/qib/qib_rc.c | |
parent | d0f2faf72d51dacf5c5e8dec7dca22d0395896e2 (diff) |
IB/qib: Remove s_lock around header validation
Review of qib_ruc_check_hdr() shows that the s_lock is not required in
the normal case. The r_lock is held in all cases, and protects the qp
fields that are read.
The s_lock will be needed to around the call to qib_migrate_qp() to
insure that the send engine sees a consistent set of fields.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_rc.c')
-rw-r--r-- | drivers/infiniband/hw/qib/qib_rc.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/qib/qib_rc.c b/drivers/infiniband/hw/qib/qib_rc.c index ecfa087ad45e..afaf4ac79f42 100644 --- a/drivers/infiniband/hw/qib/qib_rc.c +++ b/drivers/infiniband/hw/qib/qib_rc.c | |||
@@ -1889,10 +1889,8 @@ void qib_rc_rcv(struct qib_ctxtdata *rcd, struct qib_ib_header *hdr, | |||
1889 | } | 1889 | } |
1890 | 1890 | ||
1891 | opcode = be32_to_cpu(ohdr->bth[0]); | 1891 | opcode = be32_to_cpu(ohdr->bth[0]); |
1892 | spin_lock_irqsave(&qp->s_lock, flags); | ||
1893 | if (qib_ruc_check_hdr(ibp, hdr, has_grh, qp, opcode)) | 1892 | if (qib_ruc_check_hdr(ibp, hdr, has_grh, qp, opcode)) |
1894 | goto sunlock; | 1893 | return; |
1895 | spin_unlock_irqrestore(&qp->s_lock, flags); | ||
1896 | 1894 | ||
1897 | psn = be32_to_cpu(ohdr->bth[2]); | 1895 | psn = be32_to_cpu(ohdr->bth[2]); |
1898 | opcode >>= 24; | 1896 | opcode >>= 24; |