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 ---