rdma.c (8be98d2f2a0a262f8bf8a0bc1fdf522b3c7aab17) | rdma.c (fe45e630a1035aea94c29016f2598bbde149bbe3) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * NVMe over Fabrics RDMA target. 4 * Copyright (c) 2015-2016 HGST, a Western Digital Company. 5 */ 6#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 7#include <linux/atomic.h> | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * NVMe over Fabrics RDMA target. 4 * Copyright (c) 2015-2016 HGST, a Western Digital Company. 5 */ 6#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 7#include <linux/atomic.h> |
8#include <linux/blk-integrity.h> |
|
8#include <linux/ctype.h> 9#include <linux/delay.h> 10#include <linux/err.h> 11#include <linux/init.h> 12#include <linux/module.h> 13#include <linux/nvme.h> 14#include <linux/slab.h> 15#include <linux/string.h> --- 1236 unchanged lines hidden (view full) --- 1252 kfree(ndev); 1253out_err: 1254 mutex_unlock(&device_list_mutex); 1255 return NULL; 1256} 1257 1258static int nvmet_rdma_create_queue_ib(struct nvmet_rdma_queue *queue) 1259{ | 9#include <linux/ctype.h> 10#include <linux/delay.h> 11#include <linux/err.h> 12#include <linux/init.h> 13#include <linux/module.h> 14#include <linux/nvme.h> 15#include <linux/slab.h> 16#include <linux/string.h> --- 1236 unchanged lines hidden (view full) --- 1253 kfree(ndev); 1254out_err: 1255 mutex_unlock(&device_list_mutex); 1256 return NULL; 1257} 1258 1259static int nvmet_rdma_create_queue_ib(struct nvmet_rdma_queue *queue) 1260{ |
1260 struct ib_qp_init_attr qp_attr; | 1261 struct ib_qp_init_attr qp_attr = { }; |
1261 struct nvmet_rdma_device *ndev = queue->dev; 1262 int nr_cqe, ret, i, factor; 1263 1264 /* 1265 * Reserve CQ slots for RECV + RDMA_READ/RDMA_WRITE + RDMA_SEND. 1266 */ 1267 nr_cqe = queue->recv_queue_size + 2 * queue->send_queue_size; 1268 1269 queue->cq = ib_cq_pool_get(ndev->device, nr_cqe + 1, 1270 queue->comp_vector, IB_POLL_WORKQUEUE); 1271 if (IS_ERR(queue->cq)) { 1272 ret = PTR_ERR(queue->cq); 1273 pr_err("failed to create CQ cqe= %d ret= %d\n", 1274 nr_cqe + 1, ret); 1275 goto out; 1276 } 1277 | 1262 struct nvmet_rdma_device *ndev = queue->dev; 1263 int nr_cqe, ret, i, factor; 1264 1265 /* 1266 * Reserve CQ slots for RECV + RDMA_READ/RDMA_WRITE + RDMA_SEND. 1267 */ 1268 nr_cqe = queue->recv_queue_size + 2 * queue->send_queue_size; 1269 1270 queue->cq = ib_cq_pool_get(ndev->device, nr_cqe + 1, 1271 queue->comp_vector, IB_POLL_WORKQUEUE); 1272 if (IS_ERR(queue->cq)) { 1273 ret = PTR_ERR(queue->cq); 1274 pr_err("failed to create CQ cqe= %d ret= %d\n", 1275 nr_cqe + 1, ret); 1276 goto out; 1277 } 1278 |
1278 memset(&qp_attr, 0, sizeof(qp_attr)); | |
1279 qp_attr.qp_context = queue; 1280 qp_attr.event_handler = nvmet_rdma_qp_event; 1281 qp_attr.send_cq = queue->cq; 1282 qp_attr.recv_cq = queue->cq; 1283 qp_attr.sq_sig_type = IB_SIGNAL_REQ_WR; 1284 qp_attr.qp_type = IB_QPT_RC; 1285 /* +1 for drain */ 1286 qp_attr.cap.max_send_wr = queue->send_queue_size + 1; --- 779 unchanged lines hidden --- | 1279 qp_attr.qp_context = queue; 1280 qp_attr.event_handler = nvmet_rdma_qp_event; 1281 qp_attr.send_cq = queue->cq; 1282 qp_attr.recv_cq = queue->cq; 1283 qp_attr.sq_sig_type = IB_SIGNAL_REQ_WR; 1284 qp_attr.qp_type = IB_QPT_RC; 1285 /* +1 for drain */ 1286 qp_attr.cap.max_send_wr = queue->send_queue_size + 1; --- 779 unchanged lines hidden --- |