aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/qib/qib_rc.c
diff options
context:
space:
mode:
authorMike Marciniszyn <mike.marciniszyn@qlogic.com>2011-09-23 13:17:00 -0400
committerRoland Dreier <roland@purestorage.com>2011-10-21 12:38:57 -0400
commit9fd5473deb421eb7e5575a5f9d7e43ca67c04fe9 (patch)
treecf4314fee9e1e4f501ac1114ed200c004ebadf91 /drivers/infiniband/hw/qib/qib_rc.c
parentd0f2faf72d51dacf5c5e8dec7dca22d0395896e2 (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.c4
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;