فهرست منبع

RDMA/cxgb3: Mark QP as privileged based on user capabilities

This is needed to support zero-stag properly.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Steve Wise 17 سال پیش
والد
کامیت
c6b5b50474
2فایلهای تغییر یافته به همراه3 افزوده شده و 1 حذف شده
  1. 2 1
      drivers/infiniband/hw/cxgb3/cxio_wr.h
  2. 1 0
      drivers/infiniband/hw/cxgb3/iwch_qp.c

+ 2 - 1
drivers/infiniband/hw/cxgb3/cxio_wr.h

@@ -324,7 +324,8 @@ struct t3_genbit {
 };
 };
 
 
 enum rdma_init_wr_flags {
 enum rdma_init_wr_flags {
-	RECVS_POSTED = 1,
+	RECVS_POSTED = (1<<0),
+	PRIV_QP = (1<<1),
 };
 };
 
 
 union t3_wr {
 union t3_wr {

+ 1 - 0
drivers/infiniband/hw/cxgb3/iwch_qp.c

@@ -717,6 +717,7 @@ static int rdma_init(struct iwch_dev *rhp, struct iwch_qp *qhp,
 	init_attr.qp_dma_addr = qhp->wq.dma_addr;
 	init_attr.qp_dma_addr = qhp->wq.dma_addr;
 	init_attr.qp_dma_size = (1UL << qhp->wq.size_log2);
 	init_attr.qp_dma_size = (1UL << qhp->wq.size_log2);
 	init_attr.flags = rqes_posted(qhp) ? RECVS_POSTED : 0;
 	init_attr.flags = rqes_posted(qhp) ? RECVS_POSTED : 0;
+	init_attr.flags |= capable(CAP_NET_BIND_SERVICE) ? PRIV_QP : 0;
 	init_attr.irs = qhp->ep->rcv_seq;
 	init_attr.irs = qhp->ep->rcv_seq;
 	PDBG("%s init_attr.rq_addr 0x%x init_attr.rq_size = %d "
 	PDBG("%s init_attr.rq_addr 0x%x init_attr.rq_size = %d "
 	     "flags 0x%x qpcaps 0x%x\n", __FUNCTION__,
 	     "flags 0x%x qpcaps 0x%x\n", __FUNCTION__,