crypto/openssl/crypto/threads_pthread.c
195
struct rcu_qp *qp;
crypto/openssl/crypto/threads_pthread.c
325
if (data->thread_qps[i].qp == NULL && available_qp == -1)
crypto/openssl/crypto/threads_pthread.c
339
data->thread_qps[available_qp].qp = get_hold_current_qp(lock);
crypto/openssl/crypto/threads_pthread.c
362
ret = ATOMIC_SUB_FETCH(&data->thread_qps[i].qp->users,
crypto/openssl/crypto/threads_pthread.c
365
data->thread_qps[i].qp = NULL;
crypto/openssl/crypto/threads_pthread.c
428
static void retire_qp(CRYPTO_RCU_LOCK *lock, struct rcu_qp *qp)
crypto/openssl/crypto/threads_pthread.c
459
struct rcu_qp *qp;
crypto/openssl/crypto/threads_pthread.c
469
qp = update_qp(lock, &curr_id);
crypto/openssl/crypto/threads_pthread.c
486
count = ATOMIC_LOAD_N(uint64_t, &qp->users, __ATOMIC_ACQUIRE);
crypto/openssl/crypto/threads_pthread.c
493
retire_qp(lock, qp);
crypto/openssl/crypto/threads_win.c
249
if (data->thread_qps[i].qp == NULL && available_qp == -1)
crypto/openssl/crypto/threads_win.c
261
data->thread_qps[available_qp].qp = get_hold_current_qp(lock);
crypto/openssl/crypto/threads_win.c
289
CRYPTO_atomic_add64(&data->thread_qps[i].qp->users,
crypto/openssl/crypto/threads_win.c
293
data->thread_qps[i].qp = NULL;
crypto/openssl/crypto/threads_win.c
349
struct rcu_qp *qp)
crypto/openssl/crypto/threads_win.c
359
struct rcu_qp *qp;
crypto/openssl/crypto/threads_win.c
370
qp = update_qp(lock, &curr_id);
crypto/openssl/crypto/threads_win.c
379
CRYPTO_atomic_load(&qp->users, &count, lock->rw_lock);
crypto/openssl/crypto/threads_win.c
386
retire_qp(lock, qp);
crypto/openssl/crypto/threads_win.c
57
struct rcu_qp *qp;
lib/libc/net/gethostbydns.c
571
char qbuf[MAXDNAME+1], *qp;
lib/libc/net/gethostbydns.c
610
qp = qbuf;
lib/libc/net/gethostbydns.c
612
qp += SPRINTF((qp, "%x.%x.",
lib/libnvmf/internal.h
115
int nvmf_kernel_handoff_params(struct nvmf_qpair *qp, nvlist_t **nvlp);
lib/libnvmf/internal.h
116
int nvmf_populate_dle(struct nvmf_qpair *qp,
lib/libnvmf/internal.h
25
void (*free_qpair)(struct nvmf_qpair *qp);
lib/libnvmf/internal.h
28
void (*kernel_handoff_params)(struct nvmf_qpair *qp, nvlist_t *nvl);
lib/libnvmf/internal.h
29
int (*populate_dle)(struct nvmf_qpair *qp,
lib/libnvmf/internal.h
33
struct nvmf_capsule *(*allocate_capsule)(struct nvmf_qpair *qp);
lib/libnvmf/internal.h
36
int (*receive_capsule)(struct nvmf_qpair *qp,
lib/libnvmf/libnvmf.h
101
struct nvmf_capsule *nvmf_allocate_command(struct nvmf_qpair *qp,
lib/libnvmf/libnvmf.h
103
struct nvmf_capsule *nvmf_allocate_response(struct nvmf_qpair *qp,
lib/libnvmf/libnvmf.h
109
int nvmf_receive_capsule(struct nvmf_qpair *qp, struct nvmf_capsule **ncp);
lib/libnvmf/libnvmf.h
178
int nvmf_controller_receive_capsule(struct nvmf_qpair *qp,
lib/libnvmf/libnvmf.h
222
uint64_t nvmf_controller_cap(struct nvmf_qpair *qp);
lib/libnvmf/libnvmf.h
231
void nvmf_init_discovery_controller_data(struct nvmf_qpair *qp,
lib/libnvmf/libnvmf.h
238
void nvmf_init_io_controller_data(struct nvmf_qpair *qp, const char *serial,
lib/libnvmf/libnvmf.h
246
bool nvmf_validate_cc(struct nvmf_qpair *qp, uint64_t cap, uint32_t old_cc,
lib/libnvmf/libnvmf.h
259
int nvmf_handoff_controller_qpair(struct nvmf_qpair *qp,
lib/libnvmf/libnvmf.h
275
uint16_t nvmf_cntlid(struct nvmf_qpair *qp);
lib/libnvmf/libnvmf.h
287
int nvmf_host_receive_response(struct nvmf_qpair *qp,
lib/libnvmf/libnvmf.h
298
struct nvmf_capsule *nvmf_keepalive(struct nvmf_qpair *qp);
lib/libnvmf/libnvmf.h
301
int nvmf_read_property(struct nvmf_qpair *qp, uint32_t offset, uint8_t size,
lib/libnvmf/libnvmf.h
305
int nvmf_write_property(struct nvmf_qpair *qp, uint32_t offset,
lib/libnvmf/libnvmf.h
315
int nvmf_host_identify_controller(struct nvmf_qpair *qp,
lib/libnvmf/libnvmf.h
319
int nvmf_host_identify_namespace(struct nvmf_qpair *qp, uint32_t nsid,
lib/libnvmf/libnvmf.h
327
int nvmf_host_fetch_discovery_log_page(struct nvmf_qpair *qp,
lib/libnvmf/libnvmf.h
334
int nvmf_init_dle_from_admin_qp(struct nvmf_qpair *qp,
lib/libnvmf/libnvmf.h
343
int nvmf_host_request_queues(struct nvmf_qpair *qp, u_int requested,
lib/libnvmf/libnvmf.h
92
void nvmf_free_qpair(struct nvmf_qpair *qp);
lib/libnvmf/nvmf_controller.c
101
error = nvmf_receive_capsule(qp, &nc);
lib/libnvmf/nvmf_controller.c
119
struct nvmf_qpair *qp = nc->nc_qpair;
lib/libnvmf/nvmf_controller.c
122
if (qp->nq_flow_control) {
lib/libnvmf/nvmf_controller.c
123
qp->nq_sqhd = (qp->nq_sqhd + 1) % qp->nq_qsize;
lib/libnvmf/nvmf_controller.c
124
nc->nc_cqe.sqhd = htole16(qp->nq_sqhd);
lib/libnvmf/nvmf_controller.c
193
struct nvmf_qpair *qp;
lib/libnvmf/nvmf_controller.c
200
qp = NULL;
lib/libnvmf/nvmf_controller.c
210
qp = nvmf_allocate_qpair(na, params);
lib/libnvmf/nvmf_controller.c
211
if (qp == NULL)
lib/libnvmf/nvmf_controller.c
215
error = nvmf_receive_capsule(qp, &cc);
lib/libnvmf/nvmf_controller.c
258
qp->nq_admin = true;
lib/libnvmf/nvmf_controller.c
286
qp->nq_admin = false;
lib/libnvmf/nvmf_controller.c
288
qp->nq_qsize = qsize;
lib/libnvmf/nvmf_controller.c
366
qp->nq_flow_control = true;
lib/libnvmf/nvmf_controller.c
368
qp->nq_flow_control = false;
lib/libnvmf/nvmf_controller.c
369
qp->nq_sqhd = 0;
lib/libnvmf/nvmf_controller.c
370
qp->nq_kato = le32toh(cmd->kato);
lib/libnvmf/nvmf_controller.c
372
return (qp);
lib/libnvmf/nvmf_controller.c
380
if (qp != NULL)
lib/libnvmf/nvmf_controller.c
381
nvmf_free_qpair(qp);
lib/libnvmf/nvmf_controller.c
389
struct nvmf_qpair *qp = cc->nc_qpair;
lib/libnvmf/nvmf_controller.c
394
if (qp->nq_flow_control)
lib/libnvmf/nvmf_controller.c
395
rsp.sqhd = htole16(qp->nq_sqhd);
lib/libnvmf/nvmf_controller.c
399
rc = nvmf_allocate_response(qp, &rsp);
lib/libnvmf/nvmf_controller.c
405
qp->nq_cntlid = cntlid;
lib/libnvmf/nvmf_controller.c
410
nvmf_controller_cap(struct nvmf_qpair *qp)
lib/libnvmf/nvmf_controller.c
412
const struct nvmf_association *na = qp->nq_association;
lib/libnvmf/nvmf_controller.c
419
nvmf_validate_cc(struct nvmf_qpair *qp, uint64_t cap, uint32_t old_cc,
lib/libnvmf/nvmf_controller.c
422
const struct nvmf_association *na = qp->nq_association;
lib/libnvmf/nvmf_controller.c
429
nvmf_init_discovery_controller_data(struct nvmf_qpair *qp,
lib/libnvmf/nvmf_controller.c
432
const struct nvmf_association *na = qp->nq_association;
lib/libnvmf/nvmf_controller.c
450
cdata->ctrlr_id = htole16(qp->nq_cntlid);
lib/libnvmf/nvmf_controller.c
469
nvmf_init_io_controller_data(struct nvmf_qpair *qp, const char *serial,
lib/libnvmf/nvmf_controller.c
473
const struct nvmf_association *na = qp->nq_association;
lib/libnvmf/nvmf_controller.c
479
_nvmf_init_io_controller_data(qp->nq_cntlid, na->na_params.max_io_qsize,
lib/libnvmf/nvmf_controller.c
509
nvmf_handoff_controller_qpair(struct nvmf_qpair *qp,
lib/libnvmf/nvmf_controller.c
516
error = nvmf_kernel_handoff_params(qp, &nvl_qp);
lib/libnvmf/nvmf_controller.c
521
nvlist_add_number(nvl, "trtype", qp->nq_association->na_trtype);
lib/libnvmf/nvmf_controller.c
93
nvmf_controller_receive_capsule(struct nvmf_qpair *qp,
lib/libnvmf/nvmf_host.c
101
cc = nvmf_allocate_command(qp, &cmd);
lib/libnvmf/nvmf_host.c
128
error = nvmf_receive_capsule(qp, &rc);
lib/libnvmf/nvmf_host.c
164
qp->nq_flow_control = false;
lib/libnvmf/nvmf_host.c
166
qp->nq_flow_control = true;
lib/libnvmf/nvmf_host.c
167
qp->nq_sqhd = sqhd;
lib/libnvmf/nvmf_host.c
168
qp->nq_sqtail = sqhd;
lib/libnvmf/nvmf_host.c
176
qp->nq_qsize = queue_size;
lib/libnvmf/nvmf_host.c
177
qp->nq_cntlid = le16toh(rsp->status_code_specific.success.cntlid);
lib/libnvmf/nvmf_host.c
178
qp->nq_kato = kato;
lib/libnvmf/nvmf_host.c
180
return (qp);
lib/libnvmf/nvmf_host.c
187
if (qp != NULL)
lib/libnvmf/nvmf_host.c
188
nvmf_free_qpair(qp);
lib/libnvmf/nvmf_host.c
193
nvmf_cntlid(struct nvmf_qpair *qp)
lib/libnvmf/nvmf_host.c
195
return (qp->nq_cntlid);
lib/libnvmf/nvmf_host.c
201
struct nvmf_qpair *qp = nc->nc_qpair;
lib/libnvmf/nvmf_host.c
206
new_sqtail = (qp->nq_sqtail + 1) % qp->nq_qsize;
lib/libnvmf/nvmf_host.c
207
if (new_sqtail == qp->nq_sqhd)
lib/libnvmf/nvmf_host.c
210
nc->nc_sqe.cid = htole16(qp->nq_cid);
lib/libnvmf/nvmf_host.c
213
qp->nq_cid++;
lib/libnvmf/nvmf_host.c
214
if (qp->nq_cid == 0xFFFF)
lib/libnvmf/nvmf_host.c
215
qp->nq_cid = 0;
lib/libnvmf/nvmf_host.c
221
qp->nq_sqtail = new_sqtail;
lib/libnvmf/nvmf_host.c
227
nvmf_host_receive_capsule(struct nvmf_qpair *qp, struct nvmf_capsule **ncp)
lib/libnvmf/nvmf_host.c
233
if (qp->nq_sqhd == qp->nq_sqtail)
lib/libnvmf/nvmf_host.c
236
error = nvmf_receive_capsule(qp, &nc);
lib/libnvmf/nvmf_host.c
240
if (qp->nq_flow_control) {
lib/libnvmf/nvmf_host.c
242
qp->nq_sqhd = le16toh(nc->nc_cqe.sqhd);
lib/libnvmf/nvmf_host.c
249
qp->nq_sqhd = (qp->nq_sqhd + 1) % qp->nq_qsize;
lib/libnvmf/nvmf_host.c
256
nvmf_host_receive_response(struct nvmf_qpair *qp, struct nvmf_capsule **ncp)
lib/libnvmf/nvmf_host.c
261
if (!TAILQ_EMPTY(&qp->nq_rx_capsules)) {
lib/libnvmf/nvmf_host.c
262
nc = TAILQ_FIRST(&qp->nq_rx_capsules);
lib/libnvmf/nvmf_host.c
263
TAILQ_REMOVE(&qp->nq_rx_capsules, nc, nc_link);
lib/libnvmf/nvmf_host.c
268
return (nvmf_host_receive_capsule(qp, ncp));
lib/libnvmf/nvmf_host.c
275
struct nvmf_qpair *qp = cc->nc_qpair;
lib/libnvmf/nvmf_host.c
280
TAILQ_FOREACH(rc, &qp->nq_rx_capsules, nc_link) {
lib/libnvmf/nvmf_host.c
282
TAILQ_REMOVE(&qp->nq_rx_capsules, rc, nc_link);
lib/libnvmf/nvmf_host.c
290
error = nvmf_host_receive_capsule(qp, &rc);
lib/libnvmf/nvmf_host.c
295
TAILQ_INSERT_TAIL(&qp->nq_rx_capsules, rc, nc_link);
lib/libnvmf/nvmf_host.c
305
nvmf_keepalive(struct nvmf_qpair *qp)
lib/libnvmf/nvmf_host.c
309
if (!qp->nq_admin) {
lib/libnvmf/nvmf_host.c
316
return (nvmf_allocate_command(qp, &cmd));
lib/libnvmf/nvmf_host.c
320
nvmf_get_property(struct nvmf_qpair *qp, uint32_t offset, uint8_t size)
lib/libnvmf/nvmf_host.c
338
return (nvmf_allocate_command(qp, &cmd));
lib/libnvmf/nvmf_host.c
342
nvmf_read_property(struct nvmf_qpair *qp, uint32_t offset, uint8_t size,
lib/libnvmf/nvmf_host.c
350
if (!qp->nq_admin)
lib/libnvmf/nvmf_host.c
353
cc = nvmf_get_property(qp, offset, size);
lib/libnvmf/nvmf_host.c
385
nvmf_set_property(struct nvmf_qpair *qp, uint32_t offset, uint8_t size,
lib/libnvmf/nvmf_host.c
406
return (nvmf_allocate_command(qp, &cmd));
lib/libnvmf/nvmf_host.c
410
nvmf_write_property(struct nvmf_qpair *qp, uint32_t offset, uint8_t size,
lib/libnvmf/nvmf_host.c
417
if (!qp->nq_admin)
lib/libnvmf/nvmf_host.c
420
cc = nvmf_set_property(qp, offset, size, value);
lib/libnvmf/nvmf_host.c
48
struct nvmf_qpair *qp;
lib/libnvmf/nvmf_host.c
488
nvmf_host_identify_controller(struct nvmf_qpair *qp,
lib/libnvmf/nvmf_host.c
496
if (!qp->nq_admin)
lib/libnvmf/nvmf_host.c
504
cc = nvmf_allocate_command(qp, &cmd);
lib/libnvmf/nvmf_host.c
53
qp = NULL;
lib/libnvmf/nvmf_host.c
537
nvmf_host_identify_namespace(struct nvmf_qpair *qp, uint32_t nsid,
lib/libnvmf/nvmf_host.c
545
if (!qp->nq_admin)
lib/libnvmf/nvmf_host.c
554
cc = nvmf_allocate_command(qp, &cmd);
lib/libnvmf/nvmf_host.c
587
nvmf_get_discovery_log_page(struct nvmf_qpair *qp, uint64_t offset, void *buf,
lib/libnvmf/nvmf_host.c
606
cc = nvmf_allocate_command(qp, &cmd);
lib/libnvmf/nvmf_host.c
644
nvmf_host_fetch_discovery_log_page(struct nvmf_qpair *qp,
lib/libnvmf/nvmf_host.c
651
if (!qp->nq_admin)
lib/libnvmf/nvmf_host.c
656
error = nvmf_get_discovery_log_page(qp, 0, &hdr, sizeof(hdr));
lib/libnvmf/nvmf_host.c
685
error = nvmf_get_discovery_log_page(qp, sizeof(hdr),
lib/libnvmf/nvmf_host.c
695
error = nvmf_get_discovery_log_page(qp, 0, &hdr, sizeof(hdr));
lib/libnvmf/nvmf_host.c
714
nvmf_init_dle_from_admin_qp(struct nvmf_qpair *qp,
lib/libnvmf/nvmf_host.c
722
error = nvmf_populate_dle(qp, dle);
lib/libnvmf/nvmf_host.c
735
nvmf_host_request_queues(struct nvmf_qpair *qp, u_int requested, u_int *actual)
lib/libnvmf/nvmf_host.c
742
if (!qp->nq_admin || requested < 1 || requested > 65535)
lib/libnvmf/nvmf_host.c
754
cc = nvmf_allocate_command(qp, &cmd);
lib/libnvmf/nvmf_host.c
782
is_queue_pair_idle(struct nvmf_qpair *qp)
lib/libnvmf/nvmf_host.c
784
if (qp->nq_sqhd != qp->nq_sqtail)
lib/libnvmf/nvmf_host.c
786
if (!TAILQ_EMPTY(&qp->nq_rx_capsules))
lib/libnvmf/nvmf_host.c
87
qp = nvmf_allocate_qpair(na, params);
lib/libnvmf/nvmf_host.c
88
if (qp == NULL)
lib/libnvmf/nvmf_tcp.c
1000
if (!nvmf_tcp_read_ic_resp(na, qp, &ic_resp))
lib/libnvmf/nvmf_tcp.c
1009
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
102
cb->qp = qp;
lib/libnvmf/nvmf_tcp.c
1023
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
1029
qp->rxpda = (params->tcp.pda + 1) * 4;
lib/libnvmf/nvmf_tcp.c
1030
qp->txpda = (ic_resp.cpda + 1) * 4;
lib/libnvmf/nvmf_tcp.c
1031
qp->header_digests = ic_resp.dgst.bits.hdgst_enable != 0;
lib/libnvmf/nvmf_tcp.c
1032
qp->data_digests = ic_resp.dgst.bits.ddgst_enable != 0;
lib/libnvmf/nvmf_tcp.c
1033
qp->maxr2t = params->tcp.maxr2t;
lib/libnvmf/nvmf_tcp.c
1034
qp->maxh2cdata = maxh2cdata;
lib/libnvmf/nvmf_tcp.c
1037
qp->max_icd = 8192;
lib/libnvmf/nvmf_tcp.c
1039
qp->max_icd = (ta->ioccsz - 4) * 16;
lib/libnvmf/nvmf_tcp.c
1045
tcp_accept(struct nvmf_tcp_qpair *qp, struct nvmf_association *na)
lib/libnvmf/nvmf_tcp.c
1052
if (!nvmf_tcp_read_ic_req(na, qp, &ic_req))
lib/libnvmf/nvmf_tcp.c
1067
error = nvmf_tcp_write_pdu(qp, &ic_resp, sizeof(ic_resp));
lib/libnvmf/nvmf_tcp.c
1074
qp->rxpda = (params->tcp.pda + 1) * 4;
lib/libnvmf/nvmf_tcp.c
1075
qp->txpda = (ic_req.hpda + 1) * 4;
lib/libnvmf/nvmf_tcp.c
1076
qp->header_digests = ic_resp.dgst.bits.hdgst_enable != 0;
lib/libnvmf/nvmf_tcp.c
1077
qp->data_digests = ic_resp.dgst.bits.ddgst_enable != 0;
lib/libnvmf/nvmf_tcp.c
1078
qp->maxr2t = le32toh(ic_req.maxr2t);
lib/libnvmf/nvmf_tcp.c
1079
qp->maxh2cdata = params->tcp.maxh2cdata;
lib/libnvmf/nvmf_tcp.c
1080
qp->max_icd = 0; /* XXX */
lib/libnvmf/nvmf_tcp.c
1089
struct nvmf_tcp_qpair *qp;
lib/libnvmf/nvmf_tcp.c
1097
qp = calloc(1, sizeof(*qp));
lib/libnvmf/nvmf_tcp.c
1098
qp->s = qparams->tcp.fd;
lib/libnvmf/nvmf_tcp.c
1099
LIST_INIT(&qp->rx_buffers);
lib/libnvmf/nvmf_tcp.c
1100
LIST_INIT(&qp->tx_buffers);
lib/libnvmf/nvmf_tcp.c
1101
TAILQ_INIT(&qp->rx_capsules);
lib/libnvmf/nvmf_tcp.c
1103
error = tcp_accept(qp, na);
lib/libnvmf/nvmf_tcp.c
1105
error = tcp_connect(qp, na, qparams->admin);
lib/libnvmf/nvmf_tcp.c
1107
free(qp);
lib/libnvmf/nvmf_tcp.c
111
LIST_INSERT_HEAD(&qp->rx_buffers, cb, link);
lib/libnvmf/nvmf_tcp.c
1111
return (&qp->qp);
lib/libnvmf/nvmf_tcp.c
1117
struct nvmf_tcp_qpair *qp = TQP(nq);
lib/libnvmf/nvmf_tcp.c
1121
TAILQ_FOREACH_SAFE(tc, &qp->rx_capsules, link, ntc) {
lib/libnvmf/nvmf_tcp.c
1122
TAILQ_REMOVE(&qp->rx_capsules, tc, link);
lib/libnvmf/nvmf_tcp.c
1125
LIST_FOREACH_SAFE(cb, &qp->rx_buffers, link, ncb) {
lib/libnvmf/nvmf_tcp.c
1128
LIST_FOREACH_SAFE(cb, &qp->tx_buffers, link, ncb) {
lib/libnvmf/nvmf_tcp.c
113
LIST_INSERT_HEAD(&qp->tx_buffers, cb, link);
lib/libnvmf/nvmf_tcp.c
1131
free(qp);
lib/libnvmf/nvmf_tcp.c
1137
struct nvmf_tcp_qpair *qp = TQP(nq);
lib/libnvmf/nvmf_tcp.c
1139
nvlist_add_number(nvl, "fd", qp->s);
lib/libnvmf/nvmf_tcp.c
1140
nvlist_add_number(nvl, "rxpda", qp->rxpda);
lib/libnvmf/nvmf_tcp.c
1141
nvlist_add_number(nvl, "txpda", qp->txpda);
lib/libnvmf/nvmf_tcp.c
1142
nvlist_add_bool(nvl, "header_digests", qp->header_digests);
lib/libnvmf/nvmf_tcp.c
1143
nvlist_add_bool(nvl, "data_digests", qp->data_digests);
lib/libnvmf/nvmf_tcp.c
1144
nvlist_add_number(nvl, "maxr2t", qp->maxr2t);
lib/libnvmf/nvmf_tcp.c
1145
nvlist_add_number(nvl, "maxh2cdata", qp->maxh2cdata);
lib/libnvmf/nvmf_tcp.c
1146
nvlist_add_number(nvl, "max_icd", qp->max_icd);
lib/libnvmf/nvmf_tcp.c
1152
struct nvmf_tcp_qpair *qp = TQP(nq);
lib/libnvmf/nvmf_tcp.c
1157
if (getpeername(qp->s, (struct sockaddr *)&ss, &ss_len) == -1)
lib/libnvmf/nvmf_tcp.c
1169
tcp_allocate_capsule(struct nvmf_qpair *qp __unused)
lib/libnvmf/nvmf_tcp.c
118
tcp_find_command_buffer(struct nvmf_tcp_qpair *qp, uint16_t cid, uint16_t ttag,
lib/libnvmf/nvmf_tcp.c
1191
struct nvmf_tcp_qpair *qp = TQP(nc->nc_qpair);
lib/libnvmf/nvmf_tcp.c
1200
nc->nc_data_len <= qp->max_icd)
lib/libnvmf/nvmf_tcp.c
1221
error = nvmf_tcp_construct_pdu(qp, &cmd, sizeof(cmd), use_icd ?
lib/libnvmf/nvmf_tcp.c
1231
tc->cb = tcp_alloc_command_buffer(qp, nc->nc_data, 0,
lib/libnvmf/nvmf_tcp.c
124
list = receive ? &qp->rx_buffers : &qp->tx_buffers;
lib/libnvmf/nvmf_tcp.c
1240
struct nvmf_tcp_qpair *qp = TQP(nc->nc_qpair);
lib/libnvmf/nvmf_tcp.c
1247
return (nvmf_tcp_construct_pdu(qp, &rsp, sizeof(rsp), NULL, 0));
lib/libnvmf/nvmf_tcp.c
1262
struct nvmf_tcp_qpair *qp = TQP(nq);
lib/libnvmf/nvmf_tcp.c
1266
while (TAILQ_EMPTY(&qp->rx_capsules)) {
lib/libnvmf/nvmf_tcp.c
1267
error = nvmf_tcp_receive_pdu(qp);
lib/libnvmf/nvmf_tcp.c
1271
tc = TAILQ_FIRST(&qp->rx_capsules);
lib/libnvmf/nvmf_tcp.c
1272
TAILQ_REMOVE(&qp->rx_capsules, tc, link);
lib/libnvmf/nvmf_tcp.c
1321
tcp_send_r2t(struct nvmf_tcp_qpair *qp, uint16_t cid, uint16_t ttag,
lib/libnvmf/nvmf_tcp.c
133
tcp_purge_command_buffer(struct nvmf_tcp_qpair *qp, uint16_t cid, uint16_t ttag,
lib/libnvmf/nvmf_tcp.c
1333
return (nvmf_tcp_construct_pdu(qp, &r2t, sizeof(r2t), NULL, 0));
lib/libnvmf/nvmf_tcp.c
1340
struct nvmf_tcp_qpair *qp = TQP(nc->nc_qpair);
lib/libnvmf/nvmf_tcp.c
1349
ttag = qp->next_ttag++;
lib/libnvmf/nvmf_tcp.c
1351
error = tcp_send_r2t(qp, nc->nc_sqe.cid, ttag, data_offset, len);
lib/libnvmf/nvmf_tcp.c
1355
cb = tcp_alloc_command_buffer(qp, buf, data_offset, len,
lib/libnvmf/nvmf_tcp.c
1360
error = nvmf_tcp_receive_pdu(qp);
lib/libnvmf/nvmf_tcp.c
138
cb = tcp_find_command_buffer(qp, cid, ttag, receive);
lib/libnvmf/nvmf_tcp.c
1404
tcp_send_c2h_pdu(struct nvmf_tcp_qpair *qp, uint16_t cid,
lib/libnvmf/nvmf_tcp.c
1420
return (nvmf_tcp_construct_pdu(qp, &c2h, sizeof(c2h),
lib/libnvmf/nvmf_tcp.c
1429
struct nvmf_tcp_qpair *qp = TQP(nc->nc_qpair);
lib/libnvmf/nvmf_tcp.c
1453
send_success_flag = !qp->qp.nq_flow_control;
lib/libnvmf/nvmf_tcp.c
1469
error = tcp_send_c2h_pdu(qp, nc->nc_sqe.cid, data_offset,
lib/libnvmf/nvmf_tcp.c
151
nvmf_tcp_write_pdu(struct nvmf_tcp_qpair *qp, const void *pdu, size_t len)
lib/libnvmf/nvmf_tcp.c
158
nwritten = write(qp->s, cp, len);
lib/libnvmf/nvmf_tcp.c
168
nvmf_tcp_write_pdu_iov(struct nvmf_tcp_qpair *qp, struct iovec *iov,
lib/libnvmf/nvmf_tcp.c
174
nwritten = writev(qp->s, iov, iovcnt);
lib/libnvmf/nvmf_tcp.c
194
nvmf_tcp_report_error(struct nvmf_association *na, struct nvmf_tcp_qpair *qp,
lib/libnvmf/nvmf_tcp.c
219
(void)nvmf_tcp_write_pdu_iov(qp, iov, nitems(iov), sizeof(hdr) + hlen);
lib/libnvmf/nvmf_tcp.c
220
close(qp->s);
lib/libnvmf/nvmf_tcp.c
221
qp->s = -1;
lib/libnvmf/nvmf_tcp.c
225
nvmf_tcp_validate_pdu(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu,
lib/libnvmf/nvmf_tcp.c
243
qp->qp.nq_association->na_controller, qp->header_digests,
lib/libnvmf/nvmf_tcp.c
244
qp->data_digests, qp->rxpda, &data_len, &fes, &fei);
lib/libnvmf/nvmf_tcp.c
247
close(qp->s);
lib/libnvmf/nvmf_tcp.c
248
qp->s = -1;
lib/libnvmf/nvmf_tcp.c
250
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
263
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
28
struct nvmf_tcp_qpair *qp;
lib/libnvmf/nvmf_tcp.c
309
nvmf_tcp_read_pdu(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
lib/libnvmf/nvmf_tcp.c
316
error = nvmf_tcp_read_buffer(qp->s, &ch, sizeof(ch));
lib/libnvmf/nvmf_tcp.c
328
error = nvmf_tcp_validate_pdu(qp, pdu, sizeof(ch));
lib/libnvmf/nvmf_tcp.c
337
error = nvmf_tcp_read_buffer(qp->s, pdu->hdr + 1, plen - sizeof(ch));
lib/libnvmf/nvmf_tcp.c
340
error = nvmf_tcp_validate_pdu(qp, pdu, plen);
lib/libnvmf/nvmf_tcp.c
369
nvmf_tcp_save_command_capsule(struct nvmf_tcp_qpair *qp,
lib/libnvmf/nvmf_tcp.c
378
nc = nvmf_allocate_command(&qp->qp, &cmd->ccsqe);
lib/libnvmf/nvmf_tcp.c
385
TAILQ_INSERT_TAIL(&qp->rx_capsules, tc, link);
lib/libnvmf/nvmf_tcp.c
390
nvmf_tcp_save_response_capsule(struct nvmf_tcp_qpair *qp,
lib/libnvmf/nvmf_tcp.c
399
nc = nvmf_allocate_response(&qp->qp, &rsp->rccqe);
lib/libnvmf/nvmf_tcp.c
407
TAILQ_INSERT_TAIL(&qp->rx_capsules, tc, link);
lib/libnvmf/nvmf_tcp.c
413
tcp_purge_command_buffer(qp, rsp->rccqe.cid, 0, true);
lib/libnvmf/nvmf_tcp.c
414
tcp_purge_command_buffer(qp, rsp->rccqe.cid, 0, false);
lib/libnvmf/nvmf_tcp.c
425
nvmf_tcp_construct_pdu(struct nvmf_tcp_qpair *qp, void *hdr, size_t hlen,
lib/libnvmf/nvmf_tcp.c
434
if (qp->header_digests)
lib/libnvmf/nvmf_tcp.c
437
pdo = roundup(plen, qp->txpda);
lib/libnvmf/nvmf_tcp.c
440
if (qp->data_digests)
lib/libnvmf/nvmf_tcp.c
450
if (qp->header_digests)
lib/libnvmf/nvmf_tcp.c
452
if (qp->data_digests && data_len != 0)
lib/libnvmf/nvmf_tcp.c
463
if (qp->header_digests) {
lib/libnvmf/nvmf_tcp.c
484
if (qp->data_digests) {
lib/libnvmf/nvmf_tcp.c
492
return (nvmf_tcp_write_pdu_iov(qp, iov, iovcnt, plen));
lib/libnvmf/nvmf_tcp.c
496
nvmf_tcp_handle_h2c_data(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
lib/libnvmf/nvmf_tcp.c
504
if (le32toh(h2c->datal) > qp->maxh2cdata) {
lib/libnvmf/nvmf_tcp.c
505
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
512
cb = tcp_find_command_buffer(qp, h2c->cccid, h2c->ttag, true);
lib/libnvmf/nvmf_tcp.c
514
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
524
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
535
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
543
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
552
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
569
nvmf_tcp_handle_c2h_data(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
lib/libnvmf/nvmf_tcp.c
578
cb = tcp_find_command_buffer(qp, c2h->cccid, 0, true);
lib/libnvmf/nvmf_tcp.c
584
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
594
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
605
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
613
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
622
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
64
struct nvmf_qpair qp;
lib/libnvmf/nvmf_tcp.c
642
nc = nvmf_allocate_response(&qp->qp, &cqe);
lib/libnvmf/nvmf_tcp.c
650
TAILQ_INSERT_TAIL(&qp->rx_capsules, tc, link);
lib/libnvmf/nvmf_tcp.c
659
tcp_send_h2c_pdu(struct nvmf_tcp_qpair *qp, uint16_t cid, uint16_t ttag,
lib/libnvmf/nvmf_tcp.c
673
return (nvmf_tcp_construct_pdu(qp, &h2c, sizeof(h2c), buf, len));
lib/libnvmf/nvmf_tcp.c
678
tcp_send_h2c_pdus(struct nvmf_tcp_qpair *qp, uint16_t cid, uint16_t ttag,
lib/libnvmf/nvmf_tcp.c
689
if (todo > qp->maxh2cdata)
lib/libnvmf/nvmf_tcp.c
690
todo = qp->maxh2cdata;
lib/libnvmf/nvmf_tcp.c
691
error = tcp_send_h2c_pdu(qp, cid, ttag, data_offset, p, todo,
lib/libnvmf/nvmf_tcp.c
702
nvmf_tcp_handle_r2t(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
lib/libnvmf/nvmf_tcp.c
711
cb = tcp_find_command_buffer(qp, r2t->cccid, 0, false);
lib/libnvmf/nvmf_tcp.c
713
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
723
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
736
nvmf_tcp_report_error(qp->qp.nq_association, qp,
lib/libnvmf/nvmf_tcp.c
749
error = tcp_send_h2c_pdus(qp, r2t->cccid, r2t->ttag,
lib/libnvmf/nvmf_tcp.c
757
nvmf_tcp_receive_pdu(struct nvmf_tcp_qpair *qp)
lib/libnvmf/nvmf_tcp.c
762
error = nvmf_tcp_read_pdu(qp, &pdu);
lib/libnvmf/nvmf_tcp.c
774
return (nvmf_tcp_save_command_capsule(qp, &pdu));
lib/libnvmf/nvmf_tcp.c
776
return (nvmf_tcp_save_response_capsule(qp, &pdu));
lib/libnvmf/nvmf_tcp.c
778
return (nvmf_tcp_handle_h2c_data(qp, &pdu));
lib/libnvmf/nvmf_tcp.c
780
return (nvmf_tcp_handle_c2h_data(qp, &pdu));
lib/libnvmf/nvmf_tcp.c
782
return (nvmf_tcp_handle_r2t(qp, &pdu));
lib/libnvmf/nvmf_tcp.c
787
nvmf_tcp_validate_ic_pdu(struct nvmf_association *na, struct nvmf_tcp_qpair *qp,
lib/libnvmf/nvmf_tcp.c
810
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
822
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
832
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
84
#define TQP(qp) ((struct nvmf_tcp_qpair *)(qp))
lib/libnvmf/nvmf_tcp.c
842
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
851
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
860
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
871
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
879
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
887
nvmf_tcp_report_error(na, qp,
lib/libnvmf/nvmf_tcp.c
897
nvmf_tcp_read_ic_req(struct nvmf_association *na, struct nvmf_tcp_qpair *qp,
lib/libnvmf/nvmf_tcp.c
902
error = nvmf_tcp_read_buffer(qp->s, pdu, sizeof(*pdu));
lib/libnvmf/nvmf_tcp.c
909
return (nvmf_tcp_validate_ic_pdu(na, qp, &pdu->common, sizeof(*pdu)));
lib/libnvmf/nvmf_tcp.c
913
nvmf_tcp_read_ic_resp(struct nvmf_association *na, struct nvmf_tcp_qpair *qp,
lib/libnvmf/nvmf_tcp.c
918
error = nvmf_tcp_read_buffer(qp->s, pdu, sizeof(*pdu));
lib/libnvmf/nvmf_tcp.c
925
return (nvmf_tcp_validate_ic_pdu(na, qp, &pdu->common, sizeof(*pdu)));
lib/libnvmf/nvmf_tcp.c
95
tcp_alloc_command_buffer(struct nvmf_tcp_qpair *qp, void *data,
lib/libnvmf/nvmf_tcp.c
962
tcp_connect(struct nvmf_tcp_qpair *qp, struct nvmf_association *na, bool admin)
lib/libnvmf/nvmf_tcp.c
994
error = nvmf_tcp_write_pdu(qp, &ic_req, sizeof(ic_req));
lib/libnvmf/nvmf_transport.c
103
qp->nq_association = na;
lib/libnvmf/nvmf_transport.c
104
qp->nq_admin = params->admin;
lib/libnvmf/nvmf_transport.c
105
TAILQ_INIT(&qp->nq_rx_capsules);
lib/libnvmf/nvmf_transport.c
106
return (qp);
lib/libnvmf/nvmf_transport.c
110
nvmf_free_qpair(struct nvmf_qpair *qp)
lib/libnvmf/nvmf_transport.c
115
TAILQ_FOREACH_SAFE(nc, &qp->nq_rx_capsules, nc_link, tc) {
lib/libnvmf/nvmf_transport.c
116
TAILQ_REMOVE(&qp->nq_rx_capsules, nc, nc_link);
lib/libnvmf/nvmf_transport.c
119
na = qp->nq_association;
lib/libnvmf/nvmf_transport.c
120
na->na_ops->free_qpair(qp);
lib/libnvmf/nvmf_transport.c
125
nvmf_allocate_command(struct nvmf_qpair *qp, const void *sqe)
lib/libnvmf/nvmf_transport.c
129
nc = qp->nq_association->na_ops->allocate_capsule(qp);
lib/libnvmf/nvmf_transport.c
133
nc->nc_qpair = qp;
lib/libnvmf/nvmf_transport.c
144
nvmf_allocate_response(struct nvmf_qpair *qp, const void *cqe)
lib/libnvmf/nvmf_transport.c
148
nc = qp->nq_association->na_ops->allocate_capsule(qp);
lib/libnvmf/nvmf_transport.c
152
nc->nc_qpair = qp;
lib/libnvmf/nvmf_transport.c
186
nvmf_receive_capsule(struct nvmf_qpair *qp, struct nvmf_capsule **ncp)
lib/libnvmf/nvmf_transport.c
188
return (qp->nq_association->na_ops->receive_capsule(qp, ncp));
lib/libnvmf/nvmf_transport.c
239
nvmf_kernel_handoff_params(struct nvmf_qpair *qp, nvlist_t **nvlp)
lib/libnvmf/nvmf_transport.c
245
nvlist_add_bool(nvl, "admin", qp->nq_admin);
lib/libnvmf/nvmf_transport.c
246
nvlist_add_bool(nvl, "sq_flow_control", qp->nq_flow_control);
lib/libnvmf/nvmf_transport.c
247
nvlist_add_number(nvl, "qsize", qp->nq_qsize);
lib/libnvmf/nvmf_transport.c
248
nvlist_add_number(nvl, "sqhd", qp->nq_sqhd);
lib/libnvmf/nvmf_transport.c
249
if (!qp->nq_association->na_controller)
lib/libnvmf/nvmf_transport.c
250
nvlist_add_number(nvl, "sqtail", qp->nq_sqtail);
lib/libnvmf/nvmf_transport.c
251
qp->nq_association->na_ops->kernel_handoff_params(qp, nvl);
lib/libnvmf/nvmf_transport.c
263
nvmf_populate_dle(struct nvmf_qpair *qp, struct nvme_discovery_log_entry *dle)
lib/libnvmf/nvmf_transport.c
265
struct nvmf_association *na = qp->nq_association;
lib/libnvmf/nvmf_transport.c
268
return (na->na_ops->populate_dle(qp, dle));
lib/libnvmf/nvmf_transport.c
95
struct nvmf_qpair *qp;
lib/libnvmf/nvmf_transport.c
98
qp = na->na_ops->allocate_qpair(na, params);
lib/libnvmf/nvmf_transport.c
99
if (qp == NULL)
lib/libthr/thread/thr_mutex.c
1033
struct mutex_queue *q, *qp;
lib/libthr/thread/thr_mutex.c
1062
qp = &curthread->mq[qidx + 1];
lib/libthr/thread/thr_mutex.c
1065
TAILQ_REMOVE(qp, m, m_pqe);
lib/libthr/thread/thr_mutex.c
1076
TAILQ_INSERT_HEAD(qp,
lib/libthr/thread/thr_mutex.c
1088
TAILQ_INSERT_TAIL(qp, m, m_pqe);
lib/libthr/thread/thr_mutex.c
437
struct mutex_queue *qp, uint bit)
lib/libthr/thread/thr_mutex.c
442
TAILQ_FOREACH(m, qp, m_pqe) {
sbin/nvmecontrol/connect.c
169
connect_discovery_log_page(struct nvmf_qpair *qp)
sbin/nvmecontrol/connect.c
174
error = nvmf_host_fetch_discovery_log_page(qp, &log);
sbin/nvmecontrol/connect.c
187
struct nvmf_qpair *qp;
sbin/nvmecontrol/connect.c
189
qp = connect_discovery_adminq(trtype, address, port, opt.hostnqn);
sbin/nvmecontrol/connect.c
191
connect_discovery_log_page(qp);
sbin/nvmecontrol/connect.c
193
nvmf_free_qpair(qp);
sbin/nvmecontrol/discover.c
222
dump_discovery_log_page(struct nvmf_qpair *qp)
sbin/nvmecontrol/discover.c
227
error = nvmf_host_fetch_discovery_log_page(qp, &log);
sbin/nvmecontrol/discover.c
246
struct nvmf_qpair *qp;
sbin/nvmecontrol/discover.c
259
qp = connect_discovery_adminq(trtype, address, port, opt.hostnqn);
sbin/nvmecontrol/discover.c
264
identify_controller(qp);
sbin/nvmecontrol/discover.c
269
dump_discovery_log_page(qp);
sbin/nvmecontrol/discover.c
271
nvmf_free_qpair(qp);
sbin/nvmecontrol/discover.c
32
identify_controller(struct nvmf_qpair *qp)
sbin/nvmecontrol/discover.c
37
error = nvmf_host_identify_controller(qp, &cdata);
sbin/nvmecontrol/fabrics.c
223
struct nvmf_qpair *qp;
sbin/nvmecontrol/fabrics.c
256
qp = nvmf_connect(na, &qparams, 0, NVME_MIN_ADMIN_ENTRIES, hostid,
sbin/nvmecontrol/fabrics.c
258
if (qp == NULL)
sbin/nvmecontrol/fabrics.c
264
error = nvmf_read_property(qp, NVMF_PROP_CAP, 8, &cap);
sbin/nvmecontrol/fabrics.c
269
error = nvmf_read_property(qp, NVMF_PROP_CC, 4, &cc);
sbin/nvmecontrol/fabrics.c
281
error = nvmf_write_property(qp, NVMF_PROP_CC, 4, cc);
sbin/nvmecontrol/fabrics.c
288
error = nvmf_read_property(qp, NVMF_PROP_CSTS, 4, &csts);
sbin/nvmecontrol/fabrics.c
301
return (qp);
sbin/nvmecontrol/fabrics.c
314
struct nvmf_qpair *qp;
sbin/nvmecontrol/fabrics.c
319
qp = nvmf_connect(na, params, 0, NVMF_MIN_ADMIN_MAX_SQ_SIZE, hostid,
sbin/nvmecontrol/fabrics.c
321
if (qp == NULL) {
sbin/nvmecontrol/fabrics.c
328
error = nvmf_read_property(qp, NVMF_PROP_CAP, 8, &cap);
sbin/nvmecontrol/fabrics.c
331
nvmf_free_qpair(qp);
sbin/nvmecontrol/fabrics.c
339
nvmf_free_qpair(qp);
sbin/nvmecontrol/fabrics.c
357
error = nvmf_read_property(qp, NVMF_PROP_CC, 4, &cc);
sbin/nvmecontrol/fabrics.c
360
nvmf_free_qpair(qp);
sbin/nvmecontrol/fabrics.c
376
error = nvmf_write_property(qp, NVMF_PROP_CC, 4, cc);
sbin/nvmecontrol/fabrics.c
379
nvmf_free_qpair(qp);
sbin/nvmecontrol/fabrics.c
386
error = nvmf_read_property(qp, NVMF_PROP_CSTS, 4, &csts);
sbin/nvmecontrol/fabrics.c
389
nvmf_free_qpair(qp);
sbin/nvmecontrol/fabrics.c
398
nvmf_free_qpair(qp);
sbin/nvmecontrol/fabrics.c
405
*qpp = qp;
sbin/nvmecontrol/fabrics.c
410
shutdown_controller(struct nvmf_qpair *qp)
sbin/nvmecontrol/fabrics.c
415
error = nvmf_read_property(qp, NVMF_PROP_CC, 4, &cc);
sbin/nvmecontrol/fabrics.c
423
error = nvmf_write_property(qp, NVMF_PROP_CC, 4, cc);
sbin/nvmecontrol/fabrics.c
430
nvmf_free_qpair(qp);
sys/crypto/ccp/ccp.c
140
struct ccp_queue *qp;
sys/crypto/ccp/ccp.c
144
qp = &sc->queues[i];
sys/crypto/ccp/ccp.c
146
qp->cq_softc = sc;
sys/crypto/ccp/ccp.c
147
qp->cq_qindex = i;
sys/crypto/ccp/ccp.c
148
mtx_init(&qp->cq_lock, "ccp queue", NULL, MTX_DEF);
sys/crypto/ccp/ccp.c
150
qp->cq_sg_crp = sglist_alloc(32, M_WAITOK);
sys/crypto/ccp/ccp.c
152
qp->cq_sg_ulptx = sglist_alloc(34, M_WAITOK);
sys/crypto/ccp/ccp.c
153
qp->cq_sg_dst = sglist_alloc(2, M_WAITOK);
sys/crypto/ccp/ccp.c
160
struct ccp_queue *qp;
sys/crypto/ccp/ccp.c
164
qp = &sc->queues[i];
sys/crypto/ccp/ccp.c
166
mtx_destroy(&qp->cq_lock);
sys/crypto/ccp/ccp.c
167
sglist_free(qp->cq_sg_crp);
sys/crypto/ccp/ccp.c
168
sglist_free(qp->cq_sg_ulptx);
sys/crypto/ccp/ccp.c
169
sglist_free(qp->cq_sg_dst);
sys/crypto/ccp/ccp.c
531
struct ccp_queue *qp;
sys/crypto/ccp/ccp.c
537
qp = NULL;
sys/crypto/ccp/ccp.c
543
qp = &sc->queues[s->queue];
sys/crypto/ccp/ccp.c
545
error = ccp_queue_acquire_reserve(qp, 1 /* placeholder */, M_NOWAIT);
sys/crypto/ccp/ccp.c
550
error = ccp_populate_sglist(qp->cq_sg_crp, &crp->crp_buf);
sys/crypto/ccp/ccp.c
568
error = ccp_hmac(qp, s, crp);
sys/crypto/ccp/ccp.c
575
error = ccp_blkcipher(qp, s, crp);
sys/crypto/ccp/ccp.c
582
error = ccp_authenc(qp, s, crp);
sys/crypto/ccp/ccp.c
589
error = ccp_gcm(qp, s, crp);
sys/crypto/ccp/ccp.c
605
ccp_queue_abort(qp);
sys/crypto/ccp/ccp.c
607
ccp_queue_release(qp);
sys/crypto/ccp/ccp.c
647
ccp_queue_reserve_space(struct ccp_queue *qp, unsigned n, int mflags)
sys/crypto/ccp/ccp.c
651
mtx_assert(&qp->cq_lock, MA_OWNED);
sys/crypto/ccp/ccp.c
652
sc = qp->cq_softc;
sys/crypto/ccp/ccp.c
658
if (ccp_queue_get_ring_space(qp) >= n)
sys/crypto/ccp/ccp.c
662
qp->cq_waiting = true;
sys/crypto/ccp/ccp.c
663
msleep(&qp->cq_tail, &qp->cq_lock, 0, "ccpqfull", 0);
sys/crypto/ccp/ccp.c
668
ccp_queue_acquire_reserve(struct ccp_queue *qp, unsigned n, int mflags)
sys/crypto/ccp/ccp.c
672
mtx_lock(&qp->cq_lock);
sys/crypto/ccp/ccp.c
673
qp->cq_acq_tail = qp->cq_tail;
sys/crypto/ccp/ccp.c
674
error = ccp_queue_reserve_space(qp, n, mflags);
sys/crypto/ccp/ccp.c
676
mtx_unlock(&qp->cq_lock);
sys/crypto/ccp/ccp.c
681
ccp_queue_release(struct ccp_queue *qp)
sys/crypto/ccp/ccp.c
684
mtx_assert(&qp->cq_lock, MA_OWNED);
sys/crypto/ccp/ccp.c
685
if (qp->cq_tail != qp->cq_acq_tail) {
sys/crypto/ccp/ccp.c
687
ccp_queue_write_tail(qp);
sys/crypto/ccp/ccp.c
689
mtx_unlock(&qp->cq_lock);
sys/crypto/ccp/ccp.c
693
ccp_queue_abort(struct ccp_queue *qp)
sys/crypto/ccp/ccp.c
697
mtx_assert(&qp->cq_lock, MA_OWNED);
sys/crypto/ccp/ccp.c
700
for (i = qp->cq_acq_tail; i != qp->cq_tail;
sys/crypto/ccp/ccp.c
701
i = (i + 1) % (1 << qp->cq_softc->ring_size_order)) {
sys/crypto/ccp/ccp.c
702
memset(&qp->desc_ring[i], 0, sizeof(qp->desc_ring[i]));
sys/crypto/ccp/ccp.c
704
qp->cq_tail = qp->cq_acq_tail;
sys/crypto/ccp/ccp.c
706
mtx_unlock(&qp->cq_lock);
sys/crypto/ccp/ccp.c
735
db_show_ccp_qp(struct ccp_queue *qp)
sys/crypto/ccp/ccp.c
739
db_show_lock(&qp->cq_lock);
sys/crypto/ccp/ccp.c
741
db_printf(" cq_qindex: %u\n", qp->cq_qindex);
sys/crypto/ccp/ccp.c
742
db_printf(" cq_softc: %p\n", qp->cq_softc);
sys/crypto/ccp/ccp.c
744
db_printf(" head: %u\n", qp->cq_head);
sys/crypto/ccp/ccp.c
745
db_printf(" tail: %u\n", qp->cq_tail);
sys/crypto/ccp/ccp.c
746
db_printf(" acq_tail: %u\n", qp->cq_acq_tail);
sys/crypto/ccp/ccp.c
747
db_printf(" desc_ring: %p\n", qp->desc_ring);
sys/crypto/ccp/ccp.c
748
db_printf(" completions_ring: %p\n", qp->completions_ring);
sys/crypto/ccp/ccp.c
750
(uintmax_t)qp->desc_ring_bus_addr);
sys/crypto/ccp/ccp.c
753
db_ccp_show_queue_hw(qp);
sys/crypto/ccp/ccp.h
128
void (*callback_fn)(struct ccp_queue *qp, struct ccp_session *s,
sys/crypto/ccp/ccp.h
209
void ccp_queue_write_tail(struct ccp_queue *qp);
sys/crypto/ccp/ccp.h
213
void db_ccp_show_queue_hw(struct ccp_queue *qp);
sys/crypto/ccp/ccp.h
234
int ccp_queue_acquire_reserve(struct ccp_queue *qp, unsigned n, int mflags)
sys/crypto/ccp/ccp.h
236
void ccp_queue_abort(struct ccp_queue *qp);
sys/crypto/ccp/ccp.h
237
void ccp_queue_release(struct ccp_queue *qp);
sys/crypto/ccp/ccp.h
243
ccp_queue_get_active(struct ccp_queue *qp)
sys/crypto/ccp/ccp.h
247
sc = qp->cq_softc;
sys/crypto/ccp/ccp.h
248
return ((qp->cq_tail - qp->cq_head) & ((1 << sc->ring_size_order) - 1));
sys/crypto/ccp/ccp.h
252
ccp_queue_get_ring_space(struct ccp_queue *qp)
sys/crypto/ccp/ccp.h
256
sc = qp->cq_softc;
sys/crypto/ccp/ccp.h
257
return ((1 << sc->ring_size_order) - ccp_queue_get_active(qp) - 1);
sys/crypto/ccp/ccp_hardware.c
1038
ccp_sha_single_desc(struct ccp_queue *qp, const struct SHA_Defn *defn,
sys/crypto/ccp/ccp_hardware.c
1043
if (ccp_queue_get_ring_space(qp) == 0)
sys/crypto/ccp/ccp_hardware.c
1046
desc = &qp->desc_ring[qp->cq_tail];
sys/crypto/ccp/ccp_hardware.c
1065
desc->lsb_ctx_id = ccp_queue_lsb_entry(qp, LSB_ENTRY_SHA);
sys/crypto/ccp/ccp_hardware.c
1067
qp->cq_tail = (qp->cq_tail + 1) % (1 << qp->cq_softc->ring_size_order);
sys/crypto/ccp/ccp_hardware.c
1072
ccp_sha(struct ccp_queue *qp, enum sha_version version, struct sglist *sgl_src,
sys/crypto/ccp/ccp_hardware.c
1092
error = ccp_passthrough(qp, ccp_queue_lsb_address(qp, LSB_ENTRY_SHA),
sys/crypto/ccp/ccp_hardware.c
1105
error = ccp_sha_single_desc(qp, defn, seg->ss_paddr,
sys/crypto/ccp/ccp_hardware.c
1114
lsbaddr = ccp_queue_lsb_address(qp, LSB_ENTRY_SHA);
sys/crypto/ccp/ccp_hardware.c
1120
error = ccp_passthrough(qp, seg->ss_paddr, CCP_MEMTYPE_SYSTEM,
sys/crypto/ccp/ccp_hardware.c
1202
ccp_do_hmac_done(struct ccp_queue *qp, struct ccp_session *s,
sys/crypto/ccp/ccp_hardware.c
123
ccp_queue_write_tail(struct ccp_queue *qp)
sys/crypto/ccp/ccp_hardware.c
1247
ccp_hmac_done(struct ccp_queue *qp, struct ccp_session *s, void *vcrp,
sys/crypto/ccp/ccp_hardware.c
125
ccp_write_queue_4(qp->cq_softc, qp->cq_qindex, CMD_Q_TAIL_LO_BASE,
sys/crypto/ccp/ccp_hardware.c
1253
ccp_do_hmac_done(qp, s, crp, error);
sys/crypto/ccp/ccp_hardware.c
1257
ccp_do_hmac(struct ccp_queue *qp, struct ccp_session *s, struct cryptop *crp,
sys/crypto/ccp/ccp_hardware.c
126
((uint32_t)qp->desc_ring_bus_addr) + (Q_DESC_SIZE * qp->cq_tail));
sys/crypto/ccp/ccp_hardware.c
1264
dev = qp->cq_softc->dev;
sys/crypto/ccp/ccp_hardware.c
1272
sglist_reset(qp->cq_sg_ulptx);
sys/crypto/ccp/ccp_hardware.c
1273
error = sglist_append(qp->cq_sg_ulptx, s->hmac.ipad, axf->blocksize);
sys/crypto/ccp/ccp_hardware.c
1277
error = sglist_append_sglist(qp->cq_sg_ulptx, qp->cq_sg_crp,
sys/crypto/ccp/ccp_hardware.c
1282
error = sglist_append_sglist(qp->cq_sg_ulptx, qp->cq_sg_crp,
sys/crypto/ccp/ccp_hardware.c
1289
sglist_reset(qp->cq_sg_dst);
sys/crypto/ccp/ccp_hardware.c
1290
error = sglist_append(qp->cq_sg_dst, s->hmac.res,
sys/crypto/ccp/ccp_hardware.c
1295
error = ccp_sha(qp, s->hmac.auth_mode, qp->cq_sg_ulptx, qp->cq_sg_dst,
sys/crypto/ccp/ccp_hardware.c
1305
ccp_hmac(struct ccp_queue *qp, struct ccp_session *s, struct cryptop *crp)
sys/crypto/ccp/ccp_hardware.c
1313
return (ccp_do_hmac(qp, s, crp, &ctx));
sys/crypto/ccp/ccp_hardware.c
1331
ccp_blkcipher_done(struct ccp_queue *qp, struct ccp_session *s, void *vcrp,
sys/crypto/ccp/ccp_hardware.c
134
ccp_queue_lsb_entry(struct ccp_queue *qp, unsigned lsb_entry)
sys/crypto/ccp/ccp_hardware.c
1345
DPRINTF(qp->cq_softc->dev, "%s: qp=%p crp=%p\n", __func__, qp, crp);
sys/crypto/ccp/ccp_hardware.c
136
return ((qp->private_lsb * LSB_REGION_LENGTH + lsb_entry));
sys/crypto/ccp/ccp_hardware.c
1379
ccp_do_pst_to_lsb(struct ccp_queue *qp, uint32_t lsbaddr, const void *src,
sys/crypto/ccp/ccp_hardware.c
1384
sglist_reset(qp->cq_sg_ulptx);
sys/crypto/ccp/ccp_hardware.c
1385
error = sglist_append(qp->cq_sg_ulptx, __DECONST(void *, src), len);
sys/crypto/ccp/ccp_hardware.c
1389
error = ccp_passthrough_sgl(qp, lsbaddr, true, qp->cq_sg_ulptx, len,
sys/crypto/ccp/ccp_hardware.c
1395
ccp_do_xts(struct ccp_queue *qp, struct ccp_session *s, struct cryptop *crp,
sys/crypto/ccp/ccp_hardware.c
1405
dev = qp->cq_softc->dev;
sys/crypto/ccp/ccp_hardware.c
1416
for (i = 0; i < qp->cq_sg_ulptx->sg_nseg; i++) {
sys/crypto/ccp/ccp_hardware.c
1419
seg = &qp->cq_sg_ulptx->sg_segs[i];
sys/crypto/ccp/ccp_hardware.c
1421
desc = &qp->desc_ring[qp->cq_tail];
sys/crypto/ccp/ccp_hardware.c
1424
desc->eom = (i == qp->cq_sg_ulptx->sg_nseg - 1);
sys/crypto/ccp/ccp_hardware.c
1427
__func__, qp->cq_tail, (int)desc->som, (int)desc->eom,
sys/crypto/ccp/ccp_hardware.c
1431
memcpy(&qp->completions_ring[qp->cq_tail], cctx,
sys/crypto/ccp/ccp_hardware.c
1439
qp->cq_tail, (unsigned)desc->aes_xts.type,
sys/crypto/ccp/ccp_hardware.c
144
ccp_queue_lsb_address(struct ccp_queue *qp, unsigned lsb_entry)
sys/crypto/ccp/ccp_hardware.c
1452
desc->key_lo = ccp_queue_lsb_address(qp, LSB_ENTRY_KEY);
sys/crypto/ccp/ccp_hardware.c
1456
desc->lsb_ctx_id = ccp_queue_lsb_entry(qp, LSB_ENTRY_IV);
sys/crypto/ccp/ccp_hardware.c
1458
qp->cq_tail = (qp->cq_tail + 1) %
sys/crypto/ccp/ccp_hardware.c
1459
(1 << qp->cq_softc->ring_size_order);
sys/crypto/ccp/ccp_hardware.c
146
return (ccp_queue_lsb_entry(qp, lsb_entry) * LSB_ENTRY_SIZE);
sys/crypto/ccp/ccp_hardware.c
1465
ccp_do_blkcipher(struct ccp_queue *qp, struct ccp_session *s,
sys/crypto/ccp/ccp_hardware.c
1477
dev = qp->cq_softc->dev;
sys/crypto/ccp/ccp_hardware.c
1494
for (i = 0; i < qp->cq_sg_crp->sg_nseg; i++)
sys/crypto/ccp/ccp_hardware.c
1495
if ((qp->cq_sg_crp->sg_segs[i].ss_len % AES_BLOCK_LEN) != 0) {
sys/crypto/ccp/ccp_hardware.c
1497
qp->cq_sg_crp->sg_segs[i].ss_len);
sys/crypto/ccp/ccp_hardware.c
1514
error = ccp_do_pst_to_lsb(qp, ccp_queue_lsb_address(qp, LSB_ENTRY_IV),
sys/crypto/ccp/ccp_hardware.c
1564
error = ccp_do_pst_to_lsb(qp,
sys/crypto/ccp/ccp_hardware.c
1565
ccp_queue_lsb_address(qp, LSB_ENTRY_KEY + 1), keydata,
sys/crypto/ccp/ccp_hardware.c
1569
error = ccp_do_pst_to_lsb(qp,
sys/crypto/ccp/ccp_hardware.c
1570
ccp_queue_lsb_address(qp, LSB_ENTRY_KEY),
sys/crypto/ccp/ccp_hardware.c
1577
error = ccp_do_pst_to_lsb(qp,
sys/crypto/ccp/ccp_hardware.c
1578
ccp_queue_lsb_address(qp, LSB_ENTRY_KEY) +
sys/crypto/ccp/ccp_hardware.c
1582
error = ccp_do_pst_to_lsb(qp,
sys/crypto/ccp/ccp_hardware.c
1583
ccp_queue_lsb_address(qp, LSB_ENTRY_KEY + 1) +
sys/crypto/ccp/ccp_hardware.c
1587
error = ccp_do_pst_to_lsb(qp,
sys/crypto/ccp/ccp_hardware.c
1588
ccp_queue_lsb_address(qp, LSB_ENTRY_KEY), keydata,
sys/crypto/ccp/ccp_hardware.c
1597
sglist_reset(qp->cq_sg_ulptx);
sys/crypto/ccp/ccp_hardware.c
1598
error = sglist_append_sglist(qp->cq_sg_ulptx, qp->cq_sg_crp,
sys/crypto/ccp/ccp_hardware.c
1604
(void *)PHYS_TO_DMAP(qp->cq_sg_ulptx->sg_segs[0].ss_paddr), " ");
sys/crypto/ccp/ccp_hardware.c
1606
DPRINTF(dev, "%s: starting AES ops @ %u\n", __func__, qp->cq_tail);
sys/crypto/ccp/ccp_hardware.c
1608
if (ccp_queue_get_ring_space(qp) < qp->cq_sg_ulptx->sg_nseg)
sys/crypto/ccp/ccp_hardware.c
1612
return (ccp_do_xts(qp, s, crp, dir, cctx));
sys/crypto/ccp/ccp_hardware.c
1614
for (i = 0; i < qp->cq_sg_ulptx->sg_nseg; i++) {
sys/crypto/ccp/ccp_hardware.c
1617
seg = &qp->cq_sg_ulptx->sg_segs[i];
sys/crypto/ccp/ccp_hardware.c
1619
desc = &qp->desc_ring[qp->cq_tail];
sys/crypto/ccp/ccp_hardware.c
1622
desc->eom = (i == qp->cq_sg_ulptx->sg_nseg - 1);
sys/crypto/ccp/ccp_hardware.c
1625
__func__, qp->cq_tail, (int)desc->som, (int)desc->eom,
sys/crypto/ccp/ccp_hardware.c
1629
memcpy(&qp->completions_ring[qp->cq_tail], cctx,
sys/crypto/ccp/ccp_hardware.c
1643
qp->cq_tail, (unsigned)desc->aes.mode,
sys/crypto/ccp/ccp_hardware.c
1656
desc->key_lo = ccp_queue_lsb_address(qp, LSB_ENTRY_KEY);
sys/crypto/ccp/ccp_hardware.c
1660
desc->lsb_ctx_id = ccp_queue_lsb_entry(qp, LSB_ENTRY_IV);
sys/crypto/ccp/ccp_hardware.c
1662
qp->cq_tail = (qp->cq_tail + 1) %
sys/crypto/ccp/ccp_hardware.c
1663
(1 << qp->cq_softc->ring_size_order);
sys/crypto/ccp/ccp_hardware.c
1669
ccp_blkcipher(struct ccp_queue *qp, struct ccp_session *s, struct cryptop *crp)
sys/crypto/ccp/ccp_hardware.c
1677
return (ccp_do_blkcipher(qp, s, crp, &ctx));
sys/crypto/ccp/ccp_hardware.c
1681
ccp_authenc_done(struct ccp_queue *qp, struct ccp_session *s, void *vcrp,
sys/crypto/ccp/ccp_hardware.c
1690
ccp_do_hmac_done(qp, s, crp, error);
sys/crypto/ccp/ccp_hardware.c
1694
ccp_authenc(struct ccp_queue *qp, struct ccp_session *s, struct cryptop *crp)
sys/crypto/ccp/ccp_hardware.c
1705
error = ccp_do_blkcipher(qp, s, crp, NULL);
sys/crypto/ccp/ccp_hardware.c
1707
error = ccp_do_hmac(qp, s, crp, NULL);
sys/crypto/ccp/ccp_hardware.c
1713
error = ccp_do_hmac(qp, s, crp, &ctx);
sys/crypto/ccp/ccp_hardware.c
1715
error = ccp_do_blkcipher(qp, s, crp, &ctx);
sys/crypto/ccp/ccp_hardware.c
1720
ccp_do_ghash_aad(struct ccp_queue *qp, struct ccp_session *s)
sys/crypto/ccp/ccp_hardware.c
1726
if (ccp_queue_get_ring_space(qp) < qp->cq_sg_ulptx->sg_nseg)
sys/crypto/ccp/ccp_hardware.c
1729
for (i = 0; i < qp->cq_sg_ulptx->sg_nseg; i++) {
sys/crypto/ccp/ccp_hardware.c
1730
seg = &qp->cq_sg_ulptx->sg_segs[i];
sys/crypto/ccp/ccp_hardware.c
1732
desc = &qp->desc_ring[qp->cq_tail];
sys/crypto/ccp/ccp_hardware.c
1746
desc->lsb_ctx_id = ccp_queue_lsb_entry(qp, LSB_ENTRY_IV);
sys/crypto/ccp/ccp_hardware.c
1748
desc->key_lo = ccp_queue_lsb_address(qp, LSB_ENTRY_KEY);
sys/crypto/ccp/ccp_hardware.c
1751
qp->cq_tail = (qp->cq_tail + 1) %
sys/crypto/ccp/ccp_hardware.c
1752
(1 << qp->cq_softc->ring_size_order);
sys/crypto/ccp/ccp_hardware.c
1758
ccp_do_gctr(struct ccp_queue *qp, struct ccp_session *s,
sys/crypto/ccp/ccp_hardware.c
1763
if (ccp_queue_get_ring_space(qp) == 0)
sys/crypto/ccp/ccp_hardware.c
1766
desc = &qp->desc_ring[qp->cq_tail];
sys/crypto/ccp/ccp_hardware.c
1784
desc->lsb_ctx_id = ccp_queue_lsb_entry(qp, LSB_ENTRY_IV);
sys/crypto/ccp/ccp_hardware.c
1786
desc->key_lo = ccp_queue_lsb_address(qp, LSB_ENTRY_KEY);
sys/crypto/ccp/ccp_hardware.c
1789
qp->cq_tail = (qp->cq_tail + 1) %
sys/crypto/ccp/ccp_hardware.c
1790
(1 << qp->cq_softc->ring_size_order);
sys/crypto/ccp/ccp_hardware.c
1795
ccp_do_ghash_final(struct ccp_queue *qp, struct ccp_session *s)
sys/crypto/ccp/ccp_hardware.c
1799
if (ccp_queue_get_ring_space(qp) == 0)
sys/crypto/ccp/ccp_hardware.c
1802
desc = &qp->desc_ring[qp->cq_tail];
sys/crypto/ccp/ccp_hardware.c
1811
desc->src_lo = ccp_queue_lsb_address(qp, LSB_ENTRY_GHASH_IN);
sys/crypto/ccp/ccp_hardware.c
1814
desc->lsb_ctx_id = ccp_queue_lsb_entry(qp, LSB_ENTRY_IV);
sys/crypto/ccp/ccp_hardware.c
1816
desc->key_lo = ccp_queue_lsb_address(qp, LSB_ENTRY_KEY);
sys/crypto/ccp/ccp_hardware.c
1819
desc->dst_lo = ccp_queue_lsb_address(qp, LSB_ENTRY_GHASH);
sys/crypto/ccp/ccp_hardware.c
1822
qp->cq_tail = (qp->cq_tail + 1) %
sys/crypto/ccp/ccp_hardware.c
1823
(1 << qp->cq_softc->ring_size_order);
sys/crypto/ccp/ccp_hardware.c
1828
ccp_gcm_done(struct ccp_queue *qp, struct ccp_session *s, void *vcrp,
sys/crypto/ccp/ccp_hardware.c
1861
ccp_gcm(struct ccp_queue *qp, struct ccp_session *s, struct cryptop *crp)
sys/crypto/ccp/ccp_hardware.c
1873
dev = qp->cq_softc->dev;
sys/crypto/ccp/ccp_hardware.c
1895
error = ccp_do_pst_to_lsb(qp, ccp_queue_lsb_address(qp, LSB_ENTRY_IV),
sys/crypto/ccp/ccp_hardware.c
1899
error = ccp_do_pst_to_lsb(qp, ccp_queue_lsb_address(qp, LSB_ENTRY_KEY),
sys/crypto/ccp/ccp_hardware.c
1903
error = ccp_do_pst_to_lsb(qp,
sys/crypto/ccp/ccp_hardware.c
1904
ccp_queue_lsb_address(qp, LSB_ENTRY_GHASH_IN), s->gmac.final_block,
sys/crypto/ccp/ccp_hardware.c
1911
sglist_reset(qp->cq_sg_ulptx);
sys/crypto/ccp/ccp_hardware.c
1912
error = sglist_append_sglist(qp->cq_sg_ulptx, qp->cq_sg_crp,
sys/crypto/ccp/ccp_hardware.c
1918
for (i = 0; i < qp->cq_sg_ulptx->sg_nseg; i++)
sys/crypto/ccp/ccp_hardware.c
1919
if ((qp->cq_sg_ulptx->sg_segs[i].ss_len %
sys/crypto/ccp/ccp_hardware.c
1923
qp->cq_sg_ulptx->sg_segs[i].ss_len);
sys/crypto/ccp/ccp_hardware.c
1927
error = ccp_do_ghash_aad(qp, s);
sys/crypto/ccp/ccp_hardware.c
1933
sglist_reset(qp->cq_sg_ulptx);
sys/crypto/ccp/ccp_hardware.c
1934
error = sglist_append_sglist(qp->cq_sg_ulptx, qp->cq_sg_crp,
sys/crypto/ccp/ccp_hardware.c
1949
for (i = 0; i < qp->cq_sg_ulptx->sg_nseg; i++)
sys/crypto/ccp/ccp_hardware.c
1950
if ((qp->cq_sg_ulptx->sg_segs[i].ss_len % AES_BLOCK_LEN) != 0) {
sys/crypto/ccp/ccp_hardware.c
1952
qp->cq_sg_ulptx->sg_segs[i].ss_len);
sys/crypto/ccp/ccp_hardware.c
1956
for (i = 0; i < qp->cq_sg_ulptx->sg_nseg; i++) {
sys/crypto/ccp/ccp_hardware.c
1959
seg = &qp->cq_sg_ulptx->sg_segs[i];
sys/crypto/ccp/ccp_hardware.c
1960
error = ccp_do_gctr(qp, s, dir, seg,
sys/crypto/ccp/ccp_hardware.c
1962
i == (qp->cq_sg_ulptx->sg_nseg - 1));
sys/crypto/ccp/ccp_hardware.c
1968
error = ccp_do_pst_to_lsb(qp, ccp_queue_lsb_address(qp, LSB_ENTRY_IV),
sys/crypto/ccp/ccp_hardware.c
1978
error = ccp_do_ghash_final(qp, s);
sys/crypto/ccp/ccp_hardware.c
1983
sglist_reset(qp->cq_sg_ulptx);
sys/crypto/ccp/ccp_hardware.c
1985
error = sglist_append_sglist(qp->cq_sg_ulptx, qp->cq_sg_crp,
sys/crypto/ccp/ccp_hardware.c
1992
error = sglist_append(qp->cq_sg_ulptx, s->gmac.final_block,
sys/crypto/ccp/ccp_hardware.c
1996
error = ccp_passthrough_sgl(qp,
sys/crypto/ccp/ccp_hardware.c
1997
ccp_queue_lsb_address(qp, LSB_ENTRY_GHASH), false, qp->cq_sg_ulptx,
sys/crypto/ccp/ccp_hardware.c
2051
db_ccp_show_queue_hw(struct ccp_queue *qp)
sys/crypto/ccp/ccp_hardware.c
2058
sc = qp->cq_softc;
sys/crypto/ccp/ccp_hardware.c
2059
q = qp->cq_qindex;
sys/crypto/ccp/ccp_hardware.c
2100
i = (headlo - (uint32_t)qp->desc_ring_bus_addr) / Q_DESC_SIZE;
sys/crypto/ccp/ccp_hardware.c
2102
(void *)&qp->desc_ring[i], " ");
sys/crypto/ccp/ccp_hardware.c
213
struct ccp_queue *qp;
sys/crypto/ccp/ccp_hardware.c
220
qp = &sc->queues[queue];
sys/crypto/ccp/ccp_hardware.c
232
if (qp->lsb_mask == 0) {
sys/crypto/ccp/ccp_hardware.c
255
ringsz, 0, NULL, NULL, &qp->ring_desc_tag);
sys/crypto/ccp/ccp_hardware.c
259
error = bus_dmamem_alloc(qp->ring_desc_tag, &desc,
sys/crypto/ccp/ccp_hardware.c
260
BUS_DMA_ZERO | BUS_DMA_WAITOK, &qp->ring_desc_map);
sys/crypto/ccp/ccp_hardware.c
264
error = bus_dmamap_load(qp->ring_desc_tag, qp->ring_desc_map, desc,
sys/crypto/ccp/ccp_hardware.c
265
ringsz, ccp_dmamap_cb, &qp->desc_ring_bus_addr, BUS_DMA_WAITOK);
sys/crypto/ccp/ccp_hardware.c
269
qp->desc_ring = desc;
sys/crypto/ccp/ccp_hardware.c
270
qp->completions_ring = malloc(num_descriptors *
sys/crypto/ccp/ccp_hardware.c
271
sizeof(*qp->completions_ring), M_CCP, M_ZERO | M_WAITOK);
sys/crypto/ccp/ccp_hardware.c
274
qp->qcontrol = 0;
sys/crypto/ccp/ccp_hardware.c
275
ccp_write_queue_4(sc, queue, CMD_Q_CONTROL_BASE, qp->qcontrol);
sys/crypto/ccp/ccp_hardware.c
282
qp->qcontrol |= (sc->ring_size_order - 1) << CMD_Q_SIZE_SHIFT;
sys/crypto/ccp/ccp_hardware.c
285
(uint32_t)qp->desc_ring_bus_addr);
sys/crypto/ccp/ccp_hardware.c
287
(uint32_t)qp->desc_ring_bus_addr);
sys/crypto/ccp/ccp_hardware.c
297
qp->qcontrol |= (qp->desc_ring_bus_addr >> 32) << CMD_Q_PTR_HI_SHIFT;
sys/crypto/ccp/ccp_hardware.c
298
qp->qcontrol |= CMD_Q_RUN;
sys/crypto/ccp/ccp_hardware.c
299
ccp_write_queue_4(sc, queue, CMD_Q_CONTROL_BASE, qp->qcontrol);
sys/crypto/ccp/ccp_hardware.c
303
if (qp->desc_ring != NULL)
sys/crypto/ccp/ccp_hardware.c
304
bus_dmamap_unload(qp->ring_desc_tag,
sys/crypto/ccp/ccp_hardware.c
305
qp->ring_desc_map);
sys/crypto/ccp/ccp_hardware.c
307
bus_dmamem_free(qp->ring_desc_tag, desc,
sys/crypto/ccp/ccp_hardware.c
308
qp->ring_desc_map);
sys/crypto/ccp/ccp_hardware.c
309
if (qp->ring_desc_tag != NULL)
sys/crypto/ccp/ccp_hardware.c
310
bus_dma_tag_destroy(qp->ring_desc_tag);
sys/crypto/ccp/ccp_hardware.c
319
struct ccp_queue *qp;
sys/crypto/ccp/ccp_hardware.c
322
qp = &sc->queues[queue];
sys/crypto/ccp/ccp_hardware.c
331
free(qp->completions_ring, M_CCP);
sys/crypto/ccp/ccp_hardware.c
332
bus_dmamap_unload(qp->ring_desc_tag, qp->ring_desc_map);
sys/crypto/ccp/ccp_hardware.c
333
bus_dmamem_free(qp->ring_desc_tag, qp->desc_ring, qp->ring_desc_map);
sys/crypto/ccp/ccp_hardware.c
334
bus_dma_tag_destroy(qp->ring_desc_tag);
sys/crypto/ccp/ccp_hardware.c
455
ccp_intr_handle_error(struct ccp_queue *qp, const struct ccp_desc *desc)
sys/crypto/ccp/ccp_hardware.c
464
sc = qp->cq_softc;
sys/crypto/ccp/ccp_hardware.c
465
q = qp->cq_qindex;
sys/crypto/ccp/ccp_hardware.c
490
idx = desc - qp->desc_ring;
sys/crypto/ccp/ccp_hardware.c
501
memset(&qp->desc_ring[idx], 0, sizeof(qp->desc_ring[idx]));
sys/crypto/ccp/ccp_hardware.c
503
cctx = &qp->completions_ring[idx];
sys/crypto/ccp/ccp_hardware.c
521
cctx->callback_fn(qp, cctx->session, cctx->callback_arg, errno);
sys/crypto/ccp/ccp_hardware.c
527
qp->cq_head = idx;
sys/crypto/ccp/ccp_hardware.c
528
qp->cq_waiting = false;
sys/crypto/ccp/ccp_hardware.c
529
wakeup(&qp->cq_tail);
sys/crypto/ccp/ccp_hardware.c
530
DPRINTF(sc->dev, "%s: wrote sw head:%u\n", __func__, qp->cq_head);
sys/crypto/ccp/ccp_hardware.c
532
(uint32_t)qp->desc_ring_bus_addr + (idx * Q_DESC_SIZE));
sys/crypto/ccp/ccp_hardware.c
533
ccp_write_queue_4(sc, q, CMD_Q_CONTROL_BASE, qp->qcontrol);
sys/crypto/ccp/ccp_hardware.c
538
ccp_intr_run_completions(struct ccp_queue *qp, uint32_t ints)
sys/crypto/ccp/ccp_hardware.c
546
sc = qp->cq_softc;
sys/crypto/ccp/ccp_hardware.c
547
q = qp->cq_qindex;
sys/crypto/ccp/ccp_hardware.c
549
mtx_lock(&qp->cq_lock);
sys/crypto/ccp/ccp_hardware.c
557
idx = (headlo - (uint32_t)qp->desc_ring_bus_addr) / Q_DESC_SIZE;
sys/crypto/ccp/ccp_hardware.c
560
qp->cq_head);
sys/crypto/ccp/ccp_hardware.c
562
while (qp->cq_head != idx) {
sys/crypto/ccp/ccp_hardware.c
563
DPRINTF(sc->dev, "%s: completing:%u\n", __func__, qp->cq_head);
sys/crypto/ccp/ccp_hardware.c
565
cctx = &qp->completions_ring[qp->cq_head];
sys/crypto/ccp/ccp_hardware.c
567
cctx->callback_fn(qp, cctx->session,
sys/crypto/ccp/ccp_hardware.c
573
memset(&qp->desc_ring[qp->cq_head], 0,
sys/crypto/ccp/ccp_hardware.c
574
sizeof(qp->desc_ring[qp->cq_head]));
sys/crypto/ccp/ccp_hardware.c
576
qp->cq_head = (qp->cq_head + 1) % (1 << sc->ring_size_order);
sys/crypto/ccp/ccp_hardware.c
580
qp->cq_waiting = false;
sys/crypto/ccp/ccp_hardware.c
581
wakeup(&qp->cq_tail);
sys/crypto/ccp/ccp_hardware.c
584
DPRINTF(sc->dev, "%s: wrote sw head:%u\n", __func__, qp->cq_head);
sys/crypto/ccp/ccp_hardware.c
591
desc = &qp->desc_ring[idx];
sys/crypto/ccp/ccp_hardware.c
593
ccp_intr_handle_error(qp, desc);
sys/crypto/ccp/ccp_hardware.c
595
mtx_unlock(&qp->cq_lock);
sys/crypto/ccp/ccp_hardware.c
845
ccp_passthrough(struct ccp_queue *qp, bus_addr_t dst,
sys/crypto/ccp/ccp_hardware.c
853
if (ccp_queue_get_ring_space(qp) == 0)
sys/crypto/ccp/ccp_hardware.c
856
desc = &qp->desc_ring[qp->cq_tail];
sys/crypto/ccp/ccp_hardware.c
875
desc->lsb_ctx_id = ccp_queue_lsb_entry(qp, LSB_ENTRY_KEY);
sys/crypto/ccp/ccp_hardware.c
878
memcpy(&qp->completions_ring[qp->cq_tail], cctx, sizeof(*cctx));
sys/crypto/ccp/ccp_hardware.c
880
qp->cq_tail = (qp->cq_tail + 1) % (1 << qp->cq_softc->ring_size_order);
sys/crypto/ccp/ccp_hardware.c
885
ccp_passthrough_sgl(struct ccp_queue *qp, bus_addr_t lsb_addr, bool tolsb,
sys/crypto/ccp/ccp_hardware.c
900
error = ccp_passthrough(qp, lsb_addr, CCP_MEMTYPE_SB,
sys/crypto/ccp/ccp_hardware.c
906
error = ccp_passthrough(qp, seg->ss_paddr,
sys/crypto/ccp/ccp_lsb.c
43
struct ccp_queue *qp;
sys/crypto/ccp/ccp_lsb.c
46
qp = &sc->queues[queue];
sys/crypto/ccp/ccp_lsb.c
48
qp->lsb_mask = 0;
sys/crypto/ccp/ccp_lsb.c
52
qp->lsb_mask |= (1 << i);
sys/crypto/ccp/ccp_lsb.c
60
qp->lsb_mask &= ~(1 << 0);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1456
unsigned long bnxt_re_lock_cqs(struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/ib_verbs.c
1460
spin_lock_irqsave(&qp->scq->cq_lock, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1461
if (qp->rcq && qp->rcq != qp->scq)
sys/dev/bnxt/bnxt_re/ib_verbs.c
1462
spin_lock(&qp->rcq->cq_lock);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1467
void bnxt_re_unlock_cqs(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
1470
if (qp->rcq && qp->rcq != qp->scq)
sys/dev/bnxt/bnxt_re/ib_verbs.c
1471
spin_unlock(&qp->rcq->cq_lock);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1472
spin_unlock_irqrestore(&qp->scq->cq_lock, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1476
static int bnxt_re_destroy_gsi_sqp(struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/ib_verbs.c
1484
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1571
struct bnxt_re_qp *qp = to_bnxt_re(ib_qp, struct bnxt_re_qp, ib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1572
struct bnxt_re_dev *rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1578
list_del(&qp->list);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1580
if (qp->qplib_qp.type == CMDQ_CREATE_QP_TYPE_RC)
sys/dev/bnxt/bnxt_re/ib_verbs.c
1582
else if (qp->qplib_qp.type == CMDQ_CREATE_QP_TYPE_UD)
sys/dev/bnxt/bnxt_re/ib_verbs.c
1586
rc = bnxt_qplib_destroy_qp(&rdev->qplib_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1590
__func__, qp->qplib_qp.id, rc);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1593
flags = bnxt_re_lock_cqs(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1594
bnxt_qplib_clean_qp(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1595
bnxt_re_unlock_cqs(qp, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1598
bnxt_qplib_free_qp_res(&rdev->qplib_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1603
bnxt_re_destroy_gsi_sqp(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1605
bnxt_qplib_free_hdr_buf(&rdev->qplib_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1608
if (qp->rumem && !IS_ERR(qp->rumem))
sys/dev/bnxt/bnxt_re/ib_verbs.c
1609
ib_umem_release(qp->rumem);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1610
if (qp->sumem && !IS_ERR(qp->sumem))
sys/dev/bnxt/bnxt_re/ib_verbs.c
1611
ib_umem_release(qp->sumem);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1612
kfree(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1653
static int bnxt_re_setup_swqe_size(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
1662
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1663
qplqp = &qp->qplib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1696
struct bnxt_re_pd *pd, struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
1709
qplib_qp = &qp->qplib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1756
qp->sumem = umem;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1762
if (!qp->qplib_qp.srq) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
1775
qp->rumem = umem;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1786
ib_umem_release(qp->sumem);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1787
qp->sumem = NULL;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1899
struct bnxt_re_qp *qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1902
qp = kzalloc(sizeof(*qp), GFP_KERNEL);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1903
if (!qp) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
1907
memset(qp, 0, sizeof(*qp));
sys/dev/bnxt/bnxt_re/ib_verbs.c
1908
qp->rdev = rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1911
ether_addr_copy(qp->qplib_qp.smac, rdev->dev_addr);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1912
qp->qplib_qp.pd = &pd->qplib_pd;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1913
qp->qplib_qp.qp_handle = (u64)&qp->qplib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1914
qp->qplib_qp.type = IB_QPT_UD;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1916
qp->qplib_qp.max_inline_data = 0;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1917
qp->qplib_qp.sig_type = true;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1920
qp->qplib_qp.sq.wqe_size = bnxt_re_get_swqe_size(0, 6);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1921
qp->qplib_qp.sq.max_wqe = qp1_qp->rq.max_wqe;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1922
qp->qplib_qp.sq.max_sw_wqe = qp1_qp->rq.max_wqe;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1923
qp->qplib_qp.sq.max_sge = 2;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1925
qp->qplib_qp.sq.q_full_delta = 1;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1926
qp->qplib_qp.sq.sginfo.pgsize = PAGE_SIZE;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1927
qp->qplib_qp.sq.sginfo.pgshft = PAGE_SHIFT;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1929
qp->qplib_qp.scq = qp1_qp->scq;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1930
qp->qplib_qp.rcq = qp1_qp->rcq;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1932
qp->qplib_qp.rq.wqe_size = _max_rwqe_sz(6); /* 128 Byte wqe size */
sys/dev/bnxt/bnxt_re/ib_verbs.c
1933
qp->qplib_qp.rq.max_wqe = qp1_qp->rq.max_wqe;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1934
qp->qplib_qp.rq.max_sw_wqe = qp1_qp->rq.max_wqe;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1935
qp->qplib_qp.rq.max_sge = qp1_qp->rq.max_sge;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1936
qp->qplib_qp.rq.sginfo.pgsize = PAGE_SIZE;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1937
qp->qplib_qp.rq.sginfo.pgshft = PAGE_SHIFT;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1939
qp->qplib_qp.rq.q_full_delta = 1;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1940
qp->qplib_qp.mtu = qp1_qp->mtu;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1941
qp->qplib_qp.dpi = &rdev->dpi_privileged;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1943
rc = bnxt_qplib_alloc_hdr_buf(qp1_res, &qp->qplib_qp, 0,
sys/dev/bnxt/bnxt_re/ib_verbs.c
1948
rc = bnxt_qplib_create_qp(qp1_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1955
qp->qplib_qp.id);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1956
spin_lock_init(&qp->sq_lock);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1957
INIT_LIST_HEAD(&qp->list);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1959
list_add_tail(&qp->list, &rdev->qp_list);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1962
return qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1964
bnxt_qplib_free_hdr_buf(qp1_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1966
kfree(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
1970
static int bnxt_re_init_rq_attr(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
1979
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
1980
qplqp = &qp->qplib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2016
static void bnxt_re_adjust_gsi_rq_attr(struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/ib_verbs.c
2022
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2023
qplqp = &qp->qplib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2030
static int bnxt_re_init_sq_attr(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2043
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2044
qplqp = &qp->qplib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2066
rc = bnxt_re_setup_swqe_size(qp, init_attr);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2107
static void bnxt_re_adjust_gsi_sq_attr(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2116
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2117
qplqp = &qp->qplib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2160
static int bnxt_re_init_qp_attr(struct bnxt_re_qp *qp, struct bnxt_re_pd *pd,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2172
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2173
qplqp = &qp->qplib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2218
qp->scq = cq;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2229
qp->rcq = cq;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2233
rc = bnxt_re_init_rq_attr(qp, init_attr, cntx);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2237
bnxt_re_adjust_gsi_rq_attr(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2240
rc = bnxt_re_init_sq_attr(qp, init_attr, cntx, udata);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2244
bnxt_re_adjust_gsi_sq_attr(qp, init_attr, cntx);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2247
rc = bnxt_re_init_user_qp(rdev, pd, qp, udata);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2252
static int bnxt_re_create_shadow_gsi(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2261
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2269
sqp = bnxt_re_create_shadow_qp(pd, &rdev->qplib_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2278
sqp->rcq = qp->rcq;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2279
sqp->scq = qp->scq;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2281
&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2312
static int bnxt_re_create_gsi_qp(struct bnxt_re_qp *qp, struct bnxt_re_pd *pd)
sys/dev/bnxt/bnxt_re/ib_verbs.c
2321
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2322
qplqp = &qp->qplib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2339
rc = bnxt_re_create_shadow_gsi(qp, pd);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2375
struct bnxt_re_qp *qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2377
qp = kzalloc(sizeof(*qp), GFP_KERNEL);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2378
if (!qp)
sys/dev/bnxt/bnxt_re/ib_verbs.c
2380
return qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2392
struct bnxt_re_qp *qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2416
qp = __get_qp_from_qp_in(qp_in, rdev);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2417
if (!qp) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
2421
qp->rdev = rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2423
rc = bnxt_re_init_qp_attr(qp, pd, qp_init_attr, udata);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2429
rc = bnxt_re_create_gsi_qp(qp, pd);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2435
rc = bnxt_qplib_create_qp(&rdev->qplib_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2444
resp.qpid = qp->qplib_qp.id;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2453
qp->ib_qp.qp_num = qp->qplib_qp.id;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2455
rdev->gsi_ctx.gsi_qp = qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2456
spin_lock_init(&qp->sq_lock);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2457
spin_lock_init(&qp->rq_lock);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2458
INIT_LIST_HEAD(&qp->list);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2460
list_add_tail(&qp->list, &rdev->qp_list);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2480
return &qp->ib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2483
bnxt_qplib_destroy_qp(&rdev->qplib_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2486
if (qp->rumem && !IS_ERR(qp->rumem))
sys/dev/bnxt/bnxt_re/ib_verbs.c
2487
ib_umem_release(qp->rumem);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2488
if (qp->sumem && !IS_ERR(qp->sumem))
sys/dev/bnxt/bnxt_re/ib_verbs.c
2489
ib_umem_release(qp->sumem);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2492
kfree(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2501
struct bnxt_re_qp *qp = rdev->gsi_ctx.gsi_sqp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2505
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_STATE;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2506
qp->qplib_qp.state = qp1_qp->qplib_qp.state;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2509
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_PKEY;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2510
qp->qplib_qp.pkey_index = qp1_qp->qplib_qp.pkey_index;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2514
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_QKEY;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2516
qp->qplib_qp.qkey = BNXT_RE_QP_RANDOM_QKEY;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2519
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_SQ_PSN;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2520
qp->qplib_qp.sq.psn = qp1_qp->qplib_qp.sq.psn;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2523
rc = bnxt_qplib_modify_qp(&rdev->qplib_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2535
struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/ib_verbs.c
2542
if (qp->qplib_qp.nw_type == CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV2_IPV6) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
2550
memcpy(smac, qp->qplib_qp.smac, ETH_ALEN);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2553
memcpy(data, qp->qplib_qp.ah.dmac, ETH_ALEN);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2559
memcpy(data + buf_len, qp->qplib_qp.ah.dgid.data + ip_off, addr_len);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2562
memcpy(data + buf_len, qp->qp_info_entry.sgid.raw + ip_off, addr_len);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2565
qpn = htonl(qp->qplib_qp.dest_qpn);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2575
static void bnxt_re_update_qp_info(struct bnxt_re_dev *rdev, struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/ib_verbs.c
2579
type = __from_hw_to_ib_qp_type(qp->qplib_qp.type);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2582
if (ipv6_addr_v4mapped((struct in6_addr *)&qp->qplib_qp.ah.dgid)) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
2583
qp->qp_info_entry.s_ip.ipv4_addr = ipv4_from_gid(qp->qp_info_entry.sgid.raw);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2584
qp->qp_info_entry.d_ip.ipv4_addr = ipv4_from_gid(qp->qplib_qp.ah.dgid.data);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2586
memcpy(&qp->qp_info_entry.s_ip.ipv6_addr, qp->qp_info_entry.sgid.raw,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2587
sizeof(qp->qp_info_entry.s_ip.ipv6_addr));
sys/dev/bnxt/bnxt_re/ib_verbs.c
2588
memcpy(&qp->qp_info_entry.d_ip.ipv6_addr, qp->qplib_qp.ah.dgid.data,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2589
sizeof(qp->qp_info_entry.d_ip.ipv6_addr));
sys/dev/bnxt/bnxt_re/ib_verbs.c
2593
(qp->qplib_qp.nw_type == CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV2_IPV4 ||
sys/dev/bnxt/bnxt_re/ib_verbs.c
2594
qp->qplib_qp.nw_type == CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV2_IPV6)) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
2595
qp->qp_info_entry.s_port = get_source_port(rdev, qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2597
qp->qp_info_entry.d_port = BNXT_RE_QP_DEST_PORT;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2600
static void bnxt_qplib_manage_flush_qp(struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/ib_verbs.c
2605
if (qp->sumem)
sys/dev/bnxt/bnxt_re/ib_verbs.c
2608
if (qp->qplib_qp.state == CMDQ_MODIFY_QP_NEW_STATE_ERR) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
2609
rq = &qp->qplib_qp.rq;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2610
sq = &qp->qplib_qp.sq;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2612
dev_dbg(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/ib_verbs.c
2613
"Move QP = %p to flush list\n", qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2614
flags = bnxt_re_lock_cqs(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2615
bnxt_qplib_add_flush_qp(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2616
bnxt_re_unlock_cqs(qp, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2619
bnxt_re_handle_cqn(&qp->scq->qplib_cq);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2621
if (qp->rcq && (qp->rcq != qp->scq) &&
sys/dev/bnxt/bnxt_re/ib_verbs.c
2623
bnxt_re_handle_cqn(&qp->rcq->qplib_cq);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2626
if (qp->qplib_qp.state == CMDQ_MODIFY_QP_NEW_STATE_RESET) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
2627
dev_dbg(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/ib_verbs.c
2628
"Move QP = %p out of flush list\n", qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2629
flags = bnxt_re_lock_cqs(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2630
bnxt_qplib_clean_qp(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2631
bnxt_re_unlock_cqs(qp, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2653
struct bnxt_re_qp *qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2662
qp = to_bnxt_re(ib_qp, struct bnxt_re_qp, ib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2663
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2666
qp->qplib_qp.modify_flags = 0;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2667
ppp = &qp->qplib_qp.ppp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2669
curr_qp_state = __to_ib_qp_state(qp->qplib_qp.cur_qp_state);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2684
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_STATE;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2685
qp->qplib_qp.state = __from_ib_qp_state(qp_attr->qp_state);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2699
qp->qplib_qp.modify_flags |=
sys/dev/bnxt/bnxt_re/ib_verbs.c
2701
qp->qplib_qp.en_sqd_async_notify = true;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2704
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_ACCESS;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2705
qp->qplib_qp.access =
sys/dev/bnxt/bnxt_re/ib_verbs.c
2708
qp->qplib_qp.access |= BNXT_QPLIB_ACCESS_LOCAL_WRITE;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2709
qp->qplib_qp.access |= CMDQ_MODIFY_QP_ACCESS_REMOTE_WRITE;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2710
qp->qplib_qp.access |= CMDQ_MODIFY_QP_ACCESS_REMOTE_READ;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2713
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_PKEY;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2714
qp->qplib_qp.pkey_index = qp_attr->pkey_index;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2717
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_QKEY;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2718
qp->qplib_qp.qkey = qp_attr->qkey;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2721
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_DGID |
sys/dev/bnxt/bnxt_re/ib_verbs.c
2728
memcpy(qp->qplib_qp.ah.dgid.data, qp_attr->ah_attr.grh.dgid.raw,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2729
sizeof(qp->qplib_qp.ah.dgid.data));
sys/dev/bnxt/bnxt_re/ib_verbs.c
2730
qp->qplib_qp.ah.flow_label = qp_attr->ah_attr.grh.flow_label;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2731
qp->qplib_qp.ah.sgid_index = _get_sgid_index(rdev,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2733
qp->qplib_qp.ah.host_sgid_index = qp_attr->ah_attr.grh.sgid_index;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2734
qp->qplib_qp.ah.hop_limit = qp_attr->ah_attr.grh.hop_limit;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2735
qp->qplib_qp.ah.traffic_class =
sys/dev/bnxt/bnxt_re/ib_verbs.c
2737
qp->qplib_qp.ah.sl = qp_attr->ah_attr.sl;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2738
ether_addr_copy(qp->qplib_qp.ah.dmac, ROCE_DMAC(&qp_attr->ah_attr));
sys/dev/bnxt/bnxt_re/ib_verbs.c
2748
memcpy(qp->qplib_qp.smac, rdev->dev_addr,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2755
qp->qplib_qp.nw_type =
sys/dev/bnxt/bnxt_re/ib_verbs.c
2759
qp->qplib_qp.nw_type =
sys/dev/bnxt/bnxt_re/ib_verbs.c
2763
qp->qplib_qp.nw_type =
sys/dev/bnxt/bnxt_re/ib_verbs.c
2768
memcpy(&qp->qp_info_entry.sgid, gid_ptr, sizeof(qp->qp_info_entry.sgid));
sys/dev/bnxt/bnxt_re/ib_verbs.c
2773
bnxt_re_init_qpmtu(qp, if_getmtu(rdev->netdev), qp_attr_mask, qp_attr,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2778
resp.path_mtu = qp->qplib_qp.mtu;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2782
qp->qplib_qp.id);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2789
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_TIMEOUT;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2790
qp->qplib_qp.timeout = qp_attr->timeout;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2793
qp->qplib_qp.modify_flags |=
sys/dev/bnxt/bnxt_re/ib_verbs.c
2795
qp->qplib_qp.retry_cnt = qp_attr->retry_cnt;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2798
qp->qplib_qp.modify_flags |=
sys/dev/bnxt/bnxt_re/ib_verbs.c
2800
qp->qplib_qp.rnr_retry = qp_attr->rnr_retry;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2803
qp->qplib_qp.modify_flags |=
sys/dev/bnxt/bnxt_re/ib_verbs.c
2805
qp->qplib_qp.min_rnr_timer = qp_attr->min_rnr_timer;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2808
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_RQ_PSN;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2809
qp->qplib_qp.rq.psn = qp_attr->rq_psn;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2812
qp->qplib_qp.modify_flags |=
sys/dev/bnxt/bnxt_re/ib_verbs.c
2820
qp->qplib_qp.max_rd_atomic = min_t(u32, qp_attr->max_rd_atomic,
sys/dev/bnxt/bnxt_re/ib_verbs.c
2824
qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_SQ_PSN;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2825
qp->qplib_qp.sq.psn = qp_attr->sq_psn;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2836
qp->qplib_qp.modify_flags |=
sys/dev/bnxt/bnxt_re/ib_verbs.c
2838
qp->qplib_qp.max_dest_rd_atomic = qp_attr->max_dest_rd_atomic;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2841
qp->qplib_qp.modify_flags |=
sys/dev/bnxt/bnxt_re/ib_verbs.c
2861
qp->qplib_qp.sq.max_wqe = entries;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2862
qp->qplib_qp.sq.q_full_delta = qp->qplib_qp.sq.max_wqe -
sys/dev/bnxt/bnxt_re/ib_verbs.c
2869
qp->qplib_qp.sq.q_full_delta -= 1;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2870
qp->qplib_qp.sq.max_sge = qp_attr->cap.max_send_sge;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2871
if (qp->qplib_qp.rq.max_wqe) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
2875
qp->qplib_qp.rq.max_wqe = entries;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2876
qp->qplib_qp.rq.max_sw_wqe = qp->qplib_qp.rq.max_wqe;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2877
qp->qplib_qp.rq.q_full_delta = qp->qplib_qp.rq.max_wqe -
sys/dev/bnxt/bnxt_re/ib_verbs.c
2879
qp->qplib_qp.rq.max_sge = qp_attr->cap.max_recv_sge;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2885
qp->qplib_qp.modify_flags |=
sys/dev/bnxt/bnxt_re/ib_verbs.c
2887
qp->qplib_qp.dest_qpn = qp_attr->dest_qp_num;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2890
rc = bnxt_qplib_modify_qp(&rdev->qplib_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2896
bnxt_qplib_manage_flush_qp(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2916
rc = bnxt_re_modify_shadow_qp(rdev, qp, qp_attr_mask);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2920
bnxt_re_update_qp_info(rdev, qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2927
struct bnxt_re_qp *qp = to_bnxt_re(ib_qp, struct bnxt_re_qp, ib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
2928
struct bnxt_re_dev *rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2936
qplib_qp->id = qp->qplib_qp.id;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2937
qplib_qp->ah.host_sgid_index = qp->qplib_qp.ah.host_sgid_index;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2972
qp_attr->cap.max_send_wr = qp->qplib_qp.sq.max_wqe;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2973
qp_attr->cap.max_send_sge = qp->qplib_qp.sq.max_sge;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2974
qp_attr->cap.max_recv_wr = qp->qplib_qp.rq.max_wqe;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2975
qp_attr->cap.max_recv_sge = qp->qplib_qp.rq.max_sge;
sys/dev/bnxt/bnxt_re/ib_verbs.c
2976
qp_attr->cap.max_inline_data = qp->qplib_qp.max_inline_data;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3004
static int bnxt_re_build_qp1_send(struct bnxt_re_qp *qp, const struct ib_send_wr *wr,
sys/dev/bnxt/bnxt_re/ib_verbs.c
3017
memset(&qp->qp1_hdr, 0, sizeof(qp->qp1_hdr));
sys/dev/bnxt/bnxt_re/ib_verbs.c
3020
rc = bnxt_re_query_gid(&qp->rdev->ibdev, 1, qplib_ah->sgid_index, &sgid);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3025
qp->qp1_hdr.eth_present = 1;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3027
memcpy(qp->qp1_hdr.eth.dmac_h, ptmac, 4);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3029
memcpy(qp->qp1_hdr.eth.dmac_l, ptmac, 2);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3031
ptmac = qp->qplib_qp.smac;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3032
memcpy(qp->qp1_hdr.eth.smac_h, ptmac, 2);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3034
memcpy(qp->qp1_hdr.eth.smac_l, ptmac, 4);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3036
qp->qp1_hdr.eth.type = cpu_to_be16(BNXT_QPLIB_ETHTYPE_ROCEV1);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3041
qp->qp1_hdr.vlan_present = 1;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3042
qp->qp1_hdr.eth.type = cpu_to_be16(ETH_P_8021Q);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3045
qp->qp1_hdr.grh_present = 1;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3046
qp->qp1_hdr.grh.ip_version = 6;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3047
qp->qp1_hdr.grh.payload_length =
sys/dev/bnxt/bnxt_re/ib_verbs.c
3050
qp->qp1_hdr.grh.next_header = 0x1b;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3051
memcpy(qp->qp1_hdr.grh.source_gid.raw, sgid.raw, sizeof(sgid));
sys/dev/bnxt/bnxt_re/ib_verbs.c
3052
memcpy(qp->qp1_hdr.grh.destination_gid.raw, qplib_ah->dgid.data,
sys/dev/bnxt/bnxt_re/ib_verbs.c
3057
qp->qp1_hdr.bth.opcode = IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3058
qp->qp1_hdr.immediate_present = 1;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3060
qp->qp1_hdr.bth.opcode = IB_OPCODE_UD_SEND_ONLY;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3063
qp->qp1_hdr.bth.solicited_event = 1;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3064
qp->qp1_hdr.bth.pad_count = (4 - payload_size) & 3;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3066
qp->qp1_hdr.bth.pkey = cpu_to_be16(0xFFFF);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3067
qp->qp1_hdr.bth.destination_qpn = IB_QP1;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3068
qp->qp1_hdr.bth.ack_req = 0;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3069
qp->send_psn++;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3070
qp->send_psn &= BTH_PSN_MASK;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3071
qp->qp1_hdr.bth.psn = cpu_to_be32(qp->send_psn);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3074
qp->qp1_hdr.deth.qkey = cpu_to_be32(IB_QP1_QKEY);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3075
qp->qp1_hdr.deth.source_qpn = IB_QP1;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3078
buf = bnxt_qplib_get_qp1_sq_buf(&qp->qplib_qp, &sge);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3080
dev_err(rdev_to_dev(qp->rdev), "QP1 buffer is empty!\n");
sys/dev/bnxt/bnxt_re/ib_verbs.c
3096
static int bnxt_re_build_gsi_send(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
3103
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3115
rc = bnxt_re_build_qp1_send(qp, wr, wqe, len);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3128
static int bnxt_re_build_qp1_recv(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
3132
struct bnxt_re_dev *rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3139
if (bnxt_qplib_get_qp1_rq_buf(&qp->qplib_qp, &sge)) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
3166
dev_err(rdev_to_dev(qp->rdev),"QP1 rq buffer is empty!\n");
sys/dev/bnxt/bnxt_re/ib_verbs.c
3180
dev_err(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/ib_verbs.c
3194
dev_err(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/ib_verbs.c
3208
dev_err(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/ib_verbs.c
3219
dev_err(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/ib_verbs.c
3227
dev_err(rdev_to_dev(qp->rdev), "QP1 buffer is empty!\n");
sys/dev/bnxt/bnxt_re/ib_verbs.c
3234
static int bnxt_re_build_qp1_shadow_qp_recv(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
3244
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3246
rq_prod_index = bnxt_qplib_get_rq_prod_index(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3248
if (bnxt_qplib_get_qp1_rq_buf(&qp->qplib_qp, &sge)) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
3258
dev_err(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/ib_verbs.c
3277
static bool is_ud_qp(struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/ib_verbs.c
3279
return (qp->qplib_qp.type == CMDQ_CREATE_QP_TYPE_UD ||
sys/dev/bnxt/bnxt_re/ib_verbs.c
3280
qp->qplib_qp.type == CMDQ_CREATE_QP_TYPE_GSI);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3283
static int bnxt_re_build_send_wqe(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
3289
if(is_ud_qp(qp)) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
3308
dev_err(rdev_to_dev(qp->rdev), "%s Invalid opcode %d!\n",
sys/dev/bnxt/bnxt_re/ib_verbs.c
3464
static void bnxt_ud_qp_hw_stall_workaround(struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/ib_verbs.c
3466
if ((qp->ib_qp.qp_type == IB_QPT_UD || qp->ib_qp.qp_type == IB_QPT_GSI ||
sys/dev/bnxt/bnxt_re/ib_verbs.c
3467
qp->ib_qp.qp_type == IB_QPT_RAW_ETHERTYPE) &&
sys/dev/bnxt/bnxt_re/ib_verbs.c
3468
qp->qplib_qp.wqe_cnt == BNXT_RE_UD_QP_HW_STALL) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
3474
bnxt_re_modify_qp(&qp->ib_qp, &qp_attr, qp_attr_mask, NULL);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3475
qp->qplib_qp.wqe_cnt = 0;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3480
struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
3487
spin_lock_irqsave(&qp->sq_lock, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3492
if (wr->num_sge > qp->qplib_qp.sq.max_sge) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
3502
rc = bnxt_re_build_send_wqe(qp, wr, &wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3506
rc = bnxt_qplib_post_send(&qp->qplib_qp, &wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3515
bnxt_qplib_post_send_db(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3516
bnxt_ud_qp_hw_stall_workaround(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3517
spin_unlock_irqrestore(&qp->sq_lock, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3536
struct bnxt_re_qp *qp = to_bnxt_re(ib_qp, struct bnxt_re_qp, ib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3543
rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3544
spin_lock_irqsave(&qp->sq_lock, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3549
if (wr->num_sge > qp->qplib_qp.sq.max_sge) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
3566
rc = bnxt_re_build_gsi_send(qp, wr, &wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3582
rc = bnxt_re_build_send_wqe(qp, wr, &wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3615
rc = bnxt_qplib_post_send(&qp->qplib_qp, &wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3626
bnxt_qplib_post_send_db(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3628
bnxt_ud_qp_hw_stall_workaround(qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3629
spin_unlock_irqrestore(&qp->sq_lock, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3635
struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
3646
if (wr->num_sge > qp->qplib_qp.rq.max_sge) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
3657
rc = bnxt_qplib_post_recv(&qp->qplib_qp, &wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3666
bnxt_qplib_post_recv_db(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3670
static int bnxt_re_build_gsi_recv(struct bnxt_re_qp *qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
3674
struct bnxt_re_dev *rdev = qp->rdev;
sys/dev/bnxt/bnxt_re/ib_verbs.c
3678
rc = bnxt_re_build_qp1_shadow_qp_recv(qp, wr, wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3680
rc = bnxt_re_build_qp1_recv(qp, wr, wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3688
struct bnxt_re_qp *qp = to_bnxt_re(ib_qp, struct bnxt_re_qp, ib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3695
spin_lock_irqsave(&qp->rq_lock, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3698
if (wr->num_sge > qp->qplib_qp.rq.max_sge) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
3699
dev_err(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/ib_verbs.c
3710
qp->rdev->gsi_ctx.gsi_qp_mode != BNXT_RE_GSI_MODE_UD) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
3713
rc = bnxt_re_build_gsi_recv(qp, wr, &wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3717
rc = bnxt_qplib_post_recv(&qp->qplib_qp, &wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3720
dev_err(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/ib_verbs.c
3727
bnxt_qplib_post_recv_db(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3734
bnxt_qplib_post_recv_db(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
3735
spin_unlock_irqrestore(&qp->rq_lock, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
4583
wc->qp = &gsi_qp->ib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
4609
struct bnxt_re_qp *qp, struct ib_wc *wc,
sys/dev/bnxt/bnxt_re/ib_verbs.c
4621
if (rdev->gsi_ctx.gsi_qp->qplib_qp.id == qp->qplib_qp.id &&
sys/dev/bnxt/bnxt_re/ib_verbs.c
4643
static int bnxt_re_legacy_send_phantom_wqe(struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/ib_verbs.c
4645
struct bnxt_qplib_qp *lib_qp = &qp->qplib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
4649
spin_lock_irqsave(&qp->sq_lock, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
4661
spin_unlock_irqrestore(&qp->sq_lock, flags);
sys/dev/bnxt/bnxt_re/ib_verbs.c
4669
struct bnxt_re_qp *qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
4713
qp = container_of(lib_qp, struct bnxt_re_qp, qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.c
4714
if (bnxt_re_legacy_send_phantom_wqe(qp) == -ENOMEM)
sys/dev/bnxt/bnxt_re/ib_verbs.c
4735
qp = to_bnxt_re((struct bnxt_qplib_qp *)cqe->qp_handle,
sys/dev/bnxt/bnxt_re/ib_verbs.c
4737
if (!qp) {
sys/dev/bnxt/bnxt_re/ib_verbs.c
4742
wc->qp = &qp->ib_qp;
sys/dev/bnxt/bnxt_re/ib_verbs.c
4752
qp->qplib_qp.id ==
sys/dev/bnxt/bnxt_re/ib_verbs.c
4767
rc = bnxt_re_process_raw_qp_packet_receive(qp, cqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
4791
qp->qplib_qp.id ==
sys/dev/bnxt/bnxt_re/ib_verbs.c
4804
bnxt_re_process_res_shadow_qp_wc(qp, wc, cqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
4808
bnxt_re_process_res_ud_wc(rdev, qp, wc, cqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
618
struct bnxt_re_qp *qp = container_of(qplib_qp, struct bnxt_re_qp,
sys/dev/bnxt/bnxt_re/ib_verbs.c
620
struct ib_pd *ib_pd = qp->ib_qp.pd;
sys/dev/bnxt/bnxt_re/ib_verbs.c
634
dev_dbg(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/ib_verbs.c
636
wqe.bind.r_key, qp->qplib_qp.id, pd);
sys/dev/bnxt/bnxt_re/ib_verbs.c
637
rc = bnxt_qplib_post_send(&qp->qplib_qp, &wqe);
sys/dev/bnxt/bnxt_re/ib_verbs.c
639
dev_err(rdev_to_dev(qp->rdev), "Failed to bind fence-WQE\n");
sys/dev/bnxt/bnxt_re/ib_verbs.c
642
bnxt_qplib_post_send_db(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/ib_verbs.h
331
int bnxt_re_modify_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr,
sys/dev/bnxt/bnxt_re/ib_verbs.h
333
int bnxt_re_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr,
sys/dev/bnxt/bnxt_re/ib_verbs.h
373
unsigned long bnxt_re_lock_cqs(struct bnxt_re_qp *qp);
sys/dev/bnxt/bnxt_re/ib_verbs.h
374
void bnxt_re_unlock_cqs(struct bnxt_re_qp *qp, unsigned long flags);
sys/dev/bnxt/bnxt_re/ib_verbs.h
549
static inline void bnxt_re_init_qpmtu(struct bnxt_re_qp *qp, int mtu,
sys/dev/bnxt/bnxt_re/ib_verbs.h
573
qp->qplib_qp.path_mtu = __from_ib_mtu(qpmtu);
sys/dev/bnxt/bnxt_re/ib_verbs.h
574
qp->qplib_qp.mtu = qpmtu_int;
sys/dev/bnxt/bnxt_re/ib_verbs.h
575
qp->qplib_qp.modify_flags |=
sys/dev/bnxt/bnxt_re/main.c
210
static bool bnxt_re_is_qp1_qp(struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/main.c
212
return qp->ib_qp.qp_type == IB_QPT_GSI;
sys/dev/bnxt/bnxt_re/main.c
217
struct bnxt_re_qp *qp;
sys/dev/bnxt/bnxt_re/main.c
220
list_for_each_entry(qp, &rdev->qp_list, list) {
sys/dev/bnxt/bnxt_re/main.c
221
if (bnxt_re_is_qp1_qp(qp)) {
sys/dev/bnxt/bnxt_re/main.c
223
return qp;
sys/dev/bnxt/bnxt_re/main.c
2283
static int bnxt_re_handle_qp_async_event(void *qp_event, struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/main.c
2289
if (qp->qplib_qp.state == CMDQ_MODIFY_QP_NEW_STATE_ERR &&
sys/dev/bnxt/bnxt_re/main.c
2290
!qp->qplib_qp.is_user) {
sys/dev/bnxt/bnxt_re/main.c
2291
flags = bnxt_re_lock_cqs(qp);
sys/dev/bnxt/bnxt_re/main.c
2292
bnxt_qplib_add_flush_qp(&qp->qplib_qp);
sys/dev/bnxt/bnxt_re/main.c
2293
bnxt_re_unlock_cqs(qp, flags);
sys/dev/bnxt/bnxt_re/main.c
2296
event.device = &qp->rdev->ibdev;
sys/dev/bnxt/bnxt_re/main.c
2297
event.element.qp = &qp->ib_qp;
sys/dev/bnxt/bnxt_re/main.c
2335
if (qp->qplib_qp.srq)
sys/dev/bnxt/bnxt_re/main.c
2341
dev_err(rdev_to_dev(qp->rdev),
sys/dev/bnxt/bnxt_re/main.c
2343
__func__, qp->qplib_qp.is_user ? "user" : "kernel",
sys/dev/bnxt/bnxt_re/main.c
2344
qp->qplib_qp.id,
sys/dev/bnxt/bnxt_re/main.c
2352
if (event.device && qp->ib_qp.event_handler)
sys/dev/bnxt/bnxt_re/main.c
2353
qp->ib_qp.event_handler(&event, qp->ib_qp.qp_context);
sys/dev/bnxt/bnxt_re/main.c
2398
struct bnxt_re_qp *qp;
sys/dev/bnxt/bnxt_re/main.c
2410
qp = container_of(qplqp, struct bnxt_re_qp, qplib_qp);
sys/dev/bnxt/bnxt_re/main.c
2411
rc = bnxt_re_handle_qp_async_event(affi_async, qp);
sys/dev/bnxt/bnxt_re/main.c
2545
static void bnxt_re_dispatch_event(struct ib_device *ibdev, struct ib_qp *qp,
sys/dev/bnxt/bnxt_re/main.c
2551
if (qp) {
sys/dev/bnxt/bnxt_re/main.c
2552
ib_event.element.qp = qp;
sys/dev/bnxt/bnxt_re/main.c
2554
if (qp->event_handler)
sys/dev/bnxt/bnxt_re/main.c
2555
qp->event_handler(&ib_event, qp->qp_context);
sys/dev/bnxt/bnxt_re/main.c
2567
struct bnxt_re_qp *qp)
sys/dev/bnxt/bnxt_re/main.c
2570
return (qp->ib_qp.qp_type == IB_QPT_GSI) ||
sys/dev/bnxt/bnxt_re/main.c
2571
(qp == rdev->gsi_ctx.gsi_sqp);
sys/dev/bnxt/bnxt_re/main.c
2573
return (qp->ib_qp.qp_type == IB_QPT_GSI);
sys/dev/bnxt/bnxt_re/main.c
2583
struct bnxt_re_qp *qp;
sys/dev/bnxt/bnxt_re/main.c
2595
list_for_each_entry(qp, &rdev->qp_list, list) {
sys/dev/bnxt/bnxt_re/main.c
2596
qpl_qp = &qp->qplib_qp;
sys/dev/bnxt/bnxt_re/main.c
2597
if (dev_detached || !bnxt_re_is_qp1_or_shadow_qp(rdev, qp)) {
sys/dev/bnxt/bnxt_re/main.c
2612
flags = bnxt_re_lock_cqs(qp);
sys/dev/bnxt/bnxt_re/main.c
2614
bnxt_re_unlock_cqs(qp, flags);
sys/dev/bnxt/bnxt_re/main.c
2618
bnxt_re_modify_qp(&qp->ib_qp,
sys/dev/bnxt/bnxt_re/main.c
2623
bnxt_re_dispatch_event(&rdev->ibdev, &qp->ib_qp,
sys/dev/bnxt/bnxt_re/main.c
364
struct bnxt_re_qp *qp;
sys/dev/bnxt/bnxt_re/main.c
369
qp = bnxt_re_get_qp1_qp(rdev);
sys/dev/bnxt/bnxt_re/main.c
370
if (!qp)
sys/dev/bnxt/bnxt_re/main.c
373
qp->qplib_qp.modify_flags = CMDQ_MODIFY_QP_MODIFY_MASK_TOS_DSCP;
sys/dev/bnxt/bnxt_re/main.c
374
qp->qplib_qp.tos_dscp = rdev->cc_param.qp1_tos_dscp;
sys/dev/bnxt/bnxt_re/main.c
376
return bnxt_qplib_modify_qp(&rdev->qplib_res, &qp->qplib_qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1000
if (!qp->srq) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1006
qp->id = le32_to_cpu(resp.xid);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1007
qp->cur_qp_state = CMDQ_MODIFY_QP_NEW_STATE_RESET;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1008
qp->cctx = res->cctx;
sys/dev/bnxt/bnxt_re/qplib_fp.c
101
spin_unlock(&qp->rcq->flush_lock);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1010
sq->dbinfo.xid = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1011
sq->dbinfo.db = qp->dpi->dbr;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1012
sq->dbinfo.max_slot = _set_sq_max_slot(qp->wqe_mode);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1019
rq->dbinfo.xid = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
102
spin_unlock(&qp->scq->flush_lock);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1020
rq->dbinfo.db = qp->dpi->dbr;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1030
tbl->rec[tbl->max].xid = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1031
tbl->rec[tbl->max].handle = qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1038
__qplib_destroy_qp(rcfw, qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1047
static void bnxt_qplib_init_psn_ptr(struct bnxt_qplib_qp *qp, int size)
sys/dev/bnxt/bnxt_re/qplib_fp.c
105
void bnxt_qplib_add_flush_qp(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1054
sq = &qp->sq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1065
int bnxt_qplib_create_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1072
struct bnxt_qplib_q *sq = &qp->sq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1073
struct bnxt_qplib_q *rq = &qp->rq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
108
bnxt_qplib_acquire_cq_flush_locks(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1085
qp->cctx = res->cctx;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1087
qp->dev_cap_flags = res->dattr->dev_cap_flags;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1088
qp->is_host_msn_tbl = _is_host_msn_table(res->dattr->dev_cap_ext_flags2);
sys/dev/bnxt/bnxt_re/qplib_fp.c
109
__bnxt_qplib_add_flush_qp(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1092
req.type = qp->type;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1093
req.dpi = cpu_to_le32(qp->dpi->dpi);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1094
req.qp_handle = cpu_to_le64(qp->qp_handle);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1097
if (qp->type == CMDQ_CREATE_QP_TYPE_RC) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1098
psn_sz = _is_chip_gen_p5_p7(qp->cctx) ?
sys/dev/bnxt/bnxt_re/qplib_fp.c
110
bnxt_qplib_release_cq_flush_locks(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1101
if (qp->is_host_msn_tbl) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1103
qp->msn = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1112
hwq_attr.depth = bnxt_qplib_get_depth(sq, qp->wqe_mode, true);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1115
_set_sq_size(sq, qp->wqe_mode) : 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1117
if (qp->is_host_msn_tbl && psn_sz) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1118
if (qp->wqe_mode == BNXT_QPLIB_WQE_MODE_STATIC)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1119
hwq_attr.aux_depth = roundup_pow_of_two(_set_sq_size(sq, qp->wqe_mode));
sys/dev/bnxt/bnxt_re/qplib_fp.c
1121
hwq_attr.aux_depth = roundup_pow_of_two(_set_sq_size(sq, qp->wqe_mode)) / 2;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1122
qp->msn_tbl_sz = hwq_attr.aux_depth;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1123
qp->msn = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
113
static void __bnxt_qplib_del_flush_qp(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1130
sqsz = _set_sq_size(sq, qp->wqe_mode);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1133
pr_err("QPLIB: FP: QP (0x%x) exceeds sq size %d\n", qp->id, sqsz);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1147
req.scq_cid = cpu_to_le32(qp->scq->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
115
if (qp->sq.flushed) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1150
if (!qp->srq) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1154
hwq_attr.depth = bnxt_qplib_get_depth(rq, qp->wqe_mode, false);
sys/dev/bnxt/bnxt_re/qplib_fp.c
116
qp->sq.flushed = false;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1168
nsge = (qp->wqe_mode == BNXT_QPLIB_WQE_MODE_STATIC) ?
sys/dev/bnxt/bnxt_re/qplib_fp.c
117
list_del(&qp->sq_flush);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1176
req.srq_cid = cpu_to_le32(qp->srq->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1178
req.rcq_cid = cpu_to_le32(qp->rcq->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1182
if (qp->sig_type)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1184
if (qp->wqe_mode == BNXT_QPLIB_WQE_MODE_VARIABLE)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1189
bnxt_ext_stats_supported(qp->cctx, res->dattr->dev_cap_flags, res->is_vf))
sys/dev/bnxt/bnxt_re/qplib_fp.c
119
if (!qp->srq) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1195
xrrq = &qp->orrq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1197
ORD_LIMIT_TO_ORRQ_SLOTS(qp->max_rd_atomic);
sys/dev/bnxt/bnxt_re/qplib_fp.c
120
if (qp->rq.flushed) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
121
qp->rq.flushed = false;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1216
xrrq = &qp->irrq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1218
qp->max_dest_rd_atomic);
sys/dev/bnxt/bnxt_re/qplib_fp.c
122
list_del(&qp->rq_flush);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1230
req.pd_id = cpu_to_le32(qp->pd->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1240
if (!qp->is_user) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1244
if (!qp->srq) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1250
bnxt_qplib_init_psn_ptr(qp, psn_sz);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1252
qp->id = le32_to_cpu(resp.xid);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1253
qp->cur_qp_state = CMDQ_MODIFY_QP_NEW_STATE_RESET;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1254
INIT_LIST_HEAD(&qp->sq_flush);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1255
INIT_LIST_HEAD(&qp->rq_flush);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1258
sq->dbinfo.xid = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1259
sq->dbinfo.db = qp->dpi->dbr;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1260
sq->dbinfo.max_slot = _set_sq_max_slot(qp->wqe_mode);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1265
sq->dbinfo.seed = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1268
rq->dbinfo.xid = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1269
rq->dbinfo.db = qp->dpi->dbr;
sys/dev/bnxt/bnxt_re/qplib_fp.c
127
void bnxt_qplib_clean_qp(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1275
rq->dbinfo.seed = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1279
qp_idx = map_qp_id_to_tbl_indx(qp->id, tbl);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1281
tbl->rec[qp_idx].xid = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1282
tbl->rec[qp_idx].handle = qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1289
__qplib_destroy_qp(rcfw, qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1291
bnxt_qplib_free_hwq(res, &qp->irrq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1293
bnxt_qplib_free_hwq(res, &qp->orrq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
130
bnxt_qplib_acquire_cq_flush_locks(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1302
static void __filter_modify_flags(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1304
switch (qp->cur_qp_state) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1306
switch (qp->state) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
131
__clean_cq(qp->scq, (u64)(unsigned long)qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1314
switch (qp->state) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1316
if (!(qp->modify_flags &
sys/dev/bnxt/bnxt_re/qplib_fp.c
1318
qp->modify_flags |=
sys/dev/bnxt/bnxt_re/qplib_fp.c
132
qp->sq.hwq.prod = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1320
qp->path_mtu = CMDQ_MODIFY_QP_PATH_MTU_MTU_2048;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1322
qp->modify_flags &=
sys/dev/bnxt/bnxt_re/qplib_fp.c
1325
if (qp->max_dest_rd_atomic < 1)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1326
qp->max_dest_rd_atomic = 1;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1327
qp->modify_flags &= ~CMDQ_MODIFY_QP_MODIFY_MASK_SRC_MAC;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1329
if (!(qp->modify_flags &
sys/dev/bnxt/bnxt_re/qplib_fp.c
133
qp->sq.hwq.cons = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1331
qp->modify_flags |=
sys/dev/bnxt/bnxt_re/qplib_fp.c
1333
qp->ah.sgid_index = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
134
qp->sq.swq_start = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1341
switch (qp->state) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1344
if (qp->max_rd_atomic < 1)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1345
qp->max_rd_atomic = 1;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1346
qp->modify_flags &=
sys/dev/bnxt/bnxt_re/qplib_fp.c
135
qp->sq.swq_last = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
136
__clean_cq(qp->rcq, (u64)(unsigned long)qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
137
qp->rq.hwq.prod = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1377
int bnxt_qplib_modify_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
138
qp->rq.hwq.cons = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
139
qp->rq.swq_start = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1392
__filter_modify_flags(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1393
bmask = qp->modify_flags;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1394
req.modify_mask = cpu_to_le32(qp->modify_flags);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1395
req.qp_cid = cpu_to_le32(qp->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1398
(qp->state & CMDQ_MODIFY_QP_NEW_STATE_MASK) |
sys/dev/bnxt/bnxt_re/qplib_fp.c
1399
(qp->en_sqd_async_notify == true ?
sys/dev/bnxt/bnxt_re/qplib_fp.c
140
qp->rq.swq_last = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1401
if (__can_request_ppp(qp)) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1404
req.pingpong_push_dpi = qp->ppp.dpi;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1408
req.network_type_en_sqd_async_notify_new_state |= qp->nw_type;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1411
req.access = qp->access;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1417
req.qkey = cpu_to_le32(qp->qkey);
sys/dev/bnxt/bnxt_re/qplib_fp.c
142
__bnxt_qplib_del_flush_qp(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1420
memcpy(temp32, qp->ah.dgid.data, sizeof(struct bnxt_qplib_gid));
sys/dev/bnxt/bnxt_re/qplib_fp.c
1427
req.flow_label = cpu_to_le32(qp->ah.flow_label);
sys/dev/bnxt/bnxt_re/qplib_fp.c
143
bnxt_qplib_release_cq_flush_locks(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1430
req.sgid_index = cpu_to_le16(res->sgid_tbl.hw_id[qp->ah.sgid_index]);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1433
req.hop_limit = qp->ah.hop_limit;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1436
req.traffic_class = qp->ah.traffic_class;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1439
memcpy(req.dest_mac, qp->ah.dmac, 6);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1442
req.path_mtu_pingpong_push_enable = qp->path_mtu;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1445
req.timeout = qp->timeout;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1448
req.retry_cnt = qp->retry_cnt;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1451
req.rnr_retry = qp->rnr_retry;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1454
req.min_rnr_timer = qp->min_rnr_timer;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1457
req.rq_psn = cpu_to_le32(qp->rq.psn);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1460
req.sq_psn = cpu_to_le32(qp->sq.psn);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1464
ORD_LIMIT_TO_ORRQ_SLOTS(qp->max_rd_atomic);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1468
IRD_LIMIT_TO_IRRQ_SLOTS(qp->max_dest_rd_atomic);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1470
req.sq_size = cpu_to_le32(qp->sq.hwq.max_elements);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1471
req.rq_size = cpu_to_le32(qp->rq.hwq.max_elements);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1472
req.sq_sge = cpu_to_le16(qp->sq.max_sge);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1473
req.rq_sge = cpu_to_le16(qp->rq.max_sge);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1474
req.max_inline_data = cpu_to_le32(qp->max_inline_data);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1476
req.dest_qp_id = cpu_to_le32(qp->dest_qpn);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1481
((qp->tos_ecn << CMDQ_MODIFY_QP_TOS_ECN_SFT) &
sys/dev/bnxt/bnxt_re/qplib_fp.c
1485
((qp->tos_dscp << CMDQ_MODIFY_QP_TOS_DSCP_SFT) &
sys/dev/bnxt/bnxt_re/qplib_fp.c
1487
req.vlan_pcp_vlan_dei_vlan_id = cpu_to_le16(qp->vlan_id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1490
msg.qp_state = qp->state;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1493
if (rc == -ETIMEDOUT && (qp->state == CMDQ_MODIFY_QP_NEW_STATE_ERR)) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1494
qp->cur_qp_state = qp->state;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1499
if (qp->state == CMDQ_MODIFY_QP_NEW_STATE_RTR)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1500
qp->lag_src_mac = be32_to_cpu(resp.lag_src_mac);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1503
qp->ppp.st_idx_en = resp.pingpong_push_state_index_enabled;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1505
qp->cur_qp_state = qp->state;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1509
int bnxt_qplib_query_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1529
req.qp_cid = cpu_to_le32(qp->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1538
qp->state = sb->en_sqd_async_notify_state &
sys/dev/bnxt/bnxt_re/qplib_fp.c
1540
qp->cur_qp_state = qp->state;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1541
qp->en_sqd_async_notify = sb->en_sqd_async_notify_state &
sys/dev/bnxt/bnxt_re/qplib_fp.c
1544
qp->access = sb->access;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1545
qp->pkey_index = le16_to_cpu(sb->pkey);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1546
qp->qkey = le32_to_cpu(sb->qkey);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1552
memcpy(qp->ah.dgid.data, temp32, sizeof(qp->ah.dgid.data));
sys/dev/bnxt/bnxt_re/qplib_fp.c
1554
qp->ah.flow_label = le32_to_cpu(sb->flow_label);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1556
qp->ah.sgid_index = 0;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1559
qp->ah.sgid_index = i;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1566
qp->id, le16_to_cpu(sb->sgid_index));
sys/dev/bnxt/bnxt_re/qplib_fp.c
1568
qp->ah.hop_limit = sb->hop_limit;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1569
qp->ah.traffic_class = sb->traffic_class;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1570
memcpy(qp->ah.dmac, sb->dest_mac, ETH_ALEN);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1571
qp->ah.vlan_id = le16_to_cpu(sb->path_mtu_dest_vlan_id) &
sys/dev/bnxt/bnxt_re/qplib_fp.c
1574
qp->path_mtu = le16_to_cpu(sb->path_mtu_dest_vlan_id) &
sys/dev/bnxt/bnxt_re/qplib_fp.c
1576
qp->timeout = sb->timeout;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1577
qp->retry_cnt = sb->retry_cnt;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1578
qp->rnr_retry = sb->rnr_retry;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1579
qp->min_rnr_timer = sb->min_rnr_timer;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1580
qp->rq.psn = le32_to_cpu(sb->rq_psn);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1581
qp->max_rd_atomic = ORRQ_SLOTS_TO_ORD_LIMIT(sb->max_rd_atomic);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1582
qp->sq.psn = le32_to_cpu(sb->sq_psn);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1583
qp->max_dest_rd_atomic =
sys/dev/bnxt/bnxt_re/qplib_fp.c
1585
qp->sq.max_wqe = qp->sq.hwq.max_elements;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1586
qp->rq.max_wqe = qp->rq.hwq.max_elements;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1587
qp->sq.max_sge = le16_to_cpu(sb->sq_sge);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1588
qp->rq.max_sge = le16_to_cpu(sb->rq_sge);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1589
qp->max_inline_data = le32_to_cpu(sb->max_inline_data);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1590
qp->dest_qpn = le32_to_cpu(sb->dest_qp_id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1591
memcpy(qp->smac, sb->src_mac, ETH_ALEN);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1592
qp->vlan_id = le16_to_cpu(sb->vlan_pcp_vlan_dei_vlan_id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1593
qp->port_id = le16_to_cpu(sb->port_id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1601
static void __clean_cq(struct bnxt_qplib_cq *cq, u64 qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1620
if (qp == le64_to_cpu(cqe->qp_handle))
sys/dev/bnxt/bnxt_re/qplib_fp.c
1630
if (qp == le64_to_cpu(cqe->qp_handle))
sys/dev/bnxt/bnxt_re/qplib_fp.c
1644
struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1653
qp_idx = map_qp_id_to_tbl_indx(qp->id, tbl);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1659
rc = __qplib_destroy_qp(rcfw, qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1662
tbl->rec[qp_idx].xid = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1663
tbl->rec[qp_idx].handle = qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1672
struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1674
if (qp->irrq.max_elements)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1675
bnxt_qplib_free_hwq(res, &qp->irrq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1676
if (qp->orrq.max_elements)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1677
bnxt_qplib_free_hwq(res, &qp->orrq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1679
if (!qp->is_user)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1680
kfree(qp->rq.swq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1681
bnxt_qplib_free_hwq(res, &qp->rq.hwq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1683
if (!qp->is_user)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1684
kfree(qp->sq.swq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1685
bnxt_qplib_free_hwq(res, &qp->sq.hwq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1688
void *bnxt_qplib_get_qp1_sq_buf(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
1691
struct bnxt_qplib_q *sq = &qp->sq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1697
buf = qp->sq_hdr_buf;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1708
u32 bnxt_qplib_get_rq_prod_index(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1710
struct bnxt_qplib_q *rq = &qp->rq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1715
void *bnxt_qplib_get_qp1_rq_buf(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
1718
struct bnxt_qplib_q *rq = &qp->rq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1724
buf = qp->rq_hdr_buf;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1736
static void bnxt_qplib_fill_msn_search(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
1753
qp->msn,
sys/dev/bnxt/bnxt_re/qplib_fp.c
1760
qp->msn++;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1761
qp->msn %= qp->msn_tbl_sz;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1764
static void bnxt_qplib_fill_psn_search(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
1777
if (qp->is_host_msn_tbl) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1778
bnxt_qplib_fill_msn_search(qp, wqe, swq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1791
if (_is_chip_gen_p5_p7(qp->cctx)) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1811
static int bnxt_qplib_put_inline(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
1823
sq_hwq = &qp->sq.hwq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1829
if (t_len > qp->max_inline_data)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1876
static u16 _calculate_wqe_byte(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
1886
wqe_size = (ilsize > qp->max_inline_data) ?
sys/dev/bnxt/bnxt_re/qplib_fp.c
1887
qp->max_inline_data : ilsize;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1909
static void bnxt_qplib_pull_psn_buff(struct bnxt_qplib_qp *qp, struct bnxt_qplib_q *sq,
sys/dev/bnxt/bnxt_re/qplib_fp.c
1924
tail = qp->msn;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1925
tail %= qp->msn_tbl_sz;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1934
void bnxt_qplib_post_send_db(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1936
struct bnxt_qplib_q *sq = &qp->sq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1941
int bnxt_qplib_post_send(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
1946
struct bnxt_qplib_q *sq = &qp->sq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
1962
if (qp->state != CMDQ_MODIFY_QP_NEW_STATE_RTS &&
sys/dev/bnxt/bnxt_re/qplib_fp.c
1963
qp->state != CMDQ_MODIFY_QP_NEW_STATE_ERR) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
1966
qp->id, qp->state);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1971
wqe_slots = _calculate_wqe_byte(qp, wqe, &wqe_size);
sys/dev/bnxt/bnxt_re/qplib_fp.c
1972
slots_needed = (qp->wqe_mode == BNXT_QPLIB_WQE_MODE_STATIC) ?
sys/dev/bnxt/bnxt_re/qplib_fp.c
1977
"QPLIB: FP: QP (0x%x) SQ is full!\n", qp->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
198
struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
1993
bnxt_qplib_pull_psn_buff(qp, sq, swq, qp->is_host_msn_tbl);
sys/dev/bnxt/bnxt_re/qplib_fp.c
200
if (qp->rq_hdr_buf) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2000
if (qp->sig_type || wqe->flags & BNXT_QPLIB_SWQE_FLAGS_SIGNAL_COMP)
sys/dev/bnxt/bnxt_re/qplib_fp.c
2005
qp->id, wqe_idx, swq->wr_id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2006
if (qp->cur_qp_state == CMDQ_MODIFY_QP_NEW_STATE_ERR) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
201
bnxt_qplib_put_hdr_buf(res->pdev, qp->rq_hdr_buf);
sys/dev/bnxt/bnxt_re/qplib_fp.c
202
qp->rq_hdr_buf = NULL;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2021
data_len = bnxt_qplib_put_inline(qp, wqe, &sw_prod);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2033
if (qp->type == CMDQ_CREATE_QP_TYPE_RAW_ETHERTYPE ||
sys/dev/bnxt/bnxt_re/qplib_fp.c
2034
qp->type == CMDQ_CREATE_QP1_TYPE_GSI) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
205
if (qp->sq_hdr_buf) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
206
bnxt_qplib_put_hdr_buf(res->pdev, qp->sq_hdr_buf);
sys/dev/bnxt/bnxt_re/qplib_fp.c
207
qp->sq_hdr_buf = NULL;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2075
if (qp->type == CMDQ_CREATE_QP_TYPE_UD ||
sys/dev/bnxt/bnxt_re/qplib_fp.c
2076
qp->type == CMDQ_CREATE_QP_TYPE_GSI) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2087
if (qp->mtu)
sys/dev/bnxt/bnxt_re/qplib_fp.c
2088
pkt_num = (data_len + qp->mtu - 1) / qp->mtu;
sys/dev/bnxt/bnxt_re/qplib_fp.c
212
struct bnxt_qplib_qp *qp, u32 sstep, u32 rstep)
sys/dev/bnxt/bnxt_re/qplib_fp.c
2124
if (qp->mtu)
sys/dev/bnxt/bnxt_re/qplib_fp.c
2125
pkt_num = (data_len + qp->mtu - 1) / qp->mtu;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2157
if (qp->mtu)
sys/dev/bnxt/bnxt_re/qplib_fp.c
2158
pkt_num = (data_len + qp->mtu - 1) / qp->mtu;
sys/dev/bnxt/bnxt_re/qplib_fp.c
219
qp->sq_hdr_buf = bnxt_qplib_get_hdr_buf(pdev, sstep,
sys/dev/bnxt/bnxt_re/qplib_fp.c
220
qp->sq.max_wqe);
sys/dev/bnxt/bnxt_re/qplib_fp.c
221
if (!qp->sq_hdr_buf) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2267
if (!qp->is_host_msn_tbl || msn_update) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2269
bnxt_qplib_fill_psn_search(qp, wqe, swq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2275
qp->wqe_cnt++;
sys/dev/bnxt/bnxt_re/qplib_fp.c
228
qp->rq_hdr_buf = bnxt_qplib_get_hdr_buf(pdev, rstep,
sys/dev/bnxt/bnxt_re/qplib_fp.c
2280
nq_work->cq = qp->scq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2281
nq_work->nq = qp->scq->nq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2283
queue_work(qp->scq->nq->cqn_wq, &nq_work->work);
sys/dev/bnxt/bnxt_re/qplib_fp.c
229
qp->rq.max_wqe);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2293
void bnxt_qplib_post_recv_db(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
2295
struct bnxt_qplib_q *rq = &qp->rq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
230
if (!qp->rq_hdr_buf) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2318
int bnxt_qplib_post_recv(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
2322
struct bnxt_qplib_q *rq = &qp->rq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2335
if (qp->state == CMDQ_MODIFY_QP_NEW_STATE_RESET) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2338
qp->id, qp->state);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2343
wqe_slots = _calculate_wqe_byte(qp, wqe, NULL);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2346
"QPLIB: FP: QP (0x%x) RQ is full!\n", qp->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2357
if (qp->cur_qp_state == CMDQ_MODIFY_QP_NEW_STATE_ERR) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
239
bnxt_qplib_free_hdr_buf(res, qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2390
nq_work->cq = qp->rcq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2391
nq_work->nq = qp->rcq->nq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2393
queue_work(qp->rcq->nq->cqn_wq, &nq_work->work);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2641
static int __flush_sq(struct bnxt_qplib_q *sq, struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
2658
bnxt_re_legacy_cancel_phantom_processing(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2665
cqe->qp_handle = (u64)qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2667
cqe->src_qp = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2692
static int __flush_rq(struct bnxt_qplib_q *rq, struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
2700
switch (qp->type) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2723
cqe->qp_handle = (u64)qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2748
struct bnxt_qplib_qp *qp = qp_handle;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2750
if (!qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
2754
qp->cur_qp_state = CMDQ_MODIFY_QP_NEW_STATE_ERR;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2755
qp->state = qp->cur_qp_state;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2758
if (!qp->is_user)
sys/dev/bnxt/bnxt_re/qplib_fp.c
2759
bnxt_qplib_add_flush_qp(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2765
static int bnxt_re_legacy_do_wa9060(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.c
2770
struct bnxt_qplib_q *sq = &qp->sq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2790
cq_cons, qp->id, swq_last, cqe_sq_cons);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2833
qp->id, swq_last,
sys/dev/bnxt/bnxt_re/qplib_fp.c
2857
if (peek_qp == qp) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2878
cq_cons, qp->id, swq_last, cqe_sq_cons);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2916
struct bnxt_qplib_qp *qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2924
qp = (struct bnxt_qplib_qp *)le64_to_cpu(hwcqe->qp_handle);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2925
dev_dbg(&cq->hwq.pdev->dev, "FP: Process Req qp=0x%p\n", qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2926
if (!qp) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2931
sq = &qp->sq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2934
if (qp->sq.flushed) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2936
"%s: QPLIB: QP in Flush QP = %p\n", __func__, qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2940
if (__is_err_cqe_for_var_wqe(qp, hwcqe->status)) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2966
cqe->qp_handle = (u64)qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2967
cqe->src_qp = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
2989
bnxt_qplib_mark_qp_error(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
2992
if (!_is_chip_gen_p5_p7(qp->cctx)) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
2993
if (bnxt_re_legacy_do_wa9060(qp, cq, cq_cons,
sys/dev/bnxt/bnxt_re/qplib_fp.c
2996
*lib_qp = qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3053
struct bnxt_qplib_qp *qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3058
qp = (struct bnxt_qplib_qp *)le64_to_cpu(hwcqe->qp_handle);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3059
if (!qp) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3063
if (qp->rq.flushed) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3065
"%s: QPLIB: QP in Flush QP = %p\n", __func__, qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3076
cqe->qp_handle = (u64)(unsigned long)qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3081
srq = qp->srq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3104
rq = &qp->rq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3128
bnxt_qplib_mark_qp_error(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3141
struct bnxt_qplib_qp *qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3147
qp = (struct bnxt_qplib_qp *)le64_to_cpu(hwcqe->qp_handle);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3148
if (!qp) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3152
if (qp->rq.flushed) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3154
"%s: QPLIB: QP in Flush QP = %p\n", __func__, qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3169
cqe->qp_handle = (u64)(unsigned long)qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3182
srq = qp->srq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3205
rq = &qp->rq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3230
bnxt_qplib_mark_qp_error(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3257
struct bnxt_qplib_qp *qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3264
qp = (struct bnxt_qplib_qp *)le64_to_cpu(hwcqe->qp_handle);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3265
if (!qp) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3270
if (qp->rq.flushed) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3272
"%s: QPLIB: QP in Flush QP = %p\n", __func__, qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3278
cqe->qp_handle = (u64)(unsigned long)qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3282
cqe->src_qp = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3283
if (qp->id == 1 && !cqe->length) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3289
cqe->pkey_index = qp->pkey_index;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3290
memcpy(cqe->smac, qp->smac, 6);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3301
srq = qp->srq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3326
rq = &qp->rq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3352
bnxt_qplib_mark_qp_error(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3365
struct bnxt_qplib_qp *qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3376
qp = (struct bnxt_qplib_qp *)le64_to_cpu(hwcqe->qp_handle);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3377
if (!qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
3380
"QPLIB: FP: CQ Process terminal for qp (0x%x)\n", qp->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3386
bnxt_qplib_mark_qp_error(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3388
sq = &qp->sq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3389
rq = &qp->rq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3396
if (qp->sq.flushed) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3398
"%s: QPLIB: QP in Flush QP = %p\n", __func__, qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3415
cqe->qp_handle = (u64)qp;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3416
cqe->src_qp = qp->id;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3453
if (qp->rq.flushed) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3455
"%s: QPLIB: QP in Flush QP = %p\n", __func__, qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3486
struct bnxt_qplib_qp *qp = NULL;
sys/dev/bnxt/bnxt_re/qplib_fp.c
3491
list_for_each_entry(qp, &cq->sqf_head, sq_flush) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3494
qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3495
__flush_sq(&qp->sq, qp, &cqe, &budget);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3498
list_for_each_entry(qp, &cq->rqf_head, rq_flush) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
3501
qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3502
__flush_rq(&qp->rq, qp, &cqe, &budget);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3602
void bnxt_qplib_flush_cqn_wq(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
3604
flush_workqueue(qp->scq->nq->cqn_wq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
3605
if (qp->scq != qp->rcq)
sys/dev/bnxt/bnxt_re/qplib_fp.c
3606
flush_workqueue(qp->rcq->nq->cqn_wq);
sys/dev/bnxt/bnxt_re/qplib_fp.c
49
static void __clean_cq(struct bnxt_qplib_cq *cq, u64 qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
51
static void bnxt_re_legacy_cancel_phantom_processing(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
53
qp->sq.condition = false;
sys/dev/bnxt/bnxt_re/qplib_fp.c
54
qp->sq.legacy_send_phantom = false;
sys/dev/bnxt/bnxt_re/qplib_fp.c
55
qp->sq.single = false;
sys/dev/bnxt/bnxt_re/qplib_fp.c
58
static void __bnxt_qplib_add_flush_qp(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
62
scq = qp->scq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
63
rcq = qp->rcq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
65
if (!qp->sq.flushed) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
68
qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
69
bnxt_re_legacy_cancel_phantom_processing(qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
70
list_add_tail(&qp->sq_flush, &scq->sqf_head);
sys/dev/bnxt/bnxt_re/qplib_fp.c
71
qp->sq.flushed = true;
sys/dev/bnxt/bnxt_re/qplib_fp.c
73
if (!qp->srq) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
74
if (!qp->rq.flushed) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
77
qp);
sys/dev/bnxt/bnxt_re/qplib_fp.c
78
list_add_tail(&qp->rq_flush, &rcq->rqf_head);
sys/dev/bnxt/bnxt_re/qplib_fp.c
79
qp->rq.flushed = true;
sys/dev/bnxt/bnxt_re/qplib_fp.c
826
struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
832
req.qp_cid = cpu_to_le32(qp->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
84
static void bnxt_qplib_acquire_cq_flush_locks(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
85
__acquires(&qp->scq->flush_lock) __acquires(&qp->rcq->flush_lock)
sys/dev/bnxt/bnxt_re/qplib_fp.c
88
spin_lock(&qp->scq->flush_lock);
sys/dev/bnxt/bnxt_re/qplib_fp.c
89
if (qp->scq == qp->rcq)
sys/dev/bnxt/bnxt_re/qplib_fp.c
90
__acquire(&qp->rcq->flush_lock);
sys/dev/bnxt/bnxt_re/qplib_fp.c
913
int bnxt_qplib_create_qp1(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
919
struct bnxt_qplib_q *sq = &qp->sq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
92
spin_lock(&qp->rcq->flush_lock);
sys/dev/bnxt/bnxt_re/qplib_fp.c
920
struct bnxt_qplib_q *rq = &qp->rq;
sys/dev/bnxt/bnxt_re/qplib_fp.c
929
req.type = qp->type;
sys/dev/bnxt/bnxt_re/qplib_fp.c
930
req.dpi = cpu_to_le32(qp->dpi->dpi);
sys/dev/bnxt/bnxt_re/qplib_fp.c
931
req.qp_handle = cpu_to_le64(qp->qp_handle);
sys/dev/bnxt/bnxt_re/qplib_fp.c
936
hwq_attr.depth = bnxt_qplib_get_depth(sq, qp->wqe_mode, false);
sys/dev/bnxt/bnxt_re/qplib_fp.c
942
req.sq_size = cpu_to_le32(_set_sq_size(sq, qp->wqe_mode));
sys/dev/bnxt/bnxt_re/qplib_fp.c
95
static void bnxt_qplib_release_cq_flush_locks(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.c
953
req.scq_cid = cpu_to_le32(qp->scq->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
956
if (!qp->srq) {
sys/dev/bnxt/bnxt_re/qplib_fp.c
96
__releases(&qp->scq->flush_lock) __releases(&qp->rcq->flush_lock)
sys/dev/bnxt/bnxt_re/qplib_fp.c
960
hwq_attr.depth = bnxt_qplib_get_depth(rq, qp->wqe_mode, false);
sys/dev/bnxt/bnxt_re/qplib_fp.c
98
if (qp->scq == qp->rcq)
sys/dev/bnxt/bnxt_re/qplib_fp.c
980
req.srq_cid = cpu_to_le32(qp->srq->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
982
req.rcq_cid = cpu_to_le32(qp->rcq->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
986
req.pd_id = cpu_to_le32(qp->pd->id);
sys/dev/bnxt/bnxt_re/qplib_fp.c
99
__release(&qp->rcq->flush_lock);
sys/dev/bnxt/bnxt_re/qplib_fp.h
545
bnxt_qplib_get_qp_buf_from_index(struct bnxt_qplib_qp *qp, u32 index)
sys/dev/bnxt/bnxt_re/qplib_fp.h
549
buf = qp->rq_hdr_buf;
sys/dev/bnxt/bnxt_re/qplib_fp.h
571
int bnxt_qplib_create_qp1(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
572
int bnxt_qplib_create_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
573
int bnxt_qplib_modify_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
574
int bnxt_qplib_query_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
575
int bnxt_qplib_destroy_qp(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
576
void bnxt_qplib_clean_qp(struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
577
void bnxt_qplib_free_qp_res(struct bnxt_qplib_res *res, struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
578
void *bnxt_qplib_get_qp1_sq_buf(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.h
580
void *bnxt_qplib_get_qp1_rq_buf(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.h
582
u32 bnxt_qplib_get_rq_prod_index(struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
583
void bnxt_qplib_post_send_db(struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
584
int bnxt_qplib_post_send(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.h
586
void bnxt_qplib_post_recv_db(struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
587
int bnxt_qplib_post_recv(struct bnxt_qplib_qp *qp,
sys/dev/bnxt/bnxt_re/qplib_fp.h
598
int num, struct bnxt_qplib_qp **qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
604
void bnxt_qplib_add_flush_qp(struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
605
void bnxt_qplib_del_flush_qp(struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
609
void bnxt_qplib_flush_cqn_wq(struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
611
struct bnxt_qplib_qp *qp);
sys/dev/bnxt/bnxt_re/qplib_fp.h
613
struct bnxt_qplib_qp *qp, u32 slen, u32 rlen);
sys/dev/bnxt/bnxt_re/qplib_fp.h
615
static inline bool __can_request_ppp(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.h
619
if (qp->cur_qp_state == CMDQ_MODIFY_QP_NEW_STATE_RESET &&
sys/dev/bnxt/bnxt_re/qplib_fp.h
620
qp->state == CMDQ_MODIFY_QP_NEW_STATE_INIT &&
sys/dev/bnxt/bnxt_re/qplib_fp.h
621
qp->ppp.req &&
sys/dev/bnxt/bnxt_re/qplib_fp.h
622
!(qp->ppp.st_idx_en &
sys/dev/bnxt/bnxt_re/qplib_fp.h
639
static inline bool __is_var_wqe(struct bnxt_qplib_qp *qp)
sys/dev/bnxt/bnxt_re/qplib_fp.h
641
return (qp->wqe_mode == BNXT_QPLIB_WQE_MODE_VARIABLE);
sys/dev/bnxt/bnxt_re/qplib_fp.h
644
static inline bool __is_err_cqe_for_var_wqe(struct bnxt_qplib_qp *qp, u8 status)
sys/dev/bnxt/bnxt_re/qplib_fp.h
646
return (status != CQ_REQ_STATUS_OK) && __is_var_wqe(qp);
sys/dev/bnxt/bnxt_re/qplib_rcfw.c
685
struct bnxt_qplib_qp *qp;
sys/dev/bnxt/bnxt_re/qplib_rcfw.c
704
qp = tbl->rec[qp_idx].handle;
sys/dev/bnxt/bnxt_re/qplib_rcfw.c
705
if (!qp) {
sys/dev/bnxt/bnxt_re/qplib_rcfw.c
709
bnxt_qplib_mark_qp_error(qp);
sys/dev/bnxt/bnxt_re/qplib_rcfw.c
710
rc = rcfw->creq.aeq_handler(rcfw, event, qp);
sys/dev/cxgbe/common/t4_hw.c
7273
__be32 *qp = &cmd.iq0_to_iq2;
sys/dev/cxgbe/common/t4_hw.c
7313
*qp++ = cpu_to_be32(V_FW_RSS_IND_TBL_CMD_IQ0(qbuf[0]) |
sys/dev/cxgbe/iw_cxgbe/cm.c
199
c4iw_qp_rem_ref(&ep->com.qp->ibqp);
sys/dev/cxgbe/iw_cxgbe/cm.c
208
c4iw_qp_add_ref(&ep->com.qp->ibqp);
sys/dev/cxgbe/iw_cxgbe/cm.c
2131
err = c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp, mask, &attrs, 1);
sys/dev/cxgbe/iw_cxgbe/cm.c
2151
err = c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp,
sys/dev/cxgbe/iw_cxgbe/cm.c
2173
err = c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp,
sys/dev/cxgbe/iw_cxgbe/cm.c
2406
struct c4iw_qp *qp = get_qhp(h, conn_param->qpn);
sys/dev/cxgbe/iw_cxgbe/cm.c
2420
BUG_ON(!qp);
sys/dev/cxgbe/iw_cxgbe/cm.c
2476
ep->com.qp = qp;
sys/dev/cxgbe/iw_cxgbe/cm.c
2494
err = c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp, mask, &attrs, 1);
sys/dev/cxgbe/iw_cxgbe/cm.c
2639
ep->com.qp = get_qhp(dev, conn_param->qpn);
sys/dev/cxgbe/iw_cxgbe/cm.c
2641
if (!ep->com.qp) {
sys/dev/cxgbe/iw_cxgbe/cm.c
2914
if (ep->com.qp) {
sys/dev/cxgbe/iw_cxgbe/cm.c
2919
ep->com.dev, ep->com.qp,
sys/dev/cxgbe/iw_cxgbe/cm.c
3010
if (ep && ep->com.qp) {
sys/dev/cxgbe/iw_cxgbe/cm.c
3013
ep->hwtid, ep->com.qp->wq.sq.qid);
sys/dev/cxgbe/iw_cxgbe/cm.c
3015
c4iw_modify_qp(ep->com.dev, ep->com.qp, C4IW_QP_ATTR_NEXT_STATE, &attrs,
sys/dev/cxgbe/iw_cxgbe/cm.c
406
if (ep->com.cm_id && ep->com.qp) {
sys/dev/cxgbe/iw_cxgbe/cm.c
408
c4iw_modify_qp(ep->com.dev, ep->com.qp,
sys/dev/cxgbe/iw_cxgbe/cm.c
618
c4iw_modify_qp(ep->com.dev, ep->com.qp,
sys/dev/cxgbe/iw_cxgbe/cm.c
640
if (ep->com.cm_id && ep->com.qp) {
sys/dev/cxgbe/iw_cxgbe/cm.c
642
c4iw_modify_qp(ep->com.qp->rhp, ep->com.qp,
sys/dev/cxgbe/iw_cxgbe/cm.c
717
if (ep->com.cm_id && ep->com.qp) {
sys/dev/cxgbe/iw_cxgbe/cm.c
720
ret = c4iw_modify_qp(ep->com.qp->rhp,
sys/dev/cxgbe/iw_cxgbe/cm.c
721
ep->com.qp, C4IW_QP_ATTR_NEXT_STATE,
sys/dev/cxgbe/iw_cxgbe/cm.c
778
if ((ep->com.cm_id) && (ep->com.qp)) {
sys/dev/cxgbe/iw_cxgbe/cm.c
784
ep->com.qp,
sys/dev/cxgbe/iw_cxgbe/cm.c
889
MPASS(ep->com.qp != NULL);
sys/dev/cxgbe/iw_cxgbe/cm.c
891
ret = c4iw_modify_qp(ep->com.dev, ep->com.qp,
sys/dev/cxgbe/iw_cxgbe/cq.c
742
wc->qp = &qhp->ibqp;
sys/dev/cxgbe/iw_cxgbe/device.c
109
if (sc->vres.qp.start != sc->vres.cq.start ||
sys/dev/cxgbe/iw_cxgbe/device.c
110
sc->vres.qp.size != sc->vres.cq.size) {
sys/dev/cxgbe/iw_cxgbe/device.c
113
sc->vres.qp.start, sc->vres.qp.size, sc->vres.cq.start,
sys/dev/cxgbe/iw_cxgbe/device.c
133
rdev->stats.qid.total = sc->vres.qp.size;
sys/dev/cxgbe/iw_cxgbe/device.c
151
rdev->status_page->qp_start = sc->vres.qp.start;
sys/dev/cxgbe/iw_cxgbe/device.c
152
rdev->status_page->qp_size = sc->vres.qp.size;
sys/dev/cxgbe/iw_cxgbe/ev.c
148
event.element.qp = &qhp->ibqp;
sys/dev/cxgbe/iw_cxgbe/iw_cxgbe.h
823
struct c4iw_qp *qp;
sys/dev/cxgbe/iw_cxgbe/iw_cxgbe.h
930
void c4iw_qp_add_ref(struct ib_qp *qp);
sys/dev/cxgbe/iw_cxgbe/iw_cxgbe.h
931
void c4iw_qp_rem_ref(struct ib_qp *qp);
sys/dev/cxgbe/iw_cxgbe/provider.c
313
props->max_qp = sc->vres.qp.size / 2;
sys/dev/cxgbe/iw_cxgbe/provider.c
321
props->max_cq = sc->vres.qp.size;
sys/dev/cxgbe/iw_cxgbe/qp.c
599
void c4iw_qp_add_ref(struct ib_qp *qp)
sys/dev/cxgbe/iw_cxgbe/qp.c
601
CTR2(KTR_IW_CXGBE, "%s ib_qp %p", __func__, qp);
sys/dev/cxgbe/iw_cxgbe/qp.c
602
kref_get(&to_c4iw_qp(qp)->kref);
sys/dev/cxgbe/iw_cxgbe/qp.c
605
void c4iw_qp_rem_ref(struct ib_qp *qp)
sys/dev/cxgbe/iw_cxgbe/qp.c
607
CTR2(KTR_IW_CXGBE, "%s ib_qp %p", __func__, qp);
sys/dev/cxgbe/iw_cxgbe/qp.c
608
kref_put(&to_c4iw_qp(qp)->kref, queue_qp_free);
sys/dev/cxgbe/iw_cxgbe/resource.c
47
rdev->adap->vres.qp.start,
sys/dev/cxgbe/iw_cxgbe/resource.c
48
rdev->adap->vres.qp.size,
sys/dev/cxgbe/iw_cxgbe/resource.c
49
rdev->adap->vres.qp.size, 0)) {
sys/dev/cxgbe/iw_cxgbe/resource.c
54
for (i = rdev->adap->vres.qp.start;
sys/dev/cxgbe/iw_cxgbe/resource.c
55
i < rdev->adap->vres.qp.start + rdev->adap->vres.qp.size; i++)
sys/dev/cxgbe/nvmf/nvmf_che.c
1000
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1004
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_invalid_headers, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
1005
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1013
device_printf(qp->nca->sc->dev,
sys/dev/cxgbe/nvmf/nvmf_che.c
1019
error = nvmf_tcp_validate_pdu_header(ch, qp->qp.nq_controller,
sys/dev/cxgbe/nvmf/nvmf_che.c
1020
qp->header_digests, qp->data_digests, qp->rxpda, &data_len, &fes,
sys/dev/cxgbe/nvmf/nvmf_che.c
1024
nvmf_che_report_error(qp, fes, fei, m, hlen);
sys/dev/cxgbe/nvmf/nvmf_che.c
1035
qp->toep->ofld_rxq->rx_nvme_data_digest_errors, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
1066
nvmf_che_save_command_capsule(struct nvmf_che_qpair *qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1075
nc = nvmf_allocate_command(&qp->qp, &cmd->ccsqe, M_WAITOK);
sys/dev/cxgbe/nvmf/nvmf_che.c
1080
nvmf_capsule_received(&qp->qp, nc);
sys/dev/cxgbe/nvmf/nvmf_che.c
1085
nvmf_che_save_response_capsule(struct nvmf_che_qpair *qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1106
mtx_lock(&qp->fl_cid_lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1107
MPASS(FL_CID_ISACTIVE(cid, qp->fl_cid_set));
sys/dev/cxgbe/nvmf/nvmf_che.c
1108
cpl.cid = qp->fl_cids[cid];
sys/dev/cxgbe/nvmf/nvmf_che.c
1109
FL_CID_FREE(cid, qp->fl_cid_set);
sys/dev/cxgbe/nvmf/nvmf_che.c
1110
mtx_unlock(&qp->fl_cid_lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1112
che_purge_command_buffer(&qp->rx_buffers, rsp->rccqe.cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
1113
che_purge_command_buffer(&qp->tx_buffers, rsp->rccqe.cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
1117
mtx_lock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1118
cb = qp->open_ddp_tags[CHE_STAG_IDX(cid)];
sys/dev/cxgbe/nvmf/nvmf_che.c
1122
che_free_ddp_tag(qp, cb, cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
1123
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1128
qp->toep->tid, le16toh(rsp->rccqe.cid), cpl.cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
1131
nc = nvmf_allocate_response(&qp->qp, &cpl, M_WAITOK);
sys/dev/cxgbe/nvmf/nvmf_che.c
1137
nvmf_capsule_received(&qp->qp, nc);
sys/dev/cxgbe/nvmf/nvmf_che.c
1147
nvmf_che_construct_pdu(struct nvmf_che_qpair *qp, void *hdr, size_t hlen,
sys/dev/cxgbe/nvmf/nvmf_che.c
1156
if (qp->header_digests)
sys/dev/cxgbe/nvmf/nvmf_che.c
1160
pdo = roundup(plen, qp->txpda);
sys/dev/cxgbe/nvmf/nvmf_che.c
1162
if (qp->data_digests)
sys/dev/cxgbe/nvmf/nvmf_che.c
1176
if (qp->header_digests) {
sys/dev/cxgbe/nvmf/nvmf_che.c
1180
if (qp->data_digests && data_len != 0) {
sys/dev/cxgbe/nvmf/nvmf_che.c
1198
nvmf_che_allocate_fl_ttag(struct nvmf_che_qpair *qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1203
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/cxgbe/nvmf/nvmf_che.c
1205
if (qp->active_fl_ttags == qp->num_fl_ttags)
sys/dev/cxgbe/nvmf/nvmf_che.c
1208
ttag = qp->next_fl_ttag;
sys/dev/cxgbe/nvmf/nvmf_che.c
1210
if (qp->open_fl_ttags[ttag] == NULL)
sys/dev/cxgbe/nvmf/nvmf_che.c
1212
if (ttag == qp->num_fl_ttags - 1)
sys/dev/cxgbe/nvmf/nvmf_che.c
1216
MPASS(ttag != qp->next_fl_ttag);
sys/dev/cxgbe/nvmf/nvmf_che.c
1218
if (ttag == qp->num_fl_ttags - 1)
sys/dev/cxgbe/nvmf/nvmf_che.c
1219
qp->next_fl_ttag = 0;
sys/dev/cxgbe/nvmf/nvmf_che.c
1221
qp->next_fl_ttag = ttag + 1;
sys/dev/cxgbe/nvmf/nvmf_che.c
1223
qp->active_fl_ttags++;
sys/dev/cxgbe/nvmf/nvmf_che.c
1224
qp->open_fl_ttags[ttag] = cb;
sys/dev/cxgbe/nvmf/nvmf_che.c
1232
nvmf_che_allocate_ttag(struct nvmf_che_qpair *qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1237
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/cxgbe/nvmf/nvmf_che.c
1239
stag = che_alloc_ddp_tag(qp, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
1241
if (!nvmf_che_allocate_fl_ttag(qp, cb))
sys/dev/cxgbe/nvmf/nvmf_che.c
1248
qp->toep->tid, cb->ttag);
sys/dev/cxgbe/nvmf/nvmf_che.c
1256
nvmf_che_next_r2t(struct nvmf_che_qpair *qp)
sys/dev/cxgbe/nvmf/nvmf_che.c
1260
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/cxgbe/nvmf/nvmf_che.c
1262
TAILQ_FOREACH(cb, &qp->rx_buffers.head, link) {
sys/dev/cxgbe/nvmf/nvmf_che.c
1264
if (cb->cc->active_r2ts > qp->maxr2t)
sys/dev/cxgbe/nvmf/nvmf_che.c
1267
if (!nvmf_che_allocate_ttag(qp, cb))
sys/dev/cxgbe/nvmf/nvmf_che.c
1272
TAILQ_REMOVE(&qp->rx_buffers.head, cb, link);
sys/dev/cxgbe/nvmf/nvmf_che.c
1280
che_send_r2t(struct nvmf_che_qpair *qp, uint16_t cid, uint16_t ttag,
sys/dev/cxgbe/nvmf/nvmf_che.c
1293
m = nvmf_che_construct_pdu(qp, &r2t, sizeof(r2t), NULL, 0);
sys/dev/cxgbe/nvmf/nvmf_che.c
1294
nvmf_che_write_pdu(qp, m);
sys/dev/cxgbe/nvmf/nvmf_che.c
1303
nvmf_che_send_next_r2t(struct nvmf_che_qpair *qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1308
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/cxgbe/nvmf/nvmf_che.c
1311
CTR(KTR_CXGBE, "%s: tid %u freed ttag 0x%04x", __func__, qp->toep->tid,
sys/dev/cxgbe/nvmf/nvmf_che.c
1318
MPASS(qp->open_fl_ttags[ttag] == cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
1321
qp->open_fl_ttags[ttag] = NULL;
sys/dev/cxgbe/nvmf/nvmf_che.c
1322
qp->active_fl_ttags--;
sys/dev/cxgbe/nvmf/nvmf_che.c
1324
che_free_ddp_tag(qp, cb, cb->ttag);
sys/dev/cxgbe/nvmf/nvmf_che.c
1329
ncb = nvmf_che_next_r2t(qp);
sys/dev/cxgbe/nvmf/nvmf_che.c
1330
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1332
che_send_r2t(qp, ncb->cid, ncb->ttag, ncb->data_offset,
sys/dev/cxgbe/nvmf/nvmf_che.c
1363
nvmf_che_handle_h2c_data(struct nvmf_che_qpair *qp, struct nvmf_che_rxpdu *pdu)
sys/dev/cxgbe/nvmf/nvmf_che.c
1371
if (le32toh(h2c->datal) > qp->maxh2cdata) {
sys/dev/cxgbe/nvmf/nvmf_che.c
1372
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1382
if (fl_ttag >= qp->num_fl_ttags) {
sys/dev/cxgbe/nvmf/nvmf_che.c
1383
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1391
mtx_lock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1392
cb = qp->open_fl_ttags[fl_ttag];
sys/dev/cxgbe/nvmf/nvmf_che.c
1394
if (CHE_STAG_IDX(ttag) >= qp->num_ddp_tags) {
sys/dev/cxgbe/nvmf/nvmf_che.c
1395
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1403
mtx_lock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1404
cb = qp->open_ddp_tags[CHE_STAG_IDX(ttag)];
sys/dev/cxgbe/nvmf/nvmf_che.c
1408
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1409
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1420
nvmf_che_send_next_r2t(qp, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
1429
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1430
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1441
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1442
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1451
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1452
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
146
struct nvmf_che_qpair *qp;
sys/dev/cxgbe/nvmf/nvmf_che.c
1466
__func__, qp->toep->tid, ddp_bytes);
sys/dev/cxgbe/nvmf/nvmf_che.c
1468
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_ddp_octets,
sys/dev/cxgbe/nvmf/nvmf_che.c
1475
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1476
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1486
nvmf_che_send_next_r2t(qp, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
1489
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1502
nvmf_che_handle_c2h_data(struct nvmf_che_qpair *qp, struct nvmf_che_rxpdu *pdu)
sys/dev/cxgbe/nvmf/nvmf_che.c
1518
mtx_lock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1519
cb = che_find_command_buffer(&qp->rx_buffers, c2h->cccid);
sys/dev/cxgbe/nvmf/nvmf_che.c
1521
if (CHE_STAG_IDX(cid) >= qp->num_ddp_tags) {
sys/dev/cxgbe/nvmf/nvmf_che.c
1522
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1530
mtx_lock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1531
cb = qp->open_ddp_tags[CHE_STAG_IDX(cid)];
sys/dev/cxgbe/nvmf/nvmf_che.c
1535
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1540
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1552
che_remove_command_buffer(&qp->rx_buffers, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
1553
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1556
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1563
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1564
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1575
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1576
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1585
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1586
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1600
__func__, qp->toep->tid, ddp_bytes);
sys/dev/cxgbe/nvmf/nvmf_che.c
1602
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_ddp_octets,
sys/dev/cxgbe/nvmf/nvmf_che.c
1609
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1610
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1623
che_remove_command_buffer(&qp->rx_buffers, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
1626
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1634
mtx_lock(&qp->fl_cid_lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1635
MPASS(FL_CID_ISACTIVE(cid, qp->fl_cid_set));
sys/dev/cxgbe/nvmf/nvmf_che.c
1636
MPASS(original_cid == qp->fl_cids[cid]);
sys/dev/cxgbe/nvmf/nvmf_che.c
1637
FL_CID_FREE(cid, qp->fl_cid_set);
sys/dev/cxgbe/nvmf/nvmf_che.c
1638
mtx_unlock(&qp->fl_cid_lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1651
che_free_ddp_tag(qp, cb, cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
1652
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1655
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1665
nc = nvmf_allocate_response(&qp->qp, &cqe, M_WAITOK);
sys/dev/cxgbe/nvmf/nvmf_che.c
1668
nvmf_capsule_received(&qp->qp, nc);
sys/dev/cxgbe/nvmf/nvmf_che.c
1746
che_send_h2c_pdu(struct nvmf_che_qpair *qp, uint16_t cid, uint16_t ttag,
sys/dev/cxgbe/nvmf/nvmf_che.c
1761
top = nvmf_che_construct_pdu(qp, &h2c, sizeof(h2c), m, len);
sys/dev/cxgbe/nvmf/nvmf_che.c
1762
nvmf_che_write_pdu(qp, top);
sys/dev/cxgbe/nvmf/nvmf_che.c
1766
nvmf_che_handle_r2t(struct nvmf_che_qpair *qp, struct nvmf_che_rxpdu *pdu)
sys/dev/cxgbe/nvmf/nvmf_che.c
1774
mtx_lock(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1775
cb = che_find_command_buffer(&qp->tx_buffers, r2t->cccid);
sys/dev/cxgbe/nvmf/nvmf_che.c
1777
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1778
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1788
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1789
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
179
struct nvmf_qpair qp;
sys/dev/cxgbe/nvmf/nvmf_che.c
1802
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1803
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
1812
che_remove_command_buffer(&qp->tx_buffers, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
1815
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
1825
todo = min(data_len, qp->max_tx_data);
sys/dev/cxgbe/nvmf/nvmf_che.c
1828
che_send_h2c_pdu(qp, r2t->cccid, r2t->ttag, data_offset, m,
sys/dev/cxgbe/nvmf/nvmf_che.c
1841
nvmf_che_dispatch_pdu(struct nvmf_che_qpair *qp, struct nvmf_che_rxpdu *pdu)
sys/dev/cxgbe/nvmf/nvmf_che.c
1861
return (nvmf_che_save_command_capsule(qp, pdu));
sys/dev/cxgbe/nvmf/nvmf_che.c
1863
return (nvmf_che_save_response_capsule(qp, pdu));
sys/dev/cxgbe/nvmf/nvmf_che.c
1865
return (nvmf_che_handle_h2c_data(qp, pdu));
sys/dev/cxgbe/nvmf/nvmf_che.c
1867
return (nvmf_che_handle_c2h_data(qp, pdu));
sys/dev/cxgbe/nvmf/nvmf_che.c
1869
return (nvmf_che_handle_r2t(qp, pdu));
sys/dev/cxgbe/nvmf/nvmf_che.c
1874
nvmf_che_attach_pdu_data(struct nvmf_che_qpair *qp, struct nvmf_che_rxpdu *pdu)
sys/dev/cxgbe/nvmf/nvmf_che.c
1876
struct socket *so = qp->so;
sys/dev/cxgbe/nvmf/nvmf_che.c
1884
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_ddp_pdus, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
1885
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_ddp_octets,
sys/dev/cxgbe/nvmf/nvmf_che.c
1896
n = mbufq_dequeue(&qp->rx_data);
sys/dev/cxgbe/nvmf/nvmf_che.c
1916
qp->toep->tid, n->m_pkthdr.len, n->m_pkthdr.nvmf_tcp_seq);
sys/dev/cxgbe/nvmf/nvmf_che.c
1928
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_fl_pdus, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
1929
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_fl_octets,
sys/dev/cxgbe/nvmf/nvmf_che.c
1938
struct nvmf_che_qpair *qp = arg;
sys/dev/cxgbe/nvmf/nvmf_che.c
1939
struct socket *so = qp->so;
sys/dev/cxgbe/nvmf/nvmf_che.c
1945
while (!qp->rx_shutdown) {
sys/dev/cxgbe/nvmf/nvmf_che.c
1954
nvmf_qpair_error(&qp->qp, error);
sys/dev/cxgbe/nvmf/nvmf_che.c
1956
while (!qp->rx_shutdown)
sys/dev/cxgbe/nvmf/nvmf_che.c
1957
cv_wait(&qp->rx_cv, SOCKBUF_MTX(&so->so_rcv));
sys/dev/cxgbe/nvmf/nvmf_che.c
1961
m = mbufq_dequeue(&qp->rx_pdus);
sys/dev/cxgbe/nvmf/nvmf_che.c
1968
cv_wait(&qp->rx_cv, SOCKBUF_MTX(&so->so_rcv));
sys/dev/cxgbe/nvmf/nvmf_che.c
1977
error = nvmf_che_validate_pdu(qp, &pdu);
sys/dev/cxgbe/nvmf/nvmf_che.c
1979
error = nvmf_che_attach_pdu_data(qp, &pdu);
sys/dev/cxgbe/nvmf/nvmf_che.c
1983
error = nvmf_che_dispatch_pdu(qp, &pdu);
sys/dev/cxgbe/nvmf/nvmf_che.c
1998
terror = cv_timedwait(&qp->rx_cv,
sys/dev/cxgbe/nvmf/nvmf_che.c
2016
struct nvmf_che_qpair *qp = arg;
sys/dev/cxgbe/nvmf/nvmf_che.c
2018
cv_signal(&qp->rx_cv);
sys/dev/cxgbe/nvmf/nvmf_che.c
2030
struct nvmf_che_qpair *qp;
sys/dev/cxgbe/nvmf/nvmf_che.c
2067
qp = toep->ulpcb;
sys/dev/cxgbe/nvmf/nvmf_che.c
2068
so = qp->so;
sys/dev/cxgbe/nvmf/nvmf_che.c
2070
mbufq_enqueue(&qp->rx_data, m);
sys/dev/cxgbe/nvmf/nvmf_che.c
2092
struct nvmf_che_qpair *qp = toep->ulpcb;
sys/dev/cxgbe/nvmf/nvmf_che.c
2093
struct socket *so = qp->so;
sys/dev/cxgbe/nvmf/nvmf_che.c
2128
empty = mbufq_len(&qp->rx_pdus) == 0;
sys/dev/cxgbe/nvmf/nvmf_che.c
2129
mbufq_enqueue(&qp->rx_pdus, m);
sys/dev/cxgbe/nvmf/nvmf_che.c
2133
cv_signal(&qp->rx_cv);
sys/dev/cxgbe/nvmf/nvmf_che.c
2138
che_alloc_fl_cid(struct nvmf_che_qpair *qp, uint16_t original_cid)
sys/dev/cxgbe/nvmf/nvmf_che.c
2142
mtx_lock(&qp->fl_cid_lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2143
new_cid = FL_CID_FINDFREE_AT(qp->fl_cid_set, qp->next_cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
2145
new_cid = FL_CID_FINDFREE_AT(qp->fl_cid_set, 0);
sys/dev/cxgbe/nvmf/nvmf_che.c
2149
FL_CID_BUSY(new_cid, qp->fl_cid_set);
sys/dev/cxgbe/nvmf/nvmf_che.c
2151
qp->next_cid = 0;
sys/dev/cxgbe/nvmf/nvmf_che.c
2153
qp->next_cid = new_cid + 1;
sys/dev/cxgbe/nvmf/nvmf_che.c
2154
qp->fl_cids[new_cid] = original_cid;
sys/dev/cxgbe/nvmf/nvmf_che.c
2155
mtx_unlock(&qp->fl_cid_lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2161
che_alloc_ddp_cid(struct nvmf_che_qpair *qp, struct nvmf_che_command_buffer *cb)
sys/dev/cxgbe/nvmf/nvmf_che.c
2163
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/cxgbe/nvmf/nvmf_che.c
2165
return (che_alloc_ddp_tag(qp, cb));
sys/dev/cxgbe/nvmf/nvmf_che.c
2169
che_command_pdu(struct nvmf_che_qpair *qp, struct nvmf_che_capsule *cc)
sys/dev/cxgbe/nvmf/nvmf_che.c
2184
cb = che_alloc_command_buffer(qp, &nc->nc_data, 0,
sys/dev/cxgbe/nvmf/nvmf_che.c
2188
if (nc->nc_send_data && nc->nc_data.io_len <= qp->max_icd) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2189
cid = che_alloc_fl_cid(qp, nc->nc_sqe.cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
2196
cid = che_alloc_fl_cid(qp, nc->nc_sqe.cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
2198
mtx_lock(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2199
che_add_command_buffer(&qp->tx_buffers, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
2200
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2202
mtx_lock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2203
cid = che_alloc_ddp_cid(qp, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
2205
cid = che_alloc_fl_cid(qp, nc->nc_sqe.cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
2206
che_add_command_buffer(&qp->rx_buffers, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
2209
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2212
cid = che_alloc_fl_cid(qp, nc->nc_sqe.cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
2216
qp->toep->tid, cid, nc->nc_sqe.cid);
sys/dev/cxgbe/nvmf/nvmf_che.c
2236
top = nvmf_che_construct_pdu(qp, &cmd, sizeof(cmd), m, m != NULL ?
sys/dev/cxgbe/nvmf/nvmf_che.c
2242
che_response_pdu(struct nvmf_che_qpair *qp, struct nvmf_che_capsule *cc)
sys/dev/cxgbe/nvmf/nvmf_che.c
2251
return (nvmf_che_construct_pdu(qp, &rsp, sizeof(rsp), NULL, 0));
sys/dev/cxgbe/nvmf/nvmf_che.c
2255
capsule_to_pdu(struct nvmf_che_qpair *qp, struct nvmf_che_capsule *cc)
sys/dev/cxgbe/nvmf/nvmf_che.c
2258
return (che_command_pdu(qp, cc));
sys/dev/cxgbe/nvmf/nvmf_che.c
2260
return (che_response_pdu(qp, cc));
sys/dev/cxgbe/nvmf/nvmf_che.c
2266
struct nvmf_che_qpair *qp = arg;
sys/dev/cxgbe/nvmf/nvmf_che.c
2268
struct socket *so = qp->so;
sys/dev/cxgbe/nvmf/nvmf_che.c
2274
while (!qp->tx_shutdown) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2279
nvmf_qpair_error(&qp->qp, error);
sys/dev/cxgbe/nvmf/nvmf_che.c
2281
while (!qp->tx_shutdown)
sys/dev/cxgbe/nvmf/nvmf_che.c
2282
cv_wait(&qp->tx_cv, SOCKBUF_MTX(&so->so_snd));
sys/dev/cxgbe/nvmf/nvmf_che.c
2286
if (STAILQ_EMPTY(&qp->tx_capsules)) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2287
cv_wait(&qp->tx_cv, SOCKBUF_MTX(&so->so_snd));
sys/dev/cxgbe/nvmf/nvmf_che.c
2292
cc = STAILQ_FIRST(&qp->tx_capsules);
sys/dev/cxgbe/nvmf/nvmf_che.c
2293
STAILQ_REMOVE_HEAD(&qp->tx_capsules, link);
sys/dev/cxgbe/nvmf/nvmf_che.c
2296
m = capsule_to_pdu(qp, cc);
sys/dev/cxgbe/nvmf/nvmf_che.c
2299
nvmf_che_write_pdu(qp, m);
sys/dev/cxgbe/nvmf/nvmf_che.c
2401
struct nvmf_che_qpair *qp;
sys/dev/cxgbe/nvmf/nvmf_che.c
2480
qp = malloc(sizeof(*qp), M_NVMF_CHE, M_WAITOK | M_ZERO);
sys/dev/cxgbe/nvmf/nvmf_che.c
2481
qp->txpda = nvlist_get_number(nvl, "txpda");
sys/dev/cxgbe/nvmf/nvmf_che.c
2482
qp->rxpda = nvlist_get_number(nvl, "rxpda");
sys/dev/cxgbe/nvmf/nvmf_che.c
2483
qp->header_digests = nvlist_get_bool(nvl, "header_digests");
sys/dev/cxgbe/nvmf/nvmf_che.c
2484
qp->data_digests = nvlist_get_bool(nvl, "data_digests");
sys/dev/cxgbe/nvmf/nvmf_che.c
2485
qp->maxr2t = nvlist_get_number(nvl, "maxr2t");
sys/dev/cxgbe/nvmf/nvmf_che.c
2487
qp->maxh2cdata = nvlist_get_number(nvl, "maxh2cdata");
sys/dev/cxgbe/nvmf/nvmf_che.c
2491
qp->num_fl_ttags = MIN(CHE_NUM_FL_TAGS,
sys/dev/cxgbe/nvmf/nvmf_che.c
2493
((uint64_t)qp->maxr2t + 1));
sys/dev/cxgbe/nvmf/nvmf_che.c
2494
qp->open_fl_ttags = mallocarray(qp->num_fl_ttags,
sys/dev/cxgbe/nvmf/nvmf_che.c
2495
sizeof(*qp->open_fl_ttags), M_NVMF_CHE, M_WAITOK | M_ZERO);
sys/dev/cxgbe/nvmf/nvmf_che.c
2497
qp->fl_cids = mallocarray(CHE_NUM_FL_TAGS,
sys/dev/cxgbe/nvmf/nvmf_che.c
2498
sizeof(*qp->fl_cids), M_NVMF_CHE, M_WAITOK | M_ZERO);
sys/dev/cxgbe/nvmf/nvmf_che.c
2499
qp->fl_cid_set = malloc(sizeof(*qp->fl_cid_set), M_NVMF_CHE,
sys/dev/cxgbe/nvmf/nvmf_che.c
2501
FL_CID_INIT(qp->fl_cid_set);
sys/dev/cxgbe/nvmf/nvmf_che.c
2502
mtx_init(&qp->fl_cid_lock, "nvmf/che fl cids", NULL, MTX_DEF);
sys/dev/cxgbe/nvmf/nvmf_che.c
2510
free(qp->fl_cid_set, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2511
free(qp->fl_cids, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2512
free(qp->open_fl_ttags, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2513
free(qp, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2526
free(qp->fl_cid_set, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2527
free(qp->fl_cids, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2528
free(qp->open_fl_ttags, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2529
free(qp, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2538
qp->so = so;
sys/dev/cxgbe/nvmf/nvmf_che.c
2539
qp->toep = toep;
sys/dev/cxgbe/nvmf/nvmf_che.c
2540
qp->nca = nca;
sys/dev/cxgbe/nvmf/nvmf_che.c
2541
refcount_init(&qp->refs, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
2544
qp->max_rx_data = pdu_max_data_len(nvl, nca->max_receive_pdu,
sys/dev/cxgbe/nvmf/nvmf_che.c
2545
sizeof(struct nvme_tcp_c2h_data_hdr), qp->rxpda);
sys/dev/cxgbe/nvmf/nvmf_che.c
2546
qp->max_tx_data = pdu_max_data_len(nvl, nca->max_transmit_pdu,
sys/dev/cxgbe/nvmf/nvmf_che.c
2547
sizeof(struct nvme_tcp_c2h_data_hdr), qp->txpda);
sys/dev/cxgbe/nvmf/nvmf_che.c
2549
qp->max_tx_data = min(qp->max_tx_data,
sys/dev/cxgbe/nvmf/nvmf_che.c
2551
qp->max_icd = min(nvlist_get_number(nvl, "max_icd"),
sys/dev/cxgbe/nvmf/nvmf_che.c
2553
sizeof(struct nvme_tcp_cmd), qp->txpda));
sys/dev/cxgbe/nvmf/nvmf_che.c
2561
qp->max_ioccsz = rounddown(pdu_max_data_len(nvl,
sys/dev/cxgbe/nvmf/nvmf_che.c
2563
qp->rxpda), 16) + sizeof(struct nvme_command);
sys/dev/cxgbe/nvmf/nvmf_che.c
2567
if (qp->header_digests)
sys/dev/cxgbe/nvmf/nvmf_che.c
2569
if (qp->data_digests)
sys/dev/cxgbe/nvmf/nvmf_che.c
2575
if (qp->header_digests)
sys/dev/cxgbe/nvmf/nvmf_che.c
2577
max_tx_pdu_len = roundup(max_tx_pdu_len, qp->txpda);
sys/dev/cxgbe/nvmf/nvmf_che.c
2578
max_tx_pdu_len += qp->max_tx_data;
sys/dev/cxgbe/nvmf/nvmf_che.c
2579
if (qp->data_digests)
sys/dev/cxgbe/nvmf/nvmf_che.c
2586
qp->send_success = !nvlist_get_bool(nvl, "sq_flow_control");
sys/dev/cxgbe/nvmf/nvmf_che.c
2590
toep->ulpcb = qp;
sys/dev/cxgbe/nvmf/nvmf_che.c
2594
set_ulp_mode_nvme(toep, ulp_submode, qp->rxpda);
sys/dev/cxgbe/nvmf/nvmf_che.c
2601
free(qp->fl_cid_set, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2602
free(qp->fl_cids, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2603
free(qp->open_fl_ttags, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2604
free(qp, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2610
qp->tpt_offset = t4_stag_alloc(sc, num_ddp_tags);
sys/dev/cxgbe/nvmf/nvmf_che.c
2611
if (qp->tpt_offset != T4_STAG_UNSET) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2615
__func__, toep->tid, num_ddp_tags, qp->tpt_offset);
sys/dev/cxgbe/nvmf/nvmf_che.c
2617
qp->num_ddp_tags = num_ddp_tags;
sys/dev/cxgbe/nvmf/nvmf_che.c
2618
qp->open_ddp_tags = mallocarray(qp->num_ddp_tags,
sys/dev/cxgbe/nvmf/nvmf_che.c
2619
sizeof(*qp->open_ddp_tags), M_NVMF_CHE, M_WAITOK |
sys/dev/cxgbe/nvmf/nvmf_che.c
2623
M_TCB_TPT_OFFSET, V_TCB_TPT_OFFSET(qp->tpt_offset));
sys/dev/cxgbe/nvmf/nvmf_che.c
2627
TAILQ_INIT(&qp->rx_buffers.head);
sys/dev/cxgbe/nvmf/nvmf_che.c
2628
TAILQ_INIT(&qp->tx_buffers.head);
sys/dev/cxgbe/nvmf/nvmf_che.c
2629
mtx_init(&qp->rx_buffers.lock, "nvmf/che rx buffers", NULL, MTX_DEF);
sys/dev/cxgbe/nvmf/nvmf_che.c
2630
mtx_init(&qp->tx_buffers.lock, "nvmf/che tx buffers", NULL, MTX_DEF);
sys/dev/cxgbe/nvmf/nvmf_che.c
2632
cv_init(&qp->rx_cv, "-");
sys/dev/cxgbe/nvmf/nvmf_che.c
2633
cv_init(&qp->tx_cv, "-");
sys/dev/cxgbe/nvmf/nvmf_che.c
2634
mbufq_init(&qp->rx_data, 0);
sys/dev/cxgbe/nvmf/nvmf_che.c
2635
mbufq_init(&qp->rx_pdus, 0);
sys/dev/cxgbe/nvmf/nvmf_che.c
2636
STAILQ_INIT(&qp->tx_capsules);
sys/dev/cxgbe/nvmf/nvmf_che.c
2640
soupcall_set(so, SO_RCV, nvmf_che_soupcall_receive, qp);
sys/dev/cxgbe/nvmf/nvmf_che.c
2644
error = kthread_add(nvmf_che_receive, qp, NULL, &qp->rx_thread, 0, 0,
sys/dev/cxgbe/nvmf/nvmf_che.c
2647
che_free_qpair(&qp->qp);
sys/dev/cxgbe/nvmf/nvmf_che.c
2650
error = kthread_add(nvmf_che_send, qp, NULL, &qp->tx_thread, 0, 0,
sys/dev/cxgbe/nvmf/nvmf_che.c
2653
che_free_qpair(&qp->qp);
sys/dev/cxgbe/nvmf/nvmf_che.c
2657
return (&qp->qp);
sys/dev/cxgbe/nvmf/nvmf_che.c
2661
che_release_qpair(struct nvmf_che_qpair *qp)
sys/dev/cxgbe/nvmf/nvmf_che.c
2663
if (refcount_release(&qp->refs))
sys/dev/cxgbe/nvmf/nvmf_che.c
2664
free(qp, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2670
struct nvmf_che_qpair *qp = CQP(nq);
sys/dev/cxgbe/nvmf/nvmf_che.c
2673
struct socket *so = qp->so;
sys/dev/cxgbe/nvmf/nvmf_che.c
2674
struct toepcb *toep = qp->toep;
sys/dev/cxgbe/nvmf/nvmf_che.c
2679
qp->tx_shutdown = true;
sys/dev/cxgbe/nvmf/nvmf_che.c
2680
if (qp->tx_thread != NULL) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2681
cv_signal(&qp->tx_cv);
sys/dev/cxgbe/nvmf/nvmf_che.c
2682
mtx_sleep(qp->tx_thread, SOCKBUF_MTX(&so->so_snd), 0,
sys/dev/cxgbe/nvmf/nvmf_che.c
2688
qp->rx_shutdown = true;
sys/dev/cxgbe/nvmf/nvmf_che.c
2689
if (qp->rx_thread != NULL) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2690
cv_signal(&qp->rx_cv);
sys/dev/cxgbe/nvmf/nvmf_che.c
2691
mtx_sleep(qp->rx_thread, SOCKBUF_MTX(&so->so_rcv), 0,
sys/dev/cxgbe/nvmf/nvmf_che.c
2696
mbufq_drain(&qp->rx_data);
sys/dev/cxgbe/nvmf/nvmf_che.c
2697
mbufq_drain(&qp->rx_pdus);
sys/dev/cxgbe/nvmf/nvmf_che.c
2699
STAILQ_FOREACH_SAFE(cc, &qp->tx_capsules, link, ncc) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2704
cv_destroy(&qp->tx_cv);
sys/dev/cxgbe/nvmf/nvmf_che.c
2705
cv_destroy(&qp->rx_cv);
sys/dev/cxgbe/nvmf/nvmf_che.c
2707
if (qp->open_fl_ttags != NULL) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2708
for (u_int i = 0; i < qp->num_fl_ttags; i++) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2709
cb = qp->open_fl_ttags[i];
sys/dev/cxgbe/nvmf/nvmf_che.c
2716
free(qp->open_fl_ttags, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2718
if (qp->num_ddp_tags != 0) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2719
for (u_int i = 0; i < qp->num_ddp_tags; i++) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2720
cb = qp->open_ddp_tags[i];
sys/dev/cxgbe/nvmf/nvmf_che.c
2725
mtx_lock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2726
che_free_ddp_tag(qp, cb, cb->ttag);
sys/dev/cxgbe/nvmf/nvmf_che.c
2727
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2731
free(qp->open_ddp_tags, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2734
mtx_lock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2735
TAILQ_FOREACH_SAFE(cb, &qp->rx_buffers.head, link, ncb) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2736
che_remove_command_buffer(&qp->rx_buffers, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
2737
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2744
mtx_lock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2746
mtx_destroy(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2748
mtx_lock(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2749
TAILQ_FOREACH_SAFE(cb, &qp->tx_buffers.head, link, ncb) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2750
che_remove_command_buffer(&qp->tx_buffers, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
2751
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2754
mtx_lock(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2756
mtx_destroy(&qp->tx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2758
if (qp->num_ddp_tags != 0)
sys/dev/cxgbe/nvmf/nvmf_che.c
2759
t4_stag_free(qp->nca->sc, qp->tpt_offset, qp->num_ddp_tags);
sys/dev/cxgbe/nvmf/nvmf_che.c
2761
if (!qp->qp.nq_controller) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2762
free(qp->fl_cids, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2763
free(qp->fl_cid_set, M_NVMF_CHE);
sys/dev/cxgbe/nvmf/nvmf_che.c
2764
mtx_destroy(&qp->fl_cid_lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
279
#define CQP(qp) ((struct nvmf_che_qpair *)(qp))
sys/dev/cxgbe/nvmf/nvmf_che.c
2801
che_release_qpair(qp);
sys/dev/cxgbe/nvmf/nvmf_che.c
2807
struct nvmf_che_qpair *qp = CQP(nq);
sys/dev/cxgbe/nvmf/nvmf_che.c
2814
return (qp->max_ioccsz);
sys/dev/cxgbe/nvmf/nvmf_che.c
2820
struct nvmf_che_qpair *qp = CQP(nq);
sys/dev/cxgbe/nvmf/nvmf_che.c
2826
return (qp->max_rx_data);
sys/dev/cxgbe/nvmf/nvmf_che.c
2832
struct nvmf_che_qpair *qp = CQP(nq);
sys/dev/cxgbe/nvmf/nvmf_che.c
2839
refcount_acquire(&qp->refs);
sys/dev/cxgbe/nvmf/nvmf_che.c
2846
struct nvmf_che_qpair *qp = CQP(cc->nc.nc_qpair);
sys/dev/cxgbe/nvmf/nvmf_che.c
2856
che_release_qpair(qp);
sys/dev/cxgbe/nvmf/nvmf_che.c
2868
struct nvmf_che_qpair *qp = CQP(nc->nc_qpair);
sys/dev/cxgbe/nvmf/nvmf_che.c
2870
struct socket *so = qp->so;
sys/dev/cxgbe/nvmf/nvmf_che.c
2874
STAILQ_INSERT_TAIL(&qp->tx_capsules, cc, link);
sys/dev/cxgbe/nvmf/nvmf_che.c
2875
cv_signal(&qp->tx_cv);
sys/dev/cxgbe/nvmf/nvmf_che.c
2926
struct nvmf_che_qpair *qp = CQP(nc->nc_qpair);
sys/dev/cxgbe/nvmf/nvmf_che.c
2930
cb = che_alloc_command_buffer(qp, io, data_offset, io->io_len,
sys/dev/cxgbe/nvmf/nvmf_che.c
2942
mtx_lock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2943
if (cc->active_r2ts > qp->maxr2t ||
sys/dev/cxgbe/nvmf/nvmf_che.c
2944
!nvmf_che_allocate_ttag(qp, cb)) {
sys/dev/cxgbe/nvmf/nvmf_che.c
2948
TAILQ_INSERT_TAIL(&qp->rx_buffers.head, cb, link);
sys/dev/cxgbe/nvmf/nvmf_che.c
2949
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2952
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/cxgbe/nvmf/nvmf_che.c
2954
che_send_r2t(qp, nc->nc_sqe.cid, cb->ttag, data_offset, io->io_len);
sys/dev/cxgbe/nvmf/nvmf_che.c
2996
che_send_c2h_pdu(struct nvmf_che_qpair *qp, uint16_t cid, uint32_t data_offset,
sys/dev/cxgbe/nvmf/nvmf_che.c
3012
top = nvmf_che_construct_pdu(qp, &c2h, sizeof(c2h), m, len);
sys/dev/cxgbe/nvmf/nvmf_che.c
3013
nvmf_che_write_pdu(qp, top);
sys/dev/cxgbe/nvmf/nvmf_che.c
3020
struct nvmf_che_qpair *qp = CQP(nc->nc_qpair);
sys/dev/cxgbe/nvmf/nvmf_che.c
3026
!qp->qp.nq_controller) {
sys/dev/cxgbe/nvmf/nvmf_che.c
3053
if (m->m_len > qp->max_tx_data) {
sys/dev/cxgbe/nvmf/nvmf_che.c
3054
n = m_split(m, qp->max_tx_data, M_WAITOK);
sys/dev/cxgbe/nvmf/nvmf_che.c
3063
if (todo + n->m_len > qp->max_tx_data) {
sys/dev/cxgbe/nvmf/nvmf_che.c
3075
che_send_c2h_pdu(qp, nc->nc_sqe.cid, data_offset, m, todo,
sys/dev/cxgbe/nvmf/nvmf_che.c
3076
last_pdu, last_pdu && qp->send_success);
sys/dev/cxgbe/nvmf/nvmf_che.c
3089
else if (qp->send_success)
sys/dev/cxgbe/nvmf/nvmf_che.c
319
che_ddp_io_check(struct nvmf_che_qpair *qp, const struct nvmf_io_request *io)
sys/dev/cxgbe/nvmf/nvmf_che.c
325
if (io->io_len < qp->nca->ddp_threshold) {
sys/dev/cxgbe/nvmf/nvmf_che.c
386
che_alloc_command_buffer(struct nvmf_che_qpair *qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
393
cb->qp = qp;
sys/dev/cxgbe/nvmf/nvmf_che.c
400
cb->ddp_ok = che_ddp_io_check(qp, io);
sys/dev/cxgbe/nvmf/nvmf_che.c
551
che_write_adapter_mem(struct nvmf_che_qpair *qp, uint32_t addr, uint32_t len,
sys/dev/cxgbe/nvmf/nvmf_che.c
554
struct adapter *sc = qp->nca->sc;
sys/dev/cxgbe/nvmf/nvmf_che.c
555
struct toepcb *toep = qp->toep;
sys/dev/cxgbe/nvmf/nvmf_che.c
556
struct socket *so = qp->so;
sys/dev/cxgbe/nvmf/nvmf_che.c
586
che_alloc_pbl(struct nvmf_che_qpair *qp, struct nvmf_che_command_buffer *cb)
sys/dev/cxgbe/nvmf/nvmf_che.c
588
struct adapter *sc = qp->nca->sc;
sys/dev/cxgbe/nvmf/nvmf_che.c
686
error = che_write_adapter_mem(qp, addr >> 5, len, pbl);
sys/dev/cxgbe/nvmf/nvmf_che.c
704
t4_pblpool_free(cb->qp->nca->sc, cb->pbl_addr, cb->pbl_len);
sys/dev/cxgbe/nvmf/nvmf_che.c
711
che_write_tpt_entry(struct nvmf_che_qpair *qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
726
V_FW_RI_TPTE_QPID(qp->toep->tid));
sys/dev/cxgbe/nvmf/nvmf_che.c
727
#define PBL_OFF(qp, a) ((a) - (qp)->nca->sc->vres.pbl.start)
sys/dev/cxgbe/nvmf/nvmf_che.c
729
htobe32(V_FW_RI_TPTE_PBLADDR(PBL_OFF(qp, cb->pbl_addr) >> 3));
sys/dev/cxgbe/nvmf/nvmf_che.c
736
tpt_addr = qp->tpt_offset + CHE_STAG_IDX(stag) +
sys/dev/cxgbe/nvmf/nvmf_che.c
737
(qp->nca->sc->vres.stag.start >> 5);
sys/dev/cxgbe/nvmf/nvmf_che.c
739
error = che_write_adapter_mem(qp, tpt_addr, sizeof(cb->tpte),
sys/dev/cxgbe/nvmf/nvmf_che.c
745
che_clear_tpt_entry(struct nvmf_che_qpair *qp, uint16_t stag)
sys/dev/cxgbe/nvmf/nvmf_che.c
749
tpt_addr = qp->tpt_offset + CHE_STAG_IDX(stag) +
sys/dev/cxgbe/nvmf/nvmf_che.c
750
(qp->nca->sc->vres.stag.start >> 5);
sys/dev/cxgbe/nvmf/nvmf_che.c
752
(void)che_write_adapter_mem(qp, tpt_addr, sizeof(struct fw_ri_tpte),
sys/dev/cxgbe/nvmf/nvmf_che.c
757
che_alloc_ddp_stag(struct nvmf_che_qpair *qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
762
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/cxgbe/nvmf/nvmf_che.c
765
if (qp->active_ddp_tags == qp->num_ddp_tags)
sys/dev/cxgbe/nvmf/nvmf_che.c
768
MPASS(qp->num_ddp_tags != 0);
sys/dev/cxgbe/nvmf/nvmf_che.c
770
stag_idx = qp->next_ddp_tag;
sys/dev/cxgbe/nvmf/nvmf_che.c
772
if (qp->open_ddp_tags[stag_idx] == NULL)
sys/dev/cxgbe/nvmf/nvmf_che.c
774
if (stag_idx == qp->num_ddp_tags - 1) {
sys/dev/cxgbe/nvmf/nvmf_che.c
776
if (qp->ddp_color == CHE_DDP_MAX_COLOR)
sys/dev/cxgbe/nvmf/nvmf_che.c
777
qp->ddp_color = 0;
sys/dev/cxgbe/nvmf/nvmf_che.c
779
qp->ddp_color++;
sys/dev/cxgbe/nvmf/nvmf_che.c
782
MPASS(stag_idx != qp->next_ddp_tag);
sys/dev/cxgbe/nvmf/nvmf_che.c
784
if (stag_idx == qp->num_ddp_tags - 1)
sys/dev/cxgbe/nvmf/nvmf_che.c
785
qp->next_ddp_tag = 0;
sys/dev/cxgbe/nvmf/nvmf_che.c
787
qp->next_ddp_tag = stag_idx + 1;
sys/dev/cxgbe/nvmf/nvmf_che.c
789
qp->active_ddp_tags++;
sys/dev/cxgbe/nvmf/nvmf_che.c
790
qp->open_ddp_tags[stag_idx] = cb;
sys/dev/cxgbe/nvmf/nvmf_che.c
792
return (CHE_DDP_TAG(stag_idx, qp->ddp_color));
sys/dev/cxgbe/nvmf/nvmf_che.c
796
che_free_ddp_stag(struct nvmf_che_qpair *qp, struct nvmf_che_command_buffer *cb,
sys/dev/cxgbe/nvmf/nvmf_che.c
801
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/cxgbe/nvmf/nvmf_che.c
803
MPASS(qp->open_ddp_tags[CHE_STAG_IDX(stag)] == cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
805
qp->open_ddp_tags[CHE_STAG_IDX(stag)] = NULL;
sys/dev/cxgbe/nvmf/nvmf_che.c
806
qp->active_ddp_tags--;
sys/dev/cxgbe/nvmf/nvmf_che.c
810
che_alloc_ddp_tag(struct nvmf_che_qpair *qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
815
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/cxgbe/nvmf/nvmf_che.c
820
stag = che_alloc_ddp_stag(qp, cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
822
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_ddp_setup_no_stag,
sys/dev/cxgbe/nvmf/nvmf_che.c
827
if (!che_alloc_pbl(qp, cb)) {
sys/dev/cxgbe/nvmf/nvmf_che.c
828
che_free_ddp_stag(qp, cb, stag);
sys/dev/cxgbe/nvmf/nvmf_che.c
829
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_ddp_setup_error, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
833
if (!che_write_tpt_entry(qp, cb, stag)) {
sys/dev/cxgbe/nvmf/nvmf_che.c
835
che_free_ddp_stag(qp, cb, stag);
sys/dev/cxgbe/nvmf/nvmf_che.c
836
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_ddp_setup_error, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
840
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_ddp_setup_ok, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
845
che_free_ddp_tag(struct nvmf_che_qpair *qp, struct nvmf_che_command_buffer *cb,
sys/dev/cxgbe/nvmf/nvmf_che.c
850
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/cxgbe/nvmf/nvmf_che.c
852
MPASS(qp->open_ddp_tags[CHE_STAG_IDX(stag)] == cb);
sys/dev/cxgbe/nvmf/nvmf_che.c
854
che_clear_tpt_entry(qp, stag);
sys/dev/cxgbe/nvmf/nvmf_che.c
856
che_free_ddp_stag(qp, cb, stag);
sys/dev/cxgbe/nvmf/nvmf_che.c
860
nvmf_che_write_pdu(struct nvmf_che_qpair *qp, struct mbuf *m)
sys/dev/cxgbe/nvmf/nvmf_che.c
863
struct socket *so = qp->so;
sys/dev/cxgbe/nvmf/nvmf_che.c
865
struct toepcb *toep = qp->toep;
sys/dev/cxgbe/nvmf/nvmf_che.c
883
nvmf_che_report_error(struct nvmf_che_qpair *qp, uint16_t fes, uint32_t fei,
sys/dev/cxgbe/nvmf/nvmf_che.c
899
hdr->common.pdu_type = qp->qp.nq_controller ?
sys/dev/cxgbe/nvmf/nvmf_che.c
908
nvmf_che_write_pdu(qp, m);
sys/dev/cxgbe/nvmf/nvmf_che.c
912
nvmf_che_validate_pdu(struct nvmf_che_qpair *qp, struct nvmf_che_rxpdu *pdu)
sys/dev/cxgbe/nvmf/nvmf_che.c
934
qp->toep->ofld_rxq->rx_nvme_header_digest_errors, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
937
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
942
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_invalid_headers, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
944
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
951
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_invalid_headers, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
953
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
958
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_invalid_headers, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
960
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
968
device_printf(qp->nca->sc->dev,
sys/dev/cxgbe/nvmf/nvmf_che.c
978
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_invalid_headers, 1);
sys/dev/cxgbe/nvmf/nvmf_che.c
981
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
987
nvmf_che_report_error(qp,
sys/dev/cxgbe/nvmf/nvmf_che.c
993
device_printf(qp->nca->sc->dev,
sys/dev/cxgbe/nvmf/nvmf_che.c
999
counter_u64_add(qp->toep->ofld_rxq->rx_nvme_invalid_headers, 1);
sys/dev/cxgbe/offload.h
187
struct t4_range qp;
sys/dev/cxgbe/t4_main.c
2407
COMPARE_PARAM(vres.qp.start, qp_start);
sys/dev/cxgbe/t4_main.c
2408
COMPARE_PARAM(vres.qp.size, qp_size);
sys/dev/cxgbe/t4_main.c
5946
sc->vres.qp.start = val[2];
sys/dev/cxgbe/t4_main.c
5947
sc->vres.qp.size = val[3] - val[2] + 1;
sys/dev/dpaa/qman.c
158
t_QmParam qp;
sys/dev/dpaa/qman.c
196
qp.guestId = NCSW_MASTER_ID;
sys/dev/dpaa/qman.c
197
qp.baseAddress = rman_get_bushandle(sc->sc_rres);
sys/dev/dpaa/qman.c
198
qp.swPortalsBaseAddress = rman_get_bushandle(qp_sc->sc_rres[0]);
sys/dev/dpaa/qman.c
199
qp.liodn = 0;
sys/dev/dpaa/qman.c
200
qp.totalNumOfFqids = QMAN_MAX_FQIDS;
sys/dev/dpaa/qman.c
201
qp.fqdMemPartitionId = NCSW_MASTER_ID;
sys/dev/dpaa/qman.c
202
qp.pfdrMemPartitionId = NCSW_MASTER_ID;
sys/dev/dpaa/qman.c
203
qp.f_Exception = qman_exception;
sys/dev/dpaa/qman.c
204
qp.h_App = sc;
sys/dev/dpaa/qman.c
205
qp.errIrq = (uintptr_t)sc->sc_ires;
sys/dev/dpaa/qman.c
206
qp.partFqidBase = QMAN_FQID_BASE;
sys/dev/dpaa/qman.c
207
qp.partNumOfFqids = QMAN_MAX_FQIDS;
sys/dev/dpaa/qman.c
208
qp.partCgsBase = 0;
sys/dev/dpaa/qman.c
209
qp.partNumOfCgs = 0;
sys/dev/dpaa/qman.c
211
sc->sc_qh = QM_Config(&qp);
sys/dev/irdma/fbsd_kcompat.c
1193
struct irdma_sc_qp *qp = NULL;
sys/dev/irdma/fbsd_kcompat.c
1199
qp = irdma_get_qp_from_list(&vsi->qos[i].qplist, qp);
sys/dev/irdma/fbsd_kcompat.c
1200
while (qp) {
sys/dev/irdma/fbsd_kcompat.c
1201
if (qp->qp_uk.qp_type == IRDMA_QP_TYPE_UDA) {
sys/dev/irdma/fbsd_kcompat.c
1202
qp = irdma_get_qp_from_list(&vsi->qos[i].qplist, qp);
sys/dev/irdma/fbsd_kcompat.c
1205
iwqp = qp->qp_uk.back_qp;
sys/dev/irdma/fbsd_kcompat.c
1212
qp = irdma_get_qp_from_list(&vsi->qos[i].qplist, qp);
sys/dev/irdma/irdma_cm.c
3547
struct irdma_sc_qp *qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_cm.c
3576
irdma_ib_qp_event(iwqp, qp->event_type);
sys/dev/irdma/irdma_cm.c
3585
if (qp->term_flags) {
sys/dev/irdma/irdma_cm.c
3589
irdma_terminate_del_timer(qp);
sys/dev/irdma/irdma_cm.c
3607
qp->term_flags = 0;
sys/dev/irdma/irdma_cm.c
3617
if (qp->term_flags)
sys/dev/irdma/irdma_cm.c
3618
irdma_ib_qp_event(iwqp, qp->event_type);
sys/dev/irdma/irdma_cm.c
4216
struct irdma_qp *qp;
sys/dev/irdma/irdma_cm.c
4230
qp = sc_qp->qp_uk.back_qp;
sys/dev/irdma/irdma_cm.c
4233
qp_ip[0] = qp->udp_info.local_ipaddr[3];
sys/dev/irdma/irdma_cm.c
4236
&qp->udp_info.local_ipaddr[0],
sys/dev/irdma/irdma_cm.c
4242
qp->udp_info.vlan_tag & EVL_VLID_MASK,
sys/dev/irdma/irdma_cm.c
4243
qp->udp_info.insert_vlan_tag,
sys/dev/irdma/irdma_cm.c
4247
irdma_qp_add_ref(&qp->ibqp);
sys/dev/irdma/irdma_cm.c
4248
list_add(&qp->teardown_entry, teardown_list);
sys/dev/irdma/irdma_cm.c
4432
struct irdma_qp *qp;
sys/dev/irdma/irdma_cm.c
4457
qp = container_of(list_node, struct irdma_qp, teardown_entry);
sys/dev/irdma/irdma_cm.c
4458
irdma_modify_qp_roce(&qp->ibqp, &attr, IB_QP_STATE, NULL);
sys/dev/irdma/irdma_cm.c
4459
irdma_ib_qp_event(qp, IRDMA_QP_EVENT_CATASTROPHIC);
sys/dev/irdma/irdma_cm.c
4460
irdma_qp_rem_ref(&qp->ibqp);
sys/dev/irdma/irdma_cm.h
445
void irdma_lpb_nop(struct irdma_sc_qp *qp);
sys/dev/irdma/irdma_ctrl.c
1000
FIELD_PREP(IRDMAQPC_SQTPHEN, qp->sq_tph_en) |
sys/dev/irdma/irdma_ctrl.c
1004
set_64bit_val(qp_ctx, IRDMA_BYTE_8, qp->sq_pa);
sys/dev/irdma/irdma_ctrl.c
1005
set_64bit_val(qp_ctx, IRDMA_BYTE_16, qp->rq_pa);
sys/dev/irdma/irdma_ctrl.c
1007
qw3 = FIELD_PREP(IRDMAQPC_RQSIZE, qp->hw_rq_size) |
sys/dev/irdma/irdma_ctrl.c
1008
FIELD_PREP(IRDMAQPC_SQSIZE, qp->hw_sq_size);
sys/dev/irdma/irdma_ctrl.c
1011
qp->src_mac_addr_idx);
sys/dev/irdma/irdma_ctrl.c
1018
FIELD_PREP(IRDMAQPC_SQTPHVAL, qp->sq_tph_val) |
sys/dev/irdma/irdma_ctrl.c
1019
FIELD_PREP(IRDMAQPC_RQTPHVAL, qp->rq_tph_val) |
sys/dev/irdma/irdma_ctrl.c
1020
FIELD_PREP(IRDMAQPC_QSHANDLE, qp->qs_handle) |
sys/dev/irdma/irdma_ctrl.c
1021
FIELD_PREP(IRDMAQPC_EXCEPTION_LAN_QUEUE, qp->ieq_qp));
sys/dev/irdma/irdma_ctrl.c
1035
FIELD_PREP(IRDMAQPC_Q2ADDR, qp->q2_pa >> 8) |
sys/dev/irdma/irdma_ctrl.c
1084
qp->src_mac_addr_idx = tcp->src_mac_addr_idx;
sys/dev/irdma/irdma_ctrl.c
109
struct irdma_sc_qp *qp = NULL;
sys/dev/irdma/irdma_ctrl.c
114
qp = irdma_get_qp_from_list(&vsi->qos[i].qplist, qp);
sys/dev/irdma/irdma_ctrl.c
1147
irdma_debug_buf(qp->dev, IRDMA_DEBUG_WQE, "QP_HOST CTX", qp_ctx,
sys/dev/irdma/irdma_ctrl.c
115
while (qp) {
sys/dev/irdma/irdma_ctrl.c
117
if (!qp->suspended) {
sys/dev/irdma/irdma_ctrl.c
118
qp = irdma_get_qp_from_list(&vsi->qos[i].qplist,
sys/dev/irdma/irdma_ctrl.c
119
qp);
sys/dev/irdma/irdma_ctrl.c
122
if (!qp->dev->ws_add(vsi, i)) {
sys/dev/irdma/irdma_ctrl.c
123
qp->qs_handle = irdma_get_qp_qs(qp);
sys/dev/irdma/irdma_ctrl.c
124
if (!irdma_cqp_qp_suspend_resume(qp, op))
sys/dev/irdma/irdma_ctrl.c
125
qp->suspended = false;
sys/dev/irdma/irdma_ctrl.c
127
if (!irdma_cqp_qp_suspend_resume(qp, op))
sys/dev/irdma/irdma_ctrl.c
128
qp->suspended = false;
sys/dev/irdma/irdma_ctrl.c
129
irdma_modify_qp_to_err(qp);
sys/dev/irdma/irdma_ctrl.c
133
if ((qp->qp_state == IRDMA_QP_STATE_RTS ||
sys/dev/irdma/irdma_ctrl.c
134
qp->qp_state == IRDMA_QP_STATE_RTR) &&
sys/dev/irdma/irdma_ctrl.c
135
!irdma_cqp_qp_suspend_resume(qp, op)) {
sys/dev/irdma/irdma_ctrl.c
137
qp->suspended = true;
sys/dev/irdma/irdma_ctrl.c
1397
irdma_sc_mr_fast_register(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_ctrl.c
140
qp = irdma_get_qp_from_list(&vsi->qos[i].qplist, qp);
sys/dev/irdma/irdma_ctrl.c
1419
wqe = irdma_qp_get_next_send_wqe(&qp->qp_uk, &wqe_idx, &quanta, 0, &sq_info);
sys/dev/irdma/irdma_ctrl.c
1423
qp->qp_uk.sq_wrtrk_array[wqe_idx].signaled = info->signaled;
sys/dev/irdma/irdma_ctrl.c
1424
irdma_debug(qp->dev, IRDMA_DEBUG_MR,
sys/dev/irdma/irdma_ctrl.c
1427
&qp->qp_uk.sq_wrtrk_array[wqe_idx].wrid);
sys/dev/irdma/irdma_ctrl.c
1453
FIELD_PREP(IRDMAQPSQ_VALID, qp->qp_uk.swqe_polarity);
sys/dev/irdma/irdma_ctrl.c
1458
irdma_debug_buf(qp->dev, IRDMA_DEBUG_WQE, "FAST_REG WQE", wqe,
sys/dev/irdma/irdma_ctrl.c
1461
irdma_qp_push_wqe(&qp->qp_uk, wqe, quanta, wqe_idx, post_sq);
sys/dev/irdma/irdma_ctrl.c
1463
irdma_uk_qp_post_wr(&qp->qp_uk);
sys/dev/irdma/irdma_ctrl.c
1473
irdma_sc_gen_rts_ae(struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_ctrl.c
1479
qp_uk = &qp->qp_uk;
sys/dev/irdma/irdma_ctrl.c
1485
FIELD_PREP(IRDMAQPSQ_VALID, qp->qp_uk.swqe_polarity);
sys/dev/irdma/irdma_ctrl.c
1489
irdma_debug_buf(qp->dev, IRDMA_DEBUG_QP, "NOP W/LOCAL FENCE WQE", wqe,
sys/dev/irdma/irdma_ctrl.c
1494
FIELD_PREP(IRDMAQPSQ_VALID, qp->qp_uk.swqe_polarity);
sys/dev/irdma/irdma_ctrl.c
1498
irdma_debug_buf(qp->dev, IRDMA_DEBUG_QP, "CONN EST WQE", wqe,
sys/dev/irdma/irdma_ctrl.c
1500
if (qp->qp_uk.start_wqe_idx) {
sys/dev/irdma/irdma_ctrl.c
1504
FIELD_PREP(IRDMAQPSQ_VALID, qp->qp_uk.swqe_polarity);
sys/dev/irdma/irdma_ctrl.c
1519
irdma_sc_send_lsmm(struct irdma_sc_qp *qp, void *lsmm_buf, u32 size,
sys/dev/irdma/irdma_ctrl.c
1526
qp_uk = &qp->qp_uk;
sys/dev/irdma/irdma_ctrl.c
1530
if (qp->qp_uk.uk_attrs->hw_rev == IRDMA_GEN_1) {
sys/dev/irdma/irdma_ctrl.c
1538
FIELD_PREP(IRDMAQPSQ_VALID, qp->qp_uk.swqe_polarity));
sys/dev/irdma/irdma_ctrl.c
1545
FIELD_PREP(IRDMAQPSQ_VALID, qp->qp_uk.swqe_polarity);
sys/dev/irdma/irdma_ctrl.c
1550
irdma_debug_buf(qp->dev, IRDMA_DEBUG_WQE, "SEND_LSMM WQE", wqe,
sys/dev/irdma/irdma_ctrl.c
1553
if (qp->dev->hw_attrs.uk_attrs.feature_flags & IRDMA_FEATURE_RTS_AE)
sys/dev/irdma/irdma_ctrl.c
1554
irdma_sc_gen_rts_ae(qp);
sys/dev/irdma/irdma_ctrl.c
1563
irdma_sc_send_rtt(struct irdma_sc_qp *qp, bool read)
sys/dev/irdma/irdma_ctrl.c
1569
qp_uk = &qp->qp_uk;
sys/dev/irdma/irdma_ctrl.c
1575
if (qp->qp_uk.uk_attrs->hw_rev == IRDMA_GEN_1) {
sys/dev/irdma/irdma_ctrl.c
1581
qp->qp_uk.swqe_polarity));
sys/dev/irdma/irdma_ctrl.c
1585
FIELD_PREP(IRDMAQPSQ_VALID, qp->qp_uk.swqe_polarity);
sys/dev/irdma/irdma_ctrl.c
1588
if (qp->qp_uk.uk_attrs->hw_rev == IRDMA_GEN_1) {
sys/dev/irdma/irdma_ctrl.c
1592
FIELD_PREP(IRDMAQPSQ_VALID, qp->qp_uk.swqe_polarity));
sys/dev/irdma/irdma_ctrl.c
1595
FIELD_PREP(IRDMAQPSQ_VALID, qp->qp_uk.swqe_polarity);
sys/dev/irdma/irdma_ctrl.c
1602
irdma_debug_buf(qp->dev, IRDMA_DEBUG_WQE, "RTR WQE", wqe,
sys/dev/irdma/irdma_ctrl.c
1605
if (qp->dev->hw_attrs.uk_attrs.feature_flags & IRDMA_FEATURE_RTS_AE)
sys/dev/irdma/irdma_ctrl.c
1606
irdma_sc_gen_rts_ae(qp);
sys/dev/irdma/irdma_ctrl.c
1650
irdma_bld_termhdr_ctrl(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_ctrl.c
1655
qp->flush_code = opcode;
sys/dev/irdma/irdma_ctrl.c
1703
irdma_bld_terminate_hdr(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_ctrl.c
1706
u8 *pkt = qp->q2_buf + Q2_BAD_FRAME_OFFSET;
sys/dev/irdma/irdma_ctrl.c
1712
termhdr = (struct irdma_terminate_hdr *)qp->q2_buf;
sys/dev/irdma/irdma_ctrl.c
1721
qp->event_type = IRDMA_QP_EVENT_CATASTROPHIC;
sys/dev/irdma/irdma_ctrl.c
1722
qp->sq_flush_code = info->sq;
sys/dev/irdma/irdma_ctrl.c
1723
qp->rq_flush_code = info->rq;
sys/dev/irdma/irdma_ctrl.c
1727
qp->event_type = IRDMA_QP_EVENT_ACCESS_ERR;
sys/dev/irdma/irdma_ctrl.c
1729
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_PROT_ERR,
sys/dev/irdma/irdma_ctrl.c
1733
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_REM_ACCESS_ERR,
sys/dev/irdma/irdma_ctrl.c
1738
qp->event_type = IRDMA_QP_EVENT_ACCESS_ERR;
sys/dev/irdma/irdma_ctrl.c
1740
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_PROT_ERR,
sys/dev/irdma/irdma_ctrl.c
1744
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_REM_ACCESS_ERR,
sys/dev/irdma/irdma_ctrl.c
1751
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_PROT_ERR,
sys/dev/irdma/irdma_ctrl.c
1757
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_REM_ACCESS_ERR,
sys/dev/irdma/irdma_ctrl.c
1762
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_REM_ACCESS_ERR,
sys/dev/irdma/irdma_ctrl.c
1768
qp->event_type = IRDMA_QP_EVENT_ACCESS_ERR;
sys/dev/irdma/irdma_ctrl.c
1769
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_REM_ACCESS_ERR,
sys/dev/irdma/irdma_ctrl.c
1774
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_LOC_QP_OP_ERR,
sys/dev/irdma/irdma_ctrl.c
1780
qp->event_type = IRDMA_QP_EVENT_ACCESS_ERR;
sys/dev/irdma/irdma_ctrl.c
1784
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_REM_OP_ERR,
sys/dev/irdma/irdma_ctrl.c
1789
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_REM_ACCESS_ERR,
sys/dev/irdma/irdma_ctrl.c
1797
qp->event_type = IRDMA_QP_EVENT_ACCESS_ERR;
sys/dev/irdma/irdma_ctrl.c
1798
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_REM_ACCESS_ERR,
sys/dev/irdma/irdma_ctrl.c
1803
qp->event_type = IRDMA_QP_EVENT_ACCESS_ERR;
sys/dev/irdma/irdma_ctrl.c
1804
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_REM_ACCESS_ERR,
sys/dev/irdma/irdma_ctrl.c
1809
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_GENERAL_ERR,
sys/dev/irdma/irdma_ctrl.c
1813
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_LOC_LEN_ERR,
sys/dev/irdma/irdma_ctrl.c
1819
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_FATAL_ERR,
sys/dev/irdma/irdma_ctrl.c
1824
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_GENERAL_ERR,
sys/dev/irdma/irdma_ctrl.c
1829
qp->event_type = IRDMA_QP_EVENT_ACCESS_ERR;
sys/dev/irdma/irdma_ctrl.c
1830
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_LOC_LEN_ERR,
sys/dev/irdma/irdma_ctrl.c
1836
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_GENERAL_ERR,
sys/dev/irdma/irdma_ctrl.c
1840
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_GENERAL_ERR,
sys/dev/irdma/irdma_ctrl.c
1845
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_GENERAL_ERR,
sys/dev/irdma/irdma_ctrl.c
1850
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_REM_OP_ERR,
sys/dev/irdma/irdma_ctrl.c
1855
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_GENERAL_ERR,
sys/dev/irdma/irdma_ctrl.c
1860
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_GENERAL_ERR,
sys/dev/irdma/irdma_ctrl.c
1865
irdma_bld_termhdr_ctrl(qp, termhdr, FLUSH_FATAL_ERR,
sys/dev/irdma/irdma_ctrl.c
1882
irdma_terminate_send_fin(struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_ctrl.c
1884
irdma_term_modify_qp(qp, IRDMA_QP_STATE_TERMINATE,
sys/dev/irdma/irdma_ctrl.c
1894
irdma_terminate_connection(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_ctrl.c
1899
if (qp->term_flags & IRDMA_TERM_SENT)
sys/dev/irdma/irdma_ctrl.c
1902
termlen = irdma_bld_terminate_hdr(qp, info);
sys/dev/irdma/irdma_ctrl.c
1903
irdma_terminate_start_timer(qp);
sys/dev/irdma/irdma_ctrl.c
1904
qp->term_flags |= IRDMA_TERM_SENT;
sys/dev/irdma/irdma_ctrl.c
1905
irdma_term_modify_qp(qp, IRDMA_QP_STATE_TERMINATE,
sys/dev/irdma/irdma_ctrl.c
1915
irdma_terminate_received(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_ctrl.c
1918
u8 *pkt = qp->q2_buf + Q2_BAD_FRAME_OFFSET;
sys/dev/irdma/irdma_ctrl.c
1946
irdma_terminate_connection(qp, info);
sys/dev/irdma/irdma_ctrl.c
1951
qp->term_flags |= IRDMA_TERM_RCVD;
sys/dev/irdma/irdma_ctrl.c
1952
qp->event_type = IRDMA_QP_EVENT_CATASTROPHIC;
sys/dev/irdma/irdma_ctrl.c
1956
irdma_terminate_done(qp, 0);
sys/dev/irdma/irdma_ctrl.c
1958
irdma_terminate_start_timer(qp);
sys/dev/irdma/irdma_ctrl.c
1959
irdma_terminate_send_fin(qp);
sys/dev/irdma/irdma_ctrl.c
203
irdma_qp_rem_qos(struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_ctrl.c
205
struct irdma_sc_vsi *vsi = qp->vsi;
sys/dev/irdma/irdma_ctrl.c
207
irdma_debug(qp->dev, IRDMA_DEBUG_DCB,
sys/dev/irdma/irdma_ctrl.c
209
qp->qp_uk.qp_id, qp->user_pri, qp->qs_handle,
sys/dev/irdma/irdma_ctrl.c
210
qp->on_qoslist);
sys/dev/irdma/irdma_ctrl.c
211
mutex_lock(&vsi->qos[qp->user_pri].qos_mutex);
sys/dev/irdma/irdma_ctrl.c
212
if (qp->on_qoslist) {
sys/dev/irdma/irdma_ctrl.c
213
qp->on_qoslist = false;
sys/dev/irdma/irdma_ctrl.c
214
list_del(&qp->list);
sys/dev/irdma/irdma_ctrl.c
216
mutex_unlock(&vsi->qos[qp->user_pri].qos_mutex);
sys/dev/irdma/irdma_ctrl.c
2226
irdma_sc_qp_flush_wqes(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_ctrl.c
2236
if (info->rq && !qp->flush_rq)
sys/dev/irdma/irdma_ctrl.c
2238
if (info->sq && !qp->flush_sq)
sys/dev/irdma/irdma_ctrl.c
224
irdma_qp_add_qos(struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_ctrl.c
2240
qp->flush_sq |= flush_sq;
sys/dev/irdma/irdma_ctrl.c
2241
qp->flush_rq |= flush_rq;
sys/dev/irdma/irdma_ctrl.c
2244
irdma_debug(qp->dev, IRDMA_DEBUG_CQP,
sys/dev/irdma/irdma_ctrl.c
2246
qp->qp_uk.qp_id);
sys/dev/irdma/irdma_ctrl.c
2250
cqp = qp->pd->dev->cqp;
sys/dev/irdma/irdma_ctrl.c
226
struct irdma_sc_vsi *vsi = qp->vsi;
sys/dev/irdma/irdma_ctrl.c
2273
hdr = qp->qp_uk.qp_id |
sys/dev/irdma/irdma_ctrl.c
228
mutex_lock(&vsi->qos[qp->user_pri].qos_mutex);
sys/dev/irdma/irdma_ctrl.c
229
if (!qp->on_qoslist) {
sys/dev/irdma/irdma_ctrl.c
230
list_add(&qp->list, &vsi->qos[qp->user_pri].qplist);
sys/dev/irdma/irdma_ctrl.c
2300
irdma_sc_gen_ae(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_ctrl.c
2309
cqp = qp->pd->dev->cqp;
sys/dev/irdma/irdma_ctrl.c
231
qp->on_qoslist = true;
sys/dev/irdma/irdma_ctrl.c
2318
hdr = qp->qp_uk.qp_id | FIELD_PREP(IRDMA_CQPSQ_OPCODE,
sys/dev/irdma/irdma_ctrl.c
232
qp->qs_handle = irdma_get_qp_qs(qp);
sys/dev/irdma/irdma_ctrl.c
233
irdma_debug(qp->dev, IRDMA_DEBUG_DCB,
sys/dev/irdma/irdma_ctrl.c
235
qp->qp_uk.qp_id, qp->user_pri, qp->qs_handle,
sys/dev/irdma/irdma_ctrl.c
236
qp->on_qoslist);
sys/dev/irdma/irdma_ctrl.c
239
mutex_unlock(&vsi->qos[qp->user_pri].qos_mutex);
sys/dev/irdma/irdma_ctrl.c
2422
irdma_sc_suspend_qp(struct irdma_sc_cqp *cqp, struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_ctrl.c
2432
hdr = FIELD_PREP(IRDMA_CQPSQ_SUSPENDQP_QPID, qp->qp_uk.qp_id) |
sys/dev/irdma/irdma_ctrl.c
2453
irdma_sc_resume_qp(struct irdma_sc_cqp *cqp, struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_ctrl.c
2464
FIELD_PREP(IRDMA_CQPSQ_RESUMEQP_QSHANDLE, qp->qs_handle));
sys/dev/irdma/irdma_ctrl.c
2466
hdr = FIELD_PREP(IRDMA_CQPSQ_RESUMEQP_QPID, qp->qp_uk.qp_id) |
sys/dev/irdma/irdma_ctrl.c
4149
info->qp = true;
sys/dev/irdma/irdma_ctrl.c
4169
info->qp = true;
sys/dev/irdma/irdma_ctrl.c
4186
info->qp = true;
sys/dev/irdma/irdma_ctrl.c
4200
info->qp = true;
sys/dev/irdma/irdma_ctrl.c
4205
info->qp = true;
sys/dev/irdma/irdma_ctrl.c
4210
info->qp = true;
sys/dev/irdma/irdma_ctrl.c
4216
info->qp = true;
sys/dev/irdma/irdma_ctrl.c
464
irdma_sc_qp_init(struct irdma_sc_qp *qp, struct irdma_qp_init_info *info)
sys/dev/irdma/irdma_ctrl.c
476
qp->dev = info->pd->dev;
sys/dev/irdma/irdma_ctrl.c
477
qp->vsi = info->vsi;
sys/dev/irdma/irdma_ctrl.c
478
qp->ieq_qp = info->vsi->exception_lan_q;
sys/dev/irdma/irdma_ctrl.c
479
qp->sq_pa = info->sq_pa;
sys/dev/irdma/irdma_ctrl.c
480
qp->rq_pa = info->rq_pa;
sys/dev/irdma/irdma_ctrl.c
481
qp->hw_host_ctx_pa = info->host_ctx_pa;
sys/dev/irdma/irdma_ctrl.c
482
qp->q2_pa = info->q2_pa;
sys/dev/irdma/irdma_ctrl.c
483
qp->shadow_area_pa = info->shadow_area_pa;
sys/dev/irdma/irdma_ctrl.c
484
qp->q2_buf = info->q2;
sys/dev/irdma/irdma_ctrl.c
485
qp->pd = info->pd;
sys/dev/irdma/irdma_ctrl.c
486
qp->hw_host_ctx = info->host_ctx;
sys/dev/irdma/irdma_ctrl.c
487
info->qp_uk_init_info.wqe_alloc_db = qp->pd->dev->wqe_alloc_db;
sys/dev/irdma/irdma_ctrl.c
488
ret_code = irdma_uk_qp_init(&qp->qp_uk, &info->qp_uk_init_info);
sys/dev/irdma/irdma_ctrl.c
492
qp->virtual_map = info->virtual_map;
sys/dev/irdma/irdma_ctrl.c
499
qp->llp_stream_handle = (void *)(-1);
sys/dev/irdma/irdma_ctrl.c
500
qp->hw_sq_size = irdma_get_encoded_wqe_size(qp->qp_uk.sq_ring.size,
sys/dev/irdma/irdma_ctrl.c
502
irdma_debug(qp->dev, IRDMA_DEBUG_WQE,
sys/dev/irdma/irdma_ctrl.c
503
"hw_sq_size[%04d] sq_ring.size[%04d]\n", qp->hw_sq_size,
sys/dev/irdma/irdma_ctrl.c
504
qp->qp_uk.sq_ring.size);
sys/dev/irdma/irdma_ctrl.c
505
if (qp->qp_uk.uk_attrs->hw_rev == IRDMA_GEN_1)
sys/dev/irdma/irdma_ctrl.c
508
ret_code = irdma_fragcnt_to_wqesize_rq(qp->qp_uk.max_rq_frag_cnt,
sys/dev/irdma/irdma_ctrl.c
5129
status = irdma_sc_qp_flush_wqes(pcmdinfo->in.u.qp_flush_wqes.qp,
sys/dev/irdma/irdma_ctrl.c
513
qp->hw_rq_size =
sys/dev/irdma/irdma_ctrl.c
5135
status = irdma_sc_gen_ae(pcmdinfo->in.u.gen_ae.qp,
sys/dev/irdma/irdma_ctrl.c
514
irdma_get_encoded_wqe_size(qp->qp_uk.rq_size *
sys/dev/irdma/irdma_ctrl.c
5161
pcmdinfo->in.u.suspend_resume.qp,
sys/dev/irdma/irdma_ctrl.c
5166
pcmdinfo->in.u.suspend_resume.qp,
sys/dev/irdma/irdma_ctrl.c
517
irdma_debug(qp->dev, IRDMA_DEBUG_WQE,
sys/dev/irdma/irdma_ctrl.c
519
qp->hw_rq_size, qp->qp_uk.rq_size, wqe_size);
sys/dev/irdma/irdma_ctrl.c
521
qp->sq_tph_val = info->sq_tph_val;
sys/dev/irdma/irdma_ctrl.c
522
qp->rq_tph_val = info->rq_tph_val;
sys/dev/irdma/irdma_ctrl.c
523
qp->sq_tph_en = info->sq_tph_en;
sys/dev/irdma/irdma_ctrl.c
5239
status = irdma_sc_qp_modify(pcmdinfo->in.u.qp_modify.qp,
sys/dev/irdma/irdma_ctrl.c
524
qp->rq_tph_en = info->rq_tph_en;
sys/dev/irdma/irdma_ctrl.c
5245
status = irdma_sc_qp_create(pcmdinfo->in.u.qp_create.qp,
sys/dev/irdma/irdma_ctrl.c
525
qp->rcv_tph_en = info->rcv_tph_en;
sys/dev/irdma/irdma_ctrl.c
5251
status = irdma_sc_qp_destroy(pcmdinfo->in.u.qp_destroy.qp,
sys/dev/irdma/irdma_ctrl.c
526
qp->xmit_tph_en = info->xmit_tph_en;
sys/dev/irdma/irdma_ctrl.c
527
qp->qp_uk.first_sq_wq = info->qp_uk_init_info.first_sq_wq;
sys/dev/irdma/irdma_ctrl.c
540
irdma_sc_qp_create(struct irdma_sc_qp *qp, struct irdma_create_qp_info *info,
sys/dev/irdma/irdma_ctrl.c
547
cqp = qp->dev->cqp;
sys/dev/irdma/irdma_ctrl.c
548
if (qp->qp_uk.qp_id < cqp->dev->hw_attrs.min_hw_qp_id ||
sys/dev/irdma/irdma_ctrl.c
549
qp->qp_uk.qp_id > (cqp->dev->hmc_info->hmc_obj[IRDMA_HMC_IW_QP].max_cnt - 1))
sys/dev/irdma/irdma_ctrl.c
556
set_64bit_val(wqe, IRDMA_BYTE_16, qp->hw_host_ctx_pa);
sys/dev/irdma/irdma_ctrl.c
557
set_64bit_val(wqe, IRDMA_BYTE_40, qp->shadow_area_pa);
sys/dev/irdma/irdma_ctrl.c
559
hdr = qp->qp_uk.qp_id |
sys/dev/irdma/irdma_ctrl.c
564
FIELD_PREP(IRDMA_CQPSQ_QP_QPTYPE, qp->qp_uk.qp_type) |
sys/dev/irdma/irdma_ctrl.c
565
FIELD_PREP(IRDMA_CQPSQ_QP_VQ, qp->virtual_map) |
sys/dev/irdma/irdma_ctrl.c
593
irdma_sc_qp_modify(struct irdma_sc_qp *qp, struct irdma_modify_qp_info *info,
sys/dev/irdma/irdma_ctrl.c
602
cqp = qp->dev->cqp;
sys/dev/irdma/irdma_ctrl.c
620
set_64bit_val(wqe, IRDMA_BYTE_16, qp->hw_host_ctx_pa);
sys/dev/irdma/irdma_ctrl.c
621
set_64bit_val(wqe, IRDMA_BYTE_40, qp->shadow_area_pa);
sys/dev/irdma/irdma_ctrl.c
623
hdr = qp->qp_uk.qp_id |
sys/dev/irdma/irdma_ctrl.c
629
FIELD_PREP(IRDMA_CQPSQ_QP_VQ, qp->virtual_map) |
sys/dev/irdma/irdma_ctrl.c
63
struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_ctrl.c
633
FIELD_PREP(IRDMA_CQPSQ_QP_QPTYPE, qp->qp_uk.qp_type) |
sys/dev/irdma/irdma_ctrl.c
665
irdma_sc_qp_destroy(struct irdma_sc_qp *qp, u64 scratch,
sys/dev/irdma/irdma_ctrl.c
672
cqp = qp->dev->cqp;
sys/dev/irdma/irdma_ctrl.c
677
set_64bit_val(wqe, IRDMA_BYTE_16, qp->hw_host_ctx_pa);
sys/dev/irdma/irdma_ctrl.c
678
set_64bit_val(wqe, IRDMA_BYTE_40, qp->shadow_area_pa);
sys/dev/irdma/irdma_ctrl.c
680
hdr = qp->qp_uk.qp_id |
sys/dev/irdma/irdma_ctrl.c
682
FIELD_PREP(IRDMA_CQPSQ_QP_QPTYPE, qp->qp_uk.qp_type) |
sys/dev/irdma/irdma_ctrl.c
71
if (!qp) {
sys/dev/irdma/irdma_ctrl.c
733
irdma_sc_qp_setctx_roce(struct irdma_sc_qp *qp, __le64 * qp_ctx,
sys/dev/irdma/irdma_ctrl.c
74
lastentry = &qp->list;
sys/dev/irdma/irdma_ctrl.c
744
qp->user_pri = info->user_pri;
sys/dev/irdma/irdma_ctrl.c
745
if (qp->push_idx == IRDMA_INVALID_PUSH_PAGE_INDEX) {
sys/dev/irdma/irdma_ctrl.c
750
push_idx = qp->push_idx;
sys/dev/irdma/irdma_ctrl.c
753
FIELD_PREP(IRDMAQPC_RQWQESIZE, qp->qp_uk.rq_wqe_size) |
sys/dev/irdma/irdma_ctrl.c
754
FIELD_PREP(IRDMAQPC_RCVTPHEN, qp->rcv_tph_en) |
sys/dev/irdma/irdma_ctrl.c
755
FIELD_PREP(IRDMAQPC_XMITTPHEN, qp->xmit_tph_en) |
sys/dev/irdma/irdma_ctrl.c
756
FIELD_PREP(IRDMAQPC_RQTPHEN, qp->rq_tph_en) |
sys/dev/irdma/irdma_ctrl.c
757
FIELD_PREP(IRDMAQPC_SQTPHEN, qp->sq_tph_en) |
sys/dev/irdma/irdma_ctrl.c
767
set_64bit_val(qp_ctx, IRDMA_BYTE_8, qp->sq_pa);
sys/dev/irdma/irdma_ctrl.c
768
set_64bit_val(qp_ctx, IRDMA_BYTE_16, qp->rq_pa);
sys/dev/irdma/irdma_ctrl.c
775
FIELD_PREP(IRDMAQPC_RQSIZE, qp->hw_rq_size) |
sys/dev/irdma/irdma_ctrl.c
776
FIELD_PREP(IRDMAQPC_SQSIZE, qp->hw_sq_size) |
sys/dev/irdma/irdma_ctrl.c
837
FIELD_PREP(IRDMAQPC_SQTPHVAL, qp->sq_tph_val) |
sys/dev/irdma/irdma_ctrl.c
838
FIELD_PREP(IRDMAQPC_RQTPHVAL, qp->rq_tph_val) |
sys/dev/irdma/irdma_ctrl.c
839
FIELD_PREP(IRDMAQPC_QSHANDLE, qp->qs_handle));
sys/dev/irdma/irdma_ctrl.c
852
irdma_debug_buf(qp->dev, IRDMA_DEBUG_WQE, "QP_HOST CTX WQE", qp_ctx,
sys/dev/irdma/irdma_ctrl.c
90
static u16 irdma_get_qp_qs(struct irdma_sc_qp *qp){
sys/dev/irdma/irdma_ctrl.c
92
struct irdma_sc_vsi *vsi = qp->vsi;
sys/dev/irdma/irdma_ctrl.c
96
vsi->qos[qp->user_pri].qs_handle;
sys/dev/irdma/irdma_ctrl.c
970
irdma_sc_qp_setctx(struct irdma_sc_qp *qp, __le64 * qp_ctx,
sys/dev/irdma/irdma_ctrl.c
983
dev = qp->dev;
sys/dev/irdma/irdma_ctrl.c
985
qp->pfpdu.marker_len = 4;
sys/dev/irdma/irdma_ctrl.c
986
qp->pfpdu.rcv_start_seq = tcp->rcv_nxt;
sys/dev/irdma/irdma_ctrl.c
988
qp->user_pri = info->user_pri;
sys/dev/irdma/irdma_ctrl.c
989
if (qp->push_idx == IRDMA_INVALID_PUSH_PAGE_INDEX) {
sys/dev/irdma/irdma_ctrl.c
994
push_idx = qp->push_idx;
sys/dev/irdma/irdma_ctrl.c
996
qw0 = FIELD_PREP(IRDMAQPC_RQWQESIZE, qp->qp_uk.rq_wqe_size) |
sys/dev/irdma/irdma_ctrl.c
997
FIELD_PREP(IRDMAQPC_RCVTPHEN, qp->rcv_tph_en) |
sys/dev/irdma/irdma_ctrl.c
998
FIELD_PREP(IRDMAQPC_XMITTPHEN, qp->xmit_tph_en) |
sys/dev/irdma/irdma_ctrl.c
999
FIELD_PREP(IRDMAQPC_RQTPHEN, qp->rq_tph_en) |
sys/dev/irdma/irdma_hw.c
171
irdma_set_flush_fields(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_hw.c
176
qp->sq_flush_code = info->sq;
sys/dev/irdma/irdma_hw.c
177
qp->rq_flush_code = info->rq;
sys/dev/irdma/irdma_hw.c
1774
struct irdma_sc_qp qp = {{0}};
sys/dev/irdma/irdma_hw.c
1789
qp.dev = &iwdev->rf->sc_dev;
sys/dev/irdma/irdma_hw.c
1790
qp.qp_uk.qp_id = IRDMA_REM_ENDPOINT_TRK_QPID;
sys/dev/irdma/irdma_hw.c
1791
qp.qp_uk.qp_type = IRDMA_QP_TYPE_IWARP;
sys/dev/irdma/irdma_hw.c
1792
irdma_cqp_qp_destroy_cmd(qp.dev, &qp);
sys/dev/irdma/irdma_hw.c
180
qp->flush_code = qp_err.flush_code;
sys/dev/irdma/irdma_hw.c
181
qp->event_type = qp_err.event_type;
sys/dev/irdma/irdma_hw.c
1934
struct irdma_sc_qp qp = {{0}};
sys/dev/irdma/irdma_hw.c
1977
qp.dev = dev;
sys/dev/irdma/irdma_hw.c
1978
qp.qp_uk.qp_id = IRDMA_REM_ENDPOINT_TRK_QPID;
sys/dev/irdma/irdma_hw.c
1979
qp.qp_uk.qp_type = IRDMA_QP_TYPE_IWARP;
sys/dev/irdma/irdma_hw.c
1980
status = irdma_cqp_qp_create_cmd(dev, &qp);
sys/dev/irdma/irdma_hw.c
221
struct irdma_sc_qp *qp = NULL;
sys/dev/irdma/irdma_hw.c
249
info->qp, info->qp_cq_id, info->tcp_state,
sys/dev/irdma/irdma_hw.c
252
if (info->qp) {
sys/dev/irdma/irdma_hw.c
275
qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_hw.c
2808
irdma_hw_flush_wqes(struct irdma_pci_f *rf, struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_hw.c
2815
struct irdma_qp *iwqp = qp->qp_uk.back_qp;
sys/dev/irdma/irdma_hw.c
2826
cqp_info->in.u.qp_flush_wqes.qp = qp;
sys/dev/irdma/irdma_hw.c
2830
qp->qp_uk.sq_flush_complete = true;
sys/dev/irdma/irdma_hw.c
2831
qp->qp_uk.rq_flush_complete = true;
sys/dev/irdma/irdma_hw.c
2843
qp->qp_uk.rq_flush_complete = true;
sys/dev/irdma/irdma_hw.c
2850
qp->qp_uk.sq_flush_complete = true;
sys/dev/irdma/irdma_hw.c
2874
irdma_gen_ae(struct irdma_pci_f *rf, struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_hw.c
2890
cqp_info->in.u.gen_ae.qp = qp;
sys/dev/irdma/irdma_hw.c
305
if (qp->term_flags)
sys/dev/irdma/irdma_hw.c
322
if (qp->term_flags)
sys/dev/irdma/irdma_hw.c
323
irdma_terminate_done(qp, 0);
sys/dev/irdma/irdma_hw.c
349
irdma_terminate_send_fin(qp);
sys/dev/irdma/irdma_hw.c
352
irdma_terminate_received(qp, info);
sys/dev/irdma/irdma_hw.c
422
irdma_set_flush_fields(qp, info);
sys/dev/irdma/irdma_hw.c
439
irdma_terminate_connection(qp, info);
sys/dev/irdma/irdma_hw.c
443
if (info->qp)
sys/dev/irdma/irdma_kcompat.c
721
struct irdma_sc_qp *qp;
sys/dev/irdma/irdma_kcompat.c
756
qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_kcompat.c
757
qp->qp_uk.back_qp = iwqp;
sys/dev/irdma/irdma_kcompat.c
758
qp->qp_uk.lock = &iwqp->lock;
sys/dev/irdma/irdma_kcompat.c
759
qp->push_idx = IRDMA_INVALID_PUSH_PAGE_INDEX;
sys/dev/irdma/irdma_kcompat.c
790
qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_kcompat.c
801
iwqp->ctx_info.qp_compl_ctx = (uintptr_t)qp;
sys/dev/irdma/irdma_kcompat.c
838
ret = irdma_sc_qp_init(qp, &init_info);
sys/dev/irdma/irdma_kcompat.c
886
if (qp->qp_uk.start_wqe_idx) {
sys/dev/irdma/irdma_kcompat.c
888
uresp.start_wqe_idx = qp->qp_uk.start_wqe_idx;
sys/dev/irdma/irdma_kcompat.c
895
uresp.qp_caps = qp->qp_uk.qp_caps;
sys/dev/irdma/irdma_main.h
556
void irdma_cm_disconn(struct irdma_qp *qp);
sys/dev/irdma/irdma_main.h
576
int irdma_qp_suspend_resume(struct irdma_sc_qp *qp, bool suspend);
sys/dev/irdma/irdma_main.h
594
int irdma_hw_flush_wqes(struct irdma_pci_f *rf, struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_main.h
596
void irdma_gen_ae(struct irdma_pci_f *rf, struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_protos.h
50
int irdma_sc_mr_fast_register(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_protos.h
85
int irdma_cqp_qp_suspend_resume(struct irdma_sc_qp *qp, u8 cmd);
sys/dev/irdma/irdma_protos.h
86
void irdma_qp_add_qos(struct irdma_sc_qp *qp);
sys/dev/irdma/irdma_protos.h
87
void irdma_qp_rem_qos(struct irdma_sc_qp *qp);
sys/dev/irdma/irdma_protos.h
89
struct irdma_sc_qp *qp);
sys/dev/irdma/irdma_protos.h
94
void irdma_terminate_send_fin(struct irdma_sc_qp *qp);
sys/dev/irdma/irdma_protos.h
96
void irdma_terminate_connection(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_protos.h
99
void irdma_terminate_received(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_puda.c
122
struct irdma_sc_qp *qp = &rsrc->qp;
sys/dev/irdma/irdma_puda.c
1235
irdma_ilq_putback_rcvbuf(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_puda.c
1242
dma_sync_single_for_device(hw_to_dev(qp->dev->hw), buf->mem.pa, buf->mem.size, DMA_BIDIRECTIONAL);
sys/dev/irdma/irdma_puda.c
1243
wqe = qp->qp_uk.rq_base[wqe_idx].elem;
sys/dev/irdma/irdma_puda.c
1245
if (qp->dev->hw_attrs.uk_attrs.hw_rev >= IRDMA_GEN_2) {
sys/dev/irdma/irdma_puda.c
127
qp->qp_uk.rq_wrid_array[wqe_idx] = (uintptr_t)buf;
sys/dev/irdma/irdma_puda.c
128
wqe = qp->qp_uk.rq_base[wqe_idx].elem;
sys/dev/irdma/irdma_puda.c
136
if (qp->qp_uk.uk_attrs->hw_rev == IRDMA_GEN_1) {
sys/dev/irdma/irdma_puda.c
1656
irdma_ieq_process_fpdus(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_puda.c
1659
struct irdma_pfpdu *pfpdu = &qp->pfpdu;
sys/dev/irdma/irdma_puda.c
1689
irdma_ieq_mpa_crc_ae(ieq->dev, qp);
sys/dev/irdma/irdma_puda.c
1700
irdma_ieq_create_ah(struct irdma_sc_qp *qp, struct irdma_puda_buf *buf)
sys/dev/irdma/irdma_puda.c
1704
qp->pfpdu.ah_buf = buf;
sys/dev/irdma/irdma_puda.c
1705
irdma_puda_ieq_get_ah_info(qp, &ah_info);
sys/dev/irdma/irdma_puda.c
1706
return irdma_puda_create_ah(qp->vsi->dev, &ah_info, false,
sys/dev/irdma/irdma_puda.c
1707
IRDMA_PUDA_RSRC_TYPE_IEQ, qp,
sys/dev/irdma/irdma_puda.c
1708
&qp->pfpdu.ah);
sys/dev/irdma/irdma_puda.c
1719
struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_puda.c
1722
struct irdma_pfpdu *pfpdu = &qp->pfpdu;
sys/dev/irdma/irdma_puda.c
1723
u32 *hw_host_ctx = (u32 *)qp->hw_host_ctx;
sys/dev/irdma/irdma_puda.c
1727
u32 fps = *(u32 *)(qp->q2_buf + Q2_FPSN_OFFSET);
sys/dev/irdma/irdma_puda.c
1732
u8 hw_rev = qp->dev->hw_attrs.uk_attrs.hw_rev;
sys/dev/irdma/irdma_puda.c
1745
irdma_ieq_cleanup_qp(ieq, qp);
sys/dev/irdma/irdma_puda.c
1753
(u64 *)qp->q2_buf, 128);
sys/dev/irdma/irdma_puda.c
1791
irdma_ieq_create_ah(qp, buf);
sys/dev/irdma/irdma_puda.c
1797
irdma_ieq_process_fpdus(qp, ieq);
sys/dev/irdma/irdma_puda.c
1799
irdma_ieq_process_fpdus(qp, ieq);
sys/dev/irdma/irdma_puda.c
1820
struct irdma_sc_qp *qp = NULL;
sys/dev/irdma/irdma_puda.c
1823
qp = irdma_ieq_get_qp(vsi->dev, buf);
sys/dev/irdma/irdma_puda.c
1824
if (!qp) {
sys/dev/irdma/irdma_puda.c
1828
irdma_ieq_handle_exception(ieq, qp, buf);
sys/dev/irdma/irdma_puda.c
1858
irdma_ieq_cleanup_qp(struct irdma_puda_rsrc *ieq, struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_puda.c
1861
struct irdma_pfpdu *pfpdu = &qp->pfpdu;
sys/dev/irdma/irdma_puda.c
1864
if (qp->pfpdu.ah) {
sys/dev/irdma/irdma_puda.c
1865
irdma_puda_free_ah(ieq->dev, qp->pfpdu.ah);
sys/dev/irdma/irdma_puda.c
1866
qp->pfpdu.ah = NULL;
sys/dev/irdma/irdma_puda.c
1867
qp->pfpdu.ah_buf = NULL;
sys/dev/irdma/irdma_puda.c
231
static __le64 * irdma_puda_get_next_send_wqe(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_puda.c
235
*wqe_idx = IRDMA_RING_CURRENT_HEAD(qp->sq_ring);
sys/dev/irdma/irdma_puda.c
237
qp->swqe_polarity = !qp->swqe_polarity;
sys/dev/irdma/irdma_puda.c
238
IRDMA_RING_MOVE_HEAD(qp->sq_ring, ret_code);
sys/dev/irdma/irdma_puda.c
242
return qp->sq_base[*wqe_idx].elem;
sys/dev/irdma/irdma_puda.c
322
info->qp = (struct irdma_qp_uk *)(irdma_uintptr) comp_ctx;
sys/dev/irdma/irdma_puda.c
366
struct irdma_qp_uk *qp;
sys/dev/irdma/irdma_puda.c
390
qp = info.qp;
sys/dev/irdma/irdma_puda.c
391
if (!qp || !rsrc) {
sys/dev/irdma/irdma_puda.c
396
if (qp->qp_id != rsrc->qp_id) {
sys/dev/irdma/irdma_puda.c
403
qp->rq_wrid_array[info.wqe_idx];
sys/dev/irdma/irdma_puda.c
412
irdma_ilq_putback_rcvbuf(&rsrc->qp, buf,
sys/dev/irdma/irdma_puda.c
426
irdma_ilq_putback_rcvbuf(&rsrc->qp, buf, info.wqe_idx);
sys/dev/irdma/irdma_puda.c
433
qp->sq_wrtrk_array[info.wqe_idx].wrid;
sys/dev/irdma/irdma_puda.c
437
IRDMA_RING_SET_TAIL(qp->sq_ring, info.wqe_idx);
sys/dev/irdma/irdma_puda.c
465
irdma_puda_send(struct irdma_sc_qp *qp, struct irdma_puda_send_info *info)
sys/dev/irdma/irdma_puda.c
48
irdma_ilq_putback_rcvbuf(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_puda.c
483
wqe = irdma_puda_get_next_send_wqe(&qp->qp_uk, &wqe_idx);
sys/dev/irdma/irdma_puda.c
487
qp->qp_uk.sq_wrtrk_array[wqe_idx].wrid = (uintptr_t)info->scratch;
sys/dev/irdma/irdma_puda.c
491
if (qp->dev->hw_attrs.uk_attrs.hw_rev >= IRDMA_GEN_2) {
sys/dev/irdma/irdma_puda.c
498
qp->qp_uk.swqe_polarity);
sys/dev/irdma/irdma_puda.c
505
FIELD_PREP(IRDMA_UDA_QPSQ_VALID, qp->qp_uk.swqe_polarity));
sys/dev/irdma/irdma_puda.c
516
FIELD_PREP(IRDMA_UDA_QPSQ_VALID, qp->qp_uk.swqe_polarity);
sys/dev/irdma/irdma_puda.c
530
irdma_debug_buf(qp->dev, IRDMA_DEBUG_PUDA, "PUDA SEND WQE", wqe, 32);
sys/dev/irdma/irdma_puda.c
531
irdma_uk_qp_post_wr(&qp->qp_uk);
sys/dev/irdma/irdma_puda.c
597
ret = irdma_puda_send(&rsrc->qp, &info);
sys/dev/irdma/irdma_puda.c
620
struct irdma_sc_qp *qp = &rsrc->qp;
sys/dev/irdma/irdma_puda.c
621
__le64 *qp_ctx = qp->hw_host_ctx;
sys/dev/irdma/irdma_puda.c
623
set_64bit_val(qp_ctx, IRDMA_BYTE_8, qp->sq_pa);
sys/dev/irdma/irdma_puda.c
624
set_64bit_val(qp_ctx, IRDMA_BYTE_16, qp->rq_pa);
sys/dev/irdma/irdma_puda.c
626
FIELD_PREP(IRDMAQPC_RQSIZE, qp->hw_rq_size) |
sys/dev/irdma/irdma_puda.c
627
FIELD_PREP(IRDMAQPC_SQSIZE, qp->hw_sq_size));
sys/dev/irdma/irdma_puda.c
631
if (qp->dev->hw_attrs.uk_attrs.hw_rev == IRDMA_GEN_1)
sys/dev/irdma/irdma_puda.c
642
FIELD_PREP(IRDMAQPC_QPCOMPCTX, (uintptr_t)qp));
sys/dev/irdma/irdma_puda.c
644
FIELD_PREP(IRDMAQPC_SQTPHVAL, qp->sq_tph_val) |
sys/dev/irdma/irdma_puda.c
645
FIELD_PREP(IRDMAQPC_RQTPHVAL, qp->rq_tph_val) |
sys/dev/irdma/irdma_puda.c
646
FIELD_PREP(IRDMAQPC_QSHANDLE, qp->qs_handle));
sys/dev/irdma/irdma_puda.c
658
irdma_puda_qp_wqe(struct irdma_sc_dev *dev, struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_puda.c
671
set_64bit_val(wqe, IRDMA_BYTE_16, qp->hw_host_ctx_pa);
sys/dev/irdma/irdma_puda.c
672
set_64bit_val(wqe, IRDMA_BYTE_40, qp->shadow_area_pa);
sys/dev/irdma/irdma_puda.c
674
hdr = qp->qp_uk.qp_id |
sys/dev/irdma/irdma_puda.c
699
struct irdma_sc_qp *qp = &rsrc->qp;
sys/dev/irdma/irdma_puda.c
700
struct irdma_qp_uk *ukqp = &qp->qp_uk;
sys/dev/irdma/irdma_puda.c
716
qp->hw_sq_size = irdma_get_encoded_wqe_size(rsrc->sq_size, IRDMA_QUEUE_TYPE_SQ_RQ);
sys/dev/irdma/irdma_puda.c
717
qp->hw_rq_size = irdma_get_encoded_wqe_size(rsrc->rq_size, IRDMA_QUEUE_TYPE_SQ_RQ);
sys/dev/irdma/irdma_puda.c
718
qp->pd = &rsrc->sc_pd;
sys/dev/irdma/irdma_puda.c
719
qp->qp_uk.qp_type = IRDMA_QP_TYPE_UDA;
sys/dev/irdma/irdma_puda.c
720
qp->dev = rsrc->dev;
sys/dev/irdma/irdma_puda.c
721
qp->qp_uk.back_qp = rsrc;
sys/dev/irdma/irdma_puda.c
722
qp->sq_pa = mem->pa;
sys/dev/irdma/irdma_puda.c
723
qp->rq_pa = qp->sq_pa + sq_size;
sys/dev/irdma/irdma_puda.c
724
qp->vsi = rsrc->vsi;
sys/dev/irdma/irdma_puda.c
728
ukqp->uk_attrs = &qp->dev->hw_attrs.uk_attrs;
sys/dev/irdma/irdma_puda.c
729
qp->shadow_area_pa = qp->rq_pa + rq_size;
sys/dev/irdma/irdma_puda.c
730
qp->hw_host_ctx = ukqp->shadow_area + IRDMA_SHADOW_AREA_SIZE;
sys/dev/irdma/irdma_puda.c
731
qp->hw_host_ctx_pa = qp->shadow_area_pa + (IRDMA_SHADOW_AREA_SIZE << 3);
sys/dev/irdma/irdma_puda.c
732
qp->push_idx = IRDMA_INVALID_PUSH_PAGE_INDEX;
sys/dev/irdma/irdma_puda.c
742
ukqp->wqe_alloc_db = qp->pd->dev->wqe_alloc_db;
sys/dev/irdma/irdma_puda.c
744
ret = rsrc->dev->ws_add(qp->vsi, qp->user_pri);
sys/dev/irdma/irdma_puda.c
750
irdma_qp_add_qos(qp);
sys/dev/irdma/irdma_puda.c
753
qp->qp_state = IRDMA_QP_STATE_RTS;
sys/dev/irdma/irdma_puda.c
756
ret = irdma_cqp_qp_create_cmd(rsrc->dev, qp);
sys/dev/irdma/irdma_puda.c
758
ret = irdma_puda_qp_wqe(rsrc->dev, qp);
sys/dev/irdma/irdma_puda.c
760
qp->qp_state = IRDMA_QP_STATE_INVALID;
sys/dev/irdma/irdma_puda.c
761
irdma_qp_rem_qos(qp);
sys/dev/irdma/irdma_puda.c
762
rsrc->dev->ws_remove(qp->vsi, qp->user_pri);
sys/dev/irdma/irdma_puda.c
889
irdma_cqp_qp_destroy_cmd(dev, &rsrc->qp);
sys/dev/irdma/irdma_puda.c
890
rsrc->dev->ws_remove(rsrc->qp.vsi, rsrc->qp.user_pri);
sys/dev/irdma/irdma_puda.c
894
ret = irdma_sc_qp_destroy(&rsrc->qp, 0, false, true, true);
sys/dev/irdma/irdma_puda.c
906
rsrc->dev->ws_remove(rsrc->qp.vsi, rsrc->qp.user_pri);
sys/dev/irdma/irdma_puda.c
983
rsrc->qp.qp_state = IRDMA_QP_STATE_INVALID;
sys/dev/irdma/irdma_puda.c
984
irdma_qp_rem_qos(&rsrc->qp);
sys/dev/irdma/irdma_puda.h
137
struct irdma_sc_qp qp;
sys/dev/irdma/irdma_puda.h
191
int irdma_puda_send(struct irdma_sc_qp *qp, struct irdma_puda_send_info *info);
sys/dev/irdma/irdma_puda.h
205
void irdma_ieq_mpa_crc_ae(struct irdma_sc_dev *dev, struct irdma_sc_qp *qp);
sys/dev/irdma/irdma_puda.h
208
int irdma_cqp_qp_create_cmd(struct irdma_sc_dev *dev, struct irdma_sc_qp *qp);
sys/dev/irdma/irdma_puda.h
210
int irdma_cqp_qp_destroy_cmd(struct irdma_sc_dev *dev, struct irdma_sc_qp *qp);
sys/dev/irdma/irdma_puda.h
212
void irdma_puda_ieq_get_ah_info(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_puda.h
219
void irdma_ieq_process_fpdus(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_puda.h
221
void irdma_ieq_cleanup_qp(struct irdma_puda_rsrc *ieq, struct irdma_sc_qp *qp);
sys/dev/irdma/irdma_puda.h
62
struct irdma_qp_uk *qp;
sys/dev/irdma/irdma_type.h
1235
int irdma_sc_qp_create(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_type.h
1238
int irdma_sc_qp_destroy(struct irdma_sc_qp *qp, u64 scratch,
sys/dev/irdma/irdma_type.h
1240
int irdma_sc_qp_flush_wqes(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_type.h
1243
int irdma_sc_qp_init(struct irdma_sc_qp *qp, struct irdma_qp_init_info *info);
sys/dev/irdma/irdma_type.h
1244
int irdma_sc_qp_modify(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_type.h
1247
void irdma_sc_send_lsmm(struct irdma_sc_qp *qp, void *lsmm_buf, u32 size,
sys/dev/irdma/irdma_type.h
1249
void irdma_sc_send_rtt(struct irdma_sc_qp *qp, bool read);
sys/dev/irdma/irdma_type.h
1250
void irdma_sc_qp_setctx(struct irdma_sc_qp *qp, __le64 *qp_ctx,
sys/dev/irdma/irdma_type.h
1252
void irdma_sc_qp_setctx_roce(struct irdma_sc_qp *qp, __le64 *qp_ctx,
sys/dev/irdma/irdma_type.h
1266
struct irdma_sc_qp *qp;
sys/dev/irdma/irdma_type.h
1272
struct irdma_sc_qp *qp;
sys/dev/irdma/irdma_type.h
1278
struct irdma_sc_qp *qp;
sys/dev/irdma/irdma_type.h
1394
struct irdma_sc_qp *qp;
sys/dev/irdma/irdma_type.h
1400
struct irdma_sc_qp *qp;
sys/dev/irdma/irdma_type.h
1441
struct irdma_sc_qp *qp;
sys/dev/irdma/irdma_type.h
984
bool qp:1;
sys/dev/irdma/irdma_uk.c
1001
qp->wqe_ops.iw_set_fragment(wqe, byte_off, NULL,
sys/dev/irdma/irdma_uk.c
1002
qp->rwqe_polarity);
sys/dev/irdma/irdma_uk.c
1003
if (qp->uk_attrs->hw_rev == IRDMA_GEN_2)
sys/dev/irdma/irdma_uk.c
1009
FIELD_PREP(IRDMAQPSQ_VALID, qp->rwqe_polarity);
sys/dev/irdma/irdma_uk.c
103
irdma_nop_1(struct irdma_qp_uk *qp)
sys/dev/irdma/irdma_uk.c
108
if (!qp->sq_ring.head)
sys/dev/irdma/irdma_uk.c
1100
irdma_check_rq_cqe(struct irdma_qp_uk *qp, u32 *array_idx)
sys/dev/irdma/irdma_uk.c
1102
u32 exp_idx = (qp->last_rx_cmpl_idx + 1) % qp->rq_size;
sys/dev/irdma/irdma_uk.c
1107
qp->last_rx_cmpl_idx = exp_idx;
sys/dev/irdma/irdma_uk.c
111
wqe_idx = IRDMA_RING_CURRENT_HEAD(qp->sq_ring);
sys/dev/irdma/irdma_uk.c
1112
qp->last_rx_cmpl_idx = *array_idx;
sys/dev/irdma/irdma_uk.c
112
wqe = qp->sq_base[wqe_idx].elem;
sys/dev/irdma/irdma_uk.c
1126
struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_uk.c
1135
if (qp->sq_wrtrk_array[wqe_idx].signaled == 0) {
sys/dev/irdma/irdma_uk.c
114
qp->sq_wrtrk_array[wqe_idx].quanta = IRDMA_QP_WQE_MIN_QUANTA;
sys/dev/irdma/irdma_uk.c
1149
qp->sq_wrtrk_array[widx].wrid, qp->sq_wrtrk_array[widx].wr_len,
sys/dev/irdma/irdma_uk.c
1150
qp->sq_wrtrk_array[widx].quanta, qp->sq_wrtrk_array[widx].signaled);
sys/dev/irdma/irdma_uk.c
1151
wqe = qp->sq_base[widx].elem;
sys/dev/irdma/irdma_uk.c
1202
struct irdma_qp_uk *qp;
sys/dev/irdma/irdma_uk.c
123
set_64bit_val(wqe, IRDMA_BYTE_24, irdma_nop_hdr(qp));
sys/dev/irdma/irdma_uk.c
1281
qp = (struct irdma_qp_uk *)(irdma_uintptr) comp_ctx;
sys/dev/irdma/irdma_uk.c
1282
if (!qp || qp->destroy_pending) {
sys/dev/irdma/irdma_uk.c
1315
info->qp_handle = (irdma_qp_handle) (irdma_uintptr) qp;
sys/dev/irdma/irdma_uk.c
1321
array_idx = wqe_idx / qp->rq_wqe_size_multiplier;
sys/dev/irdma/irdma_uk.c
1334
spin_lock_irqsave(qp->lock, flags);
sys/dev/irdma/irdma_uk.c
1335
if (!IRDMA_RING_MORE_WORK(qp->rq_ring)) {
sys/dev/irdma/irdma_uk.c
1337
spin_unlock_irqrestore(qp->lock, flags);
sys/dev/irdma/irdma_uk.c
134
irdma_clr_wqes(struct irdma_qp_uk *qp, u32 qp_wqe_idx)
sys/dev/irdma/irdma_uk.c
1341
info->wr_id = qp->rq_wrid_array[qp->rq_ring.tail];
sys/dev/irdma/irdma_uk.c
1342
IRDMA_RING_SET_TAIL(qp->rq_ring, qp->rq_ring.tail + 1);
sys/dev/irdma/irdma_uk.c
1343
if (!IRDMA_RING_MORE_WORK(qp->rq_ring))
sys/dev/irdma/irdma_uk.c
1344
qp->rq_flush_complete = true;
sys/dev/irdma/irdma_uk.c
1347
spin_unlock_irqrestore(qp->lock, flags);
sys/dev/irdma/irdma_uk.c
1349
info->wr_id = qp->rq_wrid_array[array_idx];
sys/dev/irdma/irdma_uk.c
1350
if (irdma_check_rq_cqe(qp, &array_idx)) {
sys/dev/irdma/irdma_uk.c
1351
info->wr_id = qp->rq_wrid_array[array_idx];
sys/dev/irdma/irdma_uk.c
1353
IRDMA_RING_SET_TAIL(qp->rq_ring, array_idx + 1);
sys/dev/irdma/irdma_uk.c
1356
IRDMA_RING_SET_TAIL(qp->rq_ring, array_idx + 1);
sys/dev/irdma/irdma_uk.c
1358
pring = &qp->rq_ring;
sys/dev/irdma/irdma_uk.c
1360
if (qp->first_sq_wq) {
sys/dev/irdma/irdma_uk.c
1361
if (wqe_idx + 1 >= qp->conn_wqes)
sys/dev/irdma/irdma_uk.c
1362
qp->first_sq_wq = false;
sys/dev/irdma/irdma_uk.c
1364
if (wqe_idx < qp->conn_wqes && qp->sq_ring.head == qp->sq_ring.tail) {
sys/dev/irdma/irdma_uk.c
1375
qp->push_mode = false;
sys/dev/irdma/irdma_uk.c
1376
qp->push_dropped = true;
sys/dev/irdma/irdma_uk.c
1379
info->wr_id = qp->sq_wrtrk_array[wqe_idx].wrid;
sys/dev/irdma/irdma_uk.c
1380
info->signaled = qp->sq_wrtrk_array[wqe_idx].signaled;
sys/dev/irdma/irdma_uk.c
1382
info->bytes_xfered = qp->sq_wrtrk_array[wqe_idx].wr_len;
sys/dev/irdma/irdma_uk.c
1383
ret_code = irdma_detect_unsignaled_cmpls(cq, qp, info, wqe_idx);
sys/dev/irdma/irdma_uk.c
1387
IRDMA_RING_SET_TAIL(qp->sq_ring,
sys/dev/irdma/irdma_uk.c
1388
wqe_idx + qp->sq_wrtrk_array[wqe_idx].quanta);
sys/dev/irdma/irdma_uk.c
1390
spin_lock_irqsave(qp->lock, flags);
sys/dev/irdma/irdma_uk.c
1391
if (!IRDMA_RING_MORE_WORK(qp->sq_ring)) {
sys/dev/irdma/irdma_uk.c
1392
spin_unlock_irqrestore(qp->lock, flags);
sys/dev/irdma/irdma_uk.c
140
wqe_idx = (qp_wqe_idx + 128) % qp->sq_ring.size;
sys/dev/irdma/irdma_uk.c
1402
tail = qp->sq_ring.tail;
sys/dev/irdma/irdma_uk.c
1403
sw_wqe = qp->sq_base[tail].elem;
sys/dev/irdma/irdma_uk.c
1408
IRDMA_RING_SET_TAIL(qp->sq_ring,
sys/dev/irdma/irdma_uk.c
1409
tail + qp->sq_wrtrk_array[tail].quanta);
sys/dev/irdma/irdma_uk.c
141
sq = qp->sq_base + wqe_idx;
sys/dev/irdma/irdma_uk.c
1411
info->wr_id = qp->sq_wrtrk_array[tail].wrid;
sys/dev/irdma/irdma_uk.c
1412
info->signaled = qp->sq_wrtrk_array[tail].signaled;
sys/dev/irdma/irdma_uk.c
1413
info->bytes_xfered = qp->sq_wrtrk_array[tail].wr_len;
sys/dev/irdma/irdma_uk.c
1421
if (!IRDMA_RING_MORE_WORK(qp->sq_ring))
sys/dev/irdma/irdma_uk.c
1422
qp->sq_flush_complete = true;
sys/dev/irdma/irdma_uk.c
1423
spin_unlock_irqrestore(qp->lock, flags);
sys/dev/irdma/irdma_uk.c
1425
pring = &qp->sq_ring;
sys/dev/irdma/irdma_uk.c
143
memset(sq, qp->swqe_polarity ? 0 : 0xFF,
sys/dev/irdma/irdma_uk.c
146
memset(sq, qp->swqe_polarity ? 0xFF : 0,
sys/dev/irdma/irdma_uk.c
156
irdma_uk_qp_post_wr(struct irdma_qp_uk *qp)
sys/dev/irdma/irdma_uk.c
1569
irdma_setup_connection_wqes(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_uk.c
1576
else if (qp->uk_attrs->feature_flags & IRDMA_FEATURE_RTS_AE)
sys/dev/irdma/irdma_uk.c
1578
qp->conn_wqes = move_cnt;
sys/dev/irdma/irdma_uk.c
1579
IRDMA_RING_MOVE_HEAD_BY_COUNT_NOCHECK(qp->sq_ring, move_cnt);
sys/dev/irdma/irdma_uk.c
1580
IRDMA_RING_MOVE_TAIL_BY_COUNT(qp->sq_ring, move_cnt);
sys/dev/irdma/irdma_uk.c
1581
IRDMA_RING_MOVE_HEAD_BY_COUNT_NOCHECK(qp->initial_ring, move_cnt);
sys/dev/irdma/irdma_uk.c
166
get_64bit_val(qp->shadow_area, IRDMA_BYTE_0, &temp);
sys/dev/irdma/irdma_uk.c
1670
irdma_uk_qp_init(struct irdma_qp_uk *qp, struct irdma_qp_uk_init_info *info)
sys/dev/irdma/irdma_uk.c
1675
qp->uk_attrs = info->uk_attrs;
sys/dev/irdma/irdma_uk.c
1676
if (info->max_sq_frag_cnt > qp->uk_attrs->max_hw_wq_frags ||
sys/dev/irdma/irdma_uk.c
1677
info->max_rq_frag_cnt > qp->uk_attrs->max_hw_wq_frags)
sys/dev/irdma/irdma_uk.c
1680
qp->qp_caps = info->qp_caps;
sys/dev/irdma/irdma_uk.c
1681
qp->sq_base = info->sq;
sys/dev/irdma/irdma_uk.c
1682
qp->rq_base = info->rq;
sys/dev/irdma/irdma_uk.c
1683
qp->qp_type = info->type ? info->type : IRDMA_QP_TYPE_IWARP;
sys/dev/irdma/irdma_uk.c
1684
qp->shadow_area = info->shadow_area;
sys/dev/irdma/irdma_uk.c
1685
qp->sq_wrtrk_array = info->sq_wrtrk_array;
sys/dev/irdma/irdma_uk.c
1687
qp->rq_wrid_array = info->rq_wrid_array;
sys/dev/irdma/irdma_uk.c
1688
qp->wqe_alloc_db = info->wqe_alloc_db;
sys/dev/irdma/irdma_uk.c
1689
qp->last_rx_cmpl_idx = 0xffffffff;
sys/dev/irdma/irdma_uk.c
169
sw_sq_head = IRDMA_RING_CURRENT_HEAD(qp->sq_ring);
sys/dev/irdma/irdma_uk.c
1690
qp->rd_fence_rate = info->rd_fence_rate;
sys/dev/irdma/irdma_uk.c
1691
qp->qp_id = info->qp_id;
sys/dev/irdma/irdma_uk.c
1692
qp->sq_size = info->sq_size;
sys/dev/irdma/irdma_uk.c
1693
qp->push_mode = false;
sys/dev/irdma/irdma_uk.c
1694
qp->max_sq_frag_cnt = info->max_sq_frag_cnt;
sys/dev/irdma/irdma_uk.c
1695
sq_ring_size = qp->sq_size << info->sq_shift;
sys/dev/irdma/irdma_uk.c
1696
IRDMA_RING_INIT(qp->sq_ring, sq_ring_size);
sys/dev/irdma/irdma_uk.c
1697
IRDMA_RING_INIT(qp->initial_ring, sq_ring_size);
sys/dev/irdma/irdma_uk.c
1699
irdma_setup_connection_wqes(qp, info);
sys/dev/irdma/irdma_uk.c
170
if (sw_sq_head != qp->initial_ring.head) {
sys/dev/irdma/irdma_uk.c
1700
qp->swqe_polarity = 1;
sys/dev/irdma/irdma_uk.c
1701
qp->first_sq_wq = true;
sys/dev/irdma/irdma_uk.c
1703
qp->swqe_polarity = 0;
sys/dev/irdma/irdma_uk.c
1705
qp->swqe_polarity_deferred = 1;
sys/dev/irdma/irdma_uk.c
1706
qp->rwqe_polarity = 0;
sys/dev/irdma/irdma_uk.c
1707
qp->rq_size = info->rq_size;
sys/dev/irdma/irdma_uk.c
1708
qp->max_rq_frag_cnt = info->max_rq_frag_cnt;
sys/dev/irdma/irdma_uk.c
1709
qp->max_inline_data = info->max_inline_data;
sys/dev/irdma/irdma_uk.c
171
if (qp->push_dropped) {
sys/dev/irdma/irdma_uk.c
1710
qp->rq_wqe_size = info->rq_shift;
sys/dev/irdma/irdma_uk.c
1711
IRDMA_RING_INIT(qp->rq_ring, qp->rq_size);
sys/dev/irdma/irdma_uk.c
1712
qp->rq_wqe_size_multiplier = 1 << info->rq_shift;
sys/dev/irdma/irdma_uk.c
1713
if (qp->uk_attrs->hw_rev == IRDMA_GEN_1)
sys/dev/irdma/irdma_uk.c
1714
qp->wqe_ops = iw_wqe_uk_ops_gen_1;
sys/dev/irdma/irdma_uk.c
1716
qp->wqe_ops = iw_wqe_uk_ops;
sys/dev/irdma/irdma_uk.c
1717
qp->start_wqe_idx = info->start_wqe_idx;
sys/dev/irdma/irdma_uk.c
172
db_wr32(qp->qp_id, qp->wqe_alloc_db);
sys/dev/irdma/irdma_uk.c
173
qp->push_dropped = false;
sys/dev/irdma/irdma_uk.c
175
if (sw_sq_head > qp->initial_ring.head) {
sys/dev/irdma/irdma_uk.c
176
if (hw_sq_tail >= qp->initial_ring.head &&
sys/dev/irdma/irdma_uk.c
178
db_wr32(qp->qp_id, qp->wqe_alloc_db);
sys/dev/irdma/irdma_uk.c
180
if (hw_sq_tail >= qp->initial_ring.head ||
sys/dev/irdma/irdma_uk.c
182
db_wr32(qp->qp_id, qp->wqe_alloc_db);
sys/dev/irdma/irdma_uk.c
187
qp->initial_ring.head = qp->sq_ring.head;
sys/dev/irdma/irdma_uk.c
196
irdma_qp_ring_push_db(struct irdma_qp_uk *qp, u32 wqe_idx)
sys/dev/irdma/irdma_uk.c
198
set_32bit_val(qp->push_db, 0,
sys/dev/irdma/irdma_uk.c
199
FIELD_PREP(IRDMA_WQEALLOC_WQE_DESC_INDEX, wqe_idx >> 3) | qp->qp_id);
sys/dev/irdma/irdma_uk.c
200
qp->initial_ring.head = qp->sq_ring.head;
sys/dev/irdma/irdma_uk.c
201
qp->push_mode = true;
sys/dev/irdma/irdma_uk.c
202
qp->push_dropped = false;
sys/dev/irdma/irdma_uk.c
214
irdma_qp_push_wqe(struct irdma_qp_uk *qp, __le64 * wqe, u16 quanta,
sys/dev/irdma/irdma_uk.c
220
push = (__le64 *) ((uintptr_t)qp->push_wqe +
sys/dev/irdma/irdma_uk.c
223
irdma_qp_ring_push_db(qp, wqe_idx);
sys/dev/irdma/irdma_uk.c
224
qp->last_push_db = true;
sys/dev/irdma/irdma_uk.c
225
} else if (qp->last_push_db) {
sys/dev/irdma/irdma_uk.c
226
qp->last_push_db = false;
sys/dev/irdma/irdma_uk.c
227
db_wr32(qp->qp_id, qp->wqe_alloc_db);
sys/dev/irdma/irdma_uk.c
229
irdma_uk_qp_post_wr(qp);
sys/dev/irdma/irdma_uk.c
238
irdma_push_ring_free(struct irdma_qp_uk *qp)
sys/dev/irdma/irdma_uk.c
242
head = IRDMA_RING_CURRENT_HEAD(qp->initial_ring);
sys/dev/irdma/irdma_uk.c
243
tail = IRDMA_RING_CURRENT_TAIL(qp->sq_ring);
sys/dev/irdma/irdma_uk.c
257
irdma_enable_push_wqe(struct irdma_qp_uk *qp, u32 total_size)
sys/dev/irdma/irdma_uk.c
259
if (irdma_push_ring_free(qp) &&
sys/dev/irdma/irdma_uk.c
260
total_size <= qp->uk_attrs->max_hw_push_len) {
sys/dev/irdma/irdma_uk.c
275
irdma_qp_get_next_send_wqe(struct irdma_qp_uk *qp, u32 *wqe_idx,
sys/dev/irdma/irdma_uk.c
286
avail_quanta = qp->uk_attrs->max_hw_sq_chunk -
sys/dev/irdma/irdma_uk.c
287
(IRDMA_RING_CURRENT_HEAD(qp->sq_ring) %
sys/dev/irdma/irdma_uk.c
288
qp->uk_attrs->max_hw_sq_chunk);
sys/dev/irdma/irdma_uk.c
292
if (*quanta > IRDMA_SQ_RING_FREE_QUANTA(qp->sq_ring))
sys/dev/irdma/irdma_uk.c
297
IRDMA_SQ_RING_FREE_QUANTA(qp->sq_ring))
sys/dev/irdma/irdma_uk.c
300
nop_wqe_idx = IRDMA_RING_CURRENT_HEAD(qp->sq_ring);
sys/dev/irdma/irdma_uk.c
302
irdma_nop_1(qp);
sys/dev/irdma/irdma_uk.c
303
IRDMA_RING_MOVE_HEAD_NOCHECK(qp->sq_ring);
sys/dev/irdma/irdma_uk.c
305
if (qp->push_db && info->push_wqe)
sys/dev/irdma/irdma_uk.c
306
irdma_qp_push_wqe(qp, qp->sq_base[nop_wqe_idx].elem,
sys/dev/irdma/irdma_uk.c
310
*wqe_idx = IRDMA_RING_CURRENT_HEAD(qp->sq_ring);
sys/dev/irdma/irdma_uk.c
312
qp->swqe_polarity = !qp->swqe_polarity;
sys/dev/irdma/irdma_uk.c
314
IRDMA_RING_MOVE_HEAD_BY_COUNT_NOCHECK(qp->sq_ring, *quanta);
sys/dev/irdma/irdma_uk.c
316
irdma_clr_wqes(qp, *wqe_idx);
sys/dev/irdma/irdma_uk.c
318
wqe = qp->sq_base[*wqe_idx].elem;
sys/dev/irdma/irdma_uk.c
319
if (qp->uk_attrs->hw_rev == IRDMA_GEN_1 && wqe_quanta == 1 &&
sys/dev/irdma/irdma_uk.c
320
(IRDMA_RING_CURRENT_HEAD(qp->sq_ring) & 1)) {
sys/dev/irdma/irdma_uk.c
321
wqe_0 = qp->sq_base[IRDMA_RING_CURRENT_HEAD(qp->sq_ring)].elem;
sys/dev/irdma/irdma_uk.c
323
qp->swqe_polarity ? 0 : 1));
sys/dev/irdma/irdma_uk.c
325
qp->sq_wrtrk_array[*wqe_idx].wrid = info->wr_id;
sys/dev/irdma/irdma_uk.c
326
qp->sq_wrtrk_array[*wqe_idx].wr_len = total_size;
sys/dev/irdma/irdma_uk.c
327
qp->sq_wrtrk_array[*wqe_idx].quanta = wqe_quanta;
sys/dev/irdma/irdma_uk.c
328
qp->sq_wrtrk_array[*wqe_idx].signaled = info->signaled;
sys/dev/irdma/irdma_uk.c
339
irdma_qp_get_next_recv_wqe(struct irdma_qp_uk *qp, u32 *wqe_idx)
sys/dev/irdma/irdma_uk.c
344
if (IRDMA_RING_FULL_ERR(qp->rq_ring))
sys/dev/irdma/irdma_uk.c
347
IRDMA_ATOMIC_RING_MOVE_HEAD(qp->rq_ring, *wqe_idx, ret_code);
sys/dev/irdma/irdma_uk.c
352
qp->rwqe_polarity = !qp->rwqe_polarity;
sys/dev/irdma/irdma_uk.c
354
wqe = qp->rq_base[*wqe_idx * qp->rq_wqe_size_multiplier].elem;
sys/dev/irdma/irdma_uk.c
366
irdma_uk_rdma_write(struct irdma_qp_uk *qp, struct irdma_post_sq_info *info,
sys/dev/irdma/irdma_uk.c
382
if (op_info->num_lo_sges > qp->max_sq_frag_cnt)
sys/dev/irdma/irdma_uk.c
399
if (qp->push_db)
sys/dev/irdma/irdma_uk.c
400
info->push_wqe = irdma_enable_push_wqe(qp, total_size);
sys/dev/irdma/irdma_uk.c
402
wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, &quanta, total_size, info);
sys/dev/irdma/irdma_uk.c
414
qp->wqe_ops.iw_set_fragment(wqe, IRDMA_BYTE_0,
sys/dev/irdma/irdma_uk.c
416
qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
421
qp->wqe_ops.iw_set_fragment(wqe, byte_off,
sys/dev/irdma/irdma_uk.c
423
qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
428
if (qp->uk_attrs->hw_rev >= IRDMA_GEN_2 && !(frag_cnt & 0x01) &&
sys/dev/irdma/irdma_uk.c
430
qp->wqe_ops.iw_set_fragment(wqe, byte_off, NULL,
sys/dev/irdma/irdma_uk.c
431
qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
432
if (qp->uk_attrs->hw_rev == IRDMA_GEN_2)
sys/dev/irdma/irdma_uk.c
445
FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
450
if (qp->push_db)
sys/dev/irdma/irdma_uk.c
451
irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, info->push_wqe);
sys/dev/irdma/irdma_uk.c
453
irdma_uk_qp_post_wr(qp);
sys/dev/irdma/irdma_uk.c
466
irdma_uk_rdma_read(struct irdma_qp_uk *qp, struct irdma_post_sq_info *info,
sys/dev/irdma/irdma_uk.c
480
info->push_wqe &= qp->push_db ? true : false;
sys/dev/irdma/irdma_uk.c
483
if (qp->max_sq_frag_cnt < op_info->num_lo_sges)
sys/dev/irdma/irdma_uk.c
493
wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, &quanta, total_size, info);
sys/dev/irdma/irdma_uk.c
497
if (qp->rd_fence_rate && (qp->ord_cnt++ == qp->rd_fence_rate)) {
sys/dev/irdma/irdma_uk.c
499
qp->ord_cnt = 0;
sys/dev/irdma/irdma_uk.c
506
qp->wqe_ops.iw_set_fragment(wqe, IRDMA_BYTE_0, op_info->lo_sg_list,
sys/dev/irdma/irdma_uk.c
507
qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
509
qp->wqe_ops.iw_set_fragment(wqe, byte_off,
sys/dev/irdma/irdma_uk.c
511
qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
516
if (qp->uk_attrs->hw_rev >= IRDMA_GEN_2 &&
sys/dev/irdma/irdma_uk.c
518
qp->wqe_ops.iw_set_fragment(wqe, byte_off, NULL,
sys/dev/irdma/irdma_uk.c
519
qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
520
if (qp->uk_attrs->hw_rev == IRDMA_GEN_2)
sys/dev/irdma/irdma_uk.c
535
FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
540
if (qp->push_db)
sys/dev/irdma/irdma_uk.c
541
irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, info->push_wqe);
sys/dev/irdma/irdma_uk.c
543
irdma_uk_qp_post_wr(qp);
sys/dev/irdma/irdma_uk.c
555
irdma_uk_send(struct irdma_qp_uk *qp, struct irdma_post_sq_info *info,
sys/dev/irdma/irdma_uk.c
570
if (qp->max_sq_frag_cnt < op_info->num_sges)
sys/dev/irdma/irdma_uk.c
584
if (qp->push_db)
sys/dev/irdma/irdma_uk.c
585
info->push_wqe = irdma_enable_push_wqe(qp, total_size);
sys/dev/irdma/irdma_uk.c
587
wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, &quanta, total_size, info);
sys/dev/irdma/irdma_uk.c
598
qp->wqe_ops.iw_set_fragment(wqe, IRDMA_BYTE_0,
sys/dev/irdma/irdma_uk.c
600
qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
605
qp->wqe_ops.iw_set_fragment(wqe, byte_off, &op_info->sg_list[i],
sys/dev/irdma/irdma_uk.c
606
qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
611
if (qp->uk_attrs->hw_rev >= IRDMA_GEN_2 && !(frag_cnt & 0x01) &&
sys/dev/irdma/irdma_uk.c
613
qp->wqe_ops.iw_set_fragment(wqe, byte_off, NULL,
sys/dev/irdma/irdma_uk.c
614
qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
615
if (qp->uk_attrs->hw_rev == IRDMA_GEN_2)
sys/dev/irdma/irdma_uk.c
635
FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
640
if (qp->push_db)
sys/dev/irdma/irdma_uk.c
641
irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, info->push_wqe);
sys/dev/irdma/irdma_uk.c
643
irdma_uk_qp_post_wr(qp);
sys/dev/irdma/irdma_uk.c
777
irdma_uk_inline_rdma_write(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_uk.c
788
info->push_wqe = qp->push_db ? true : false;
sys/dev/irdma/irdma_uk.c
791
if (unlikely(qp->max_sq_frag_cnt < op_info->num_lo_sges))
sys/dev/irdma/irdma_uk.c
797
if (unlikely(total_size > qp->max_inline_data))
sys/dev/irdma/irdma_uk.c
800
quanta = qp->wqe_ops.iw_inline_data_size_to_quanta(total_size);
sys/dev/irdma/irdma_uk.c
802
wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, &quanta, total_size, info);
sys/dev/irdma/irdma_uk.c
820
FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
826
qp->wqe_ops.iw_copy_inline_data((u8 *)wqe, op_info->lo_sg_list,
sys/dev/irdma/irdma_uk.c
827
op_info->num_lo_sges, qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
833
if (qp->push_db)
sys/dev/irdma/irdma_uk.c
834
irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, info->push_wqe);
sys/dev/irdma/irdma_uk.c
836
irdma_uk_qp_post_wr(qp);
sys/dev/irdma/irdma_uk.c
848
irdma_uk_inline_send(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_uk.c
859
info->push_wqe = qp->push_db ? true : false;
sys/dev/irdma/irdma_uk.c
862
if (unlikely(qp->max_sq_frag_cnt < op_info->num_sges))
sys/dev/irdma/irdma_uk.c
868
if (unlikely(total_size > qp->max_inline_data))
sys/dev/irdma/irdma_uk.c
871
quanta = qp->wqe_ops.iw_inline_data_size_to_quanta(total_size);
sys/dev/irdma/irdma_uk.c
872
wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, &quanta, total_size, info);
sys/dev/irdma/irdma_uk.c
895
FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
900
qp->wqe_ops.iw_copy_inline_data((u8 *)wqe, op_info->sg_list,
sys/dev/irdma/irdma_uk.c
901
op_info->num_sges, qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
907
if (qp->push_db)
sys/dev/irdma/irdma_uk.c
908
irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, info->push_wqe);
sys/dev/irdma/irdma_uk.c
910
irdma_uk_qp_post_wr(qp);
sys/dev/irdma/irdma_uk.c
92
static inline u64 irdma_nop_hdr(struct irdma_qp_uk *qp){
sys/dev/irdma/irdma_uk.c
922
irdma_uk_stag_local_invalidate(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_uk.c
934
info->push_wqe = qp->push_db ? true : false;
sys/dev/irdma/irdma_uk.c
938
wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, &quanta, 0, info);
sys/dev/irdma/irdma_uk.c
943
qp->wqe_ops.iw_set_fragment(wqe, IRDMA_BYTE_0, &sge, 0);
sys/dev/irdma/irdma_uk.c
95
FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
952
FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity);
sys/dev/irdma/irdma_uk.c
958
if (qp->push_db)
sys/dev/irdma/irdma_uk.c
959
irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, info->push_wqe);
sys/dev/irdma/irdma_uk.c
961
irdma_uk_qp_post_wr(qp);
sys/dev/irdma/irdma_uk.c
972
irdma_uk_post_receive(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_uk.c
980
if (qp->max_rq_frag_cnt < info->num_sges)
sys/dev/irdma/irdma_uk.c
983
wqe = irdma_qp_get_next_recv_wqe(qp, &wqe_idx);
sys/dev/irdma/irdma_uk.c
987
qp->rq_wrid_array[wqe_idx] = info->wr_id;
sys/dev/irdma/irdma_uk.c
989
qp->wqe_ops.iw_set_fragment(wqe, IRDMA_BYTE_0, info->sg_list,
sys/dev/irdma/irdma_uk.c
990
qp->rwqe_polarity);
sys/dev/irdma/irdma_uk.c
993
qp->wqe_ops.iw_set_fragment(wqe, byte_off, &info->sg_list[i],
sys/dev/irdma/irdma_uk.c
994
qp->rwqe_polarity);
sys/dev/irdma/irdma_uk.c
999
if (qp->uk_attrs->hw_rev >= IRDMA_GEN_2 && !(info->num_sges & 0x01) &&
sys/dev/irdma/irdma_user.h
393
int irdma_uk_inline_rdma_write(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_user.h
395
int irdma_uk_inline_send(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_user.h
397
int irdma_uk_post_nop(struct irdma_qp_uk *qp, u64 wr_id, bool signaled,
sys/dev/irdma/irdma_user.h
399
int irdma_uk_post_receive(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_user.h
401
void irdma_uk_qp_post_wr(struct irdma_qp_uk *qp);
sys/dev/irdma/irdma_user.h
402
int irdma_uk_rdma_read(struct irdma_qp_uk *qp, struct irdma_post_sq_info *info,
sys/dev/irdma/irdma_user.h
404
int irdma_uk_rdma_write(struct irdma_qp_uk *qp, struct irdma_post_sq_info *info,
sys/dev/irdma/irdma_user.h
406
int irdma_uk_send(struct irdma_qp_uk *qp, struct irdma_post_sq_info *info,
sys/dev/irdma/irdma_user.h
408
int irdma_uk_stag_local_invalidate(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_user.h
427
void irdma_uk_cq_set_resized_cnt(struct irdma_cq_uk *qp, u16 cnt);
sys/dev/irdma/irdma_user.h
430
int irdma_uk_qp_init(struct irdma_qp_uk *qp,
sys/dev/irdma/irdma_user.h
550
__le64 *irdma_qp_get_next_send_wqe(struct irdma_qp_uk *qp, u32 *wqe_idx,
sys/dev/irdma/irdma_user.h
553
__le64 *irdma_qp_get_next_recv_wqe(struct irdma_qp_uk *qp, u32 *wqe_idx);
sys/dev/irdma/irdma_user.h
555
int irdma_nop(struct irdma_qp_uk *qp, u64 wr_id, bool signaled, bool post_sq);
sys/dev/irdma/irdma_user.h
564
void irdma_qp_push_wqe(struct irdma_qp_uk *qp, __le64 *wqe, u16 quanta,
sys/dev/irdma/irdma_user.h
566
void irdma_clr_wqes(struct irdma_qp_uk *qp, u32 qp_wqe_idx);
sys/dev/irdma/irdma_utils.c
1098
irdma_cqp_qp_create_cmd(struct irdma_sc_dev *dev, struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_utils.c
1117
cqp_info->in.u.qp_create.qp = qp;
sys/dev/irdma/irdma_utils.c
1136
struct irdma_sc_qp *qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_utils.c
1141
if (qp->push_idx == IRDMA_INVALID_PUSH_PAGE_INDEX)
sys/dev/irdma/irdma_utils.c
1151
cqp_info->in.u.manage_push_page.info.push_idx = qp->push_idx;
sys/dev/irdma/irdma_utils.c
1152
cqp_info->in.u.manage_push_page.info.qs_handle = qp->qs_handle;
sys/dev/irdma/irdma_utils.c
1160
qp->push_idx = IRDMA_INVALID_PUSH_PAGE_INDEX;
sys/dev/irdma/irdma_utils.c
1200
iwqp = cqp_info->in.u.qp_modify.qp->qp_uk.back_qp;
sys/dev/irdma/irdma_utils.c
1235
cqp_info->in.u.qp_modify.qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_utils.c
1270
cqp_info->in.u.qp_modify.qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_utils.c
1306
irdma_cqp_qp_destroy_cmd(struct irdma_sc_dev *dev, struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_utils.c
1321
cqp_info->in.u.qp_destroy.qp = qp;
sys/dev/irdma/irdma_utils.c
1337
irdma_ieq_mpa_crc_ae(struct irdma_sc_dev *dev, struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_utils.c
1345
irdma_gen_ae(rf, qp, &info, false);
sys/dev/irdma/irdma_utils.c
1393
irdma_send_ieq_ack(struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_utils.c
1395
struct irdma_cm_node *cm_node = ((struct irdma_qp *)qp->qp_uk.back_qp)->cm_node;
sys/dev/irdma/irdma_utils.c
1396
struct irdma_puda_buf *buf = qp->pfpdu.lastrcv_buf;
sys/dev/irdma/irdma_utils.c
1399
cm_node->tcp_cntxt.rcv_nxt = qp->pfpdu.nextseqnum;
sys/dev/irdma/irdma_utils.c
1411
irdma_puda_ieq_get_ah_info(struct irdma_sc_qp *qp,
sys/dev/irdma/irdma_utils.c
1414
struct irdma_puda_buf *buf = qp->pfpdu.ah_buf;
sys/dev/irdma/irdma_utils.c
1423
ah_info->vsi = qp->vsi;
sys/dev/irdma/irdma_utils.c
1445
ah_info->dst_arpindex = irdma_arp_table(dev_to_rf(qp->dev),
sys/dev/irdma/irdma_utils.c
1909
struct irdma_sc_qp *qp = cqp_request->param;
sys/dev/irdma/irdma_utils.c
1910
struct irdma_sc_ah *sc_ah = qp->pfpdu.ah;
sys/dev/irdma/irdma_utils.c
1913
spin_lock_irqsave(&qp->pfpdu.lock, flags);
sys/dev/irdma/irdma_utils.c
1916
irdma_ieq_process_fpdus(qp, qp->vsi->ieq);
sys/dev/irdma/irdma_utils.c
1919
irdma_ieq_cleanup_qp(qp->vsi->ieq, qp);
sys/dev/irdma/irdma_utils.c
1921
spin_unlock_irqrestore(&qp->pfpdu.lock, flags);
sys/dev/irdma/irdma_utils.c
2255
struct irdma_qp *qp = sc_qp->qp_uk.back_qp;
sys/dev/irdma/irdma_utils.c
2258
if (qp->iwdev->rf->reset)
sys/dev/irdma/irdma_utils.c
2262
if (rdma_protocol_roce(qp->ibqp.device, 1))
sys/dev/irdma/irdma_utils.c
2263
irdma_modify_qp_roce(&qp->ibqp, &attr, IB_QP_STATE, NULL);
sys/dev/irdma/irdma_utils.c
2265
irdma_modify_qp(&qp->ibqp, &attr, IB_QP_STATE, NULL);
sys/dev/irdma/irdma_utils.c
2288
ibevent.element.qp = &iwqp->ibqp;
sys/dev/irdma/irdma_utils.c
2387
struct irdma_qp_uk *qp = &iwqp->sc_qp.qp_uk;
sys/dev/irdma/irdma_utils.c
2409
if ((struct irdma_qp_uk *)(irdma_uintptr) comp_ctx == qp)
sys/dev/irdma/irdma_utils.c
2461
struct irdma_qp_uk *qp, u32 qp_num)
sys/dev/irdma/irdma_utils.c
2467
cpi->qp_handle = (irdma_qp_handle) (uintptr_t)qp;
sys/dev/irdma/irdma_utils.c
2495
struct irdma_qp_uk *qp = &iwqp->sc_qp.qp_uk;
sys/dev/irdma/irdma_utils.c
2496
struct irdma_ring *sq_ring = &qp->sq_ring;
sys/dev/irdma/irdma_utils.c
2497
struct irdma_ring *rq_ring = &qp->rq_ring;
sys/dev/irdma/irdma_utils.c
2519
irdma_set_cpi_common_values(&cmpl->cpi, qp, qp->qp_id);
sys/dev/irdma/irdma_utils.c
2521
cmpl->cpi.wr_id = qp->sq_wrtrk_array[wqe_idx].wrid;
sys/dev/irdma/irdma_utils.c
2522
cmpl->cpi.signaled = qp->sq_wrtrk_array[wqe_idx].signaled;
sys/dev/irdma/irdma_utils.c
2523
sw_wqe = qp->sq_base[wqe_idx].elem;
sys/dev/irdma/irdma_utils.c
2529
sq_ring->tail + qp->sq_wrtrk_array[sq_ring->tail].quanta);
sys/dev/irdma/irdma_utils.c
2537
__func__, cmpl->cpi.wr_id, qp->qp_id);
sys/dev/irdma/irdma_utils.c
2566
irdma_set_cpi_common_values(&cmpl->cpi, qp, qp->qp_id);
sys/dev/irdma/irdma_utils.c
2568
cmpl->cpi.wr_id = qp->rq_wrid_array[wqe_idx];
sys/dev/irdma/irdma_utils.c
2576
__func__, cmpl->cpi.wr_id, qp->qp_id,
sys/dev/irdma/irdma_utils.c
723
qpn = cqp_request->info.in.u.qp_create.qp->qp_uk.qp_id;
sys/dev/irdma/irdma_utils.c
725
qpn = cqp_request->info.in.u.qp_modify.qp->qp_uk.qp_id;
sys/dev/irdma/irdma_utils.c
727
qpn = cqp_request->info.in.u.qp_destroy.qp->qp_uk.qp_id;
sys/dev/irdma/irdma_utils.c
875
irdma_cqp_qp_suspend_resume(struct irdma_sc_qp *qp, u8 op)
sys/dev/irdma/irdma_utils.c
877
struct irdma_sc_dev *dev = qp->dev;
sys/dev/irdma/irdma_utils.c
891
cqp_info->in.u.suspend_resume.qp = qp;
sys/dev/irdma/irdma_utils.c
908
irdma_term_modify_qp(struct irdma_sc_qp *qp, u8 next_state, u8 term,
sys/dev/irdma/irdma_utils.c
913
iwqp = qp->qp_uk.back_qp;
sys/dev/irdma/irdma_utils.c
923
irdma_terminate_done(struct irdma_sc_qp *qp, int timeout_occurred)
sys/dev/irdma/irdma_utils.c
930
iwqp = qp->qp_uk.back_qp;
sys/dev/irdma/irdma_utils.c
936
first_time = !(qp->term_flags & IRDMA_TERM_DONE);
sys/dev/irdma/irdma_utils.c
937
qp->term_flags |= IRDMA_TERM_DONE;
sys/dev/irdma/irdma_utils.c
941
irdma_terminate_del_timer(qp);
sys/dev/irdma/irdma_utils.c
952
struct irdma_sc_qp *qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_utils.c
954
irdma_terminate_done(qp, 1);
sys/dev/irdma/irdma_utils.c
963
irdma_terminate_start_timer(struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_utils.c
967
iwqp = qp->qp_uk.back_qp;
sys/dev/irdma/irdma_utils.c
980
irdma_terminate_del_timer(struct irdma_sc_qp *qp)
sys/dev/irdma/irdma_utils.c
985
iwqp = qp->qp_uk.back_qp;
sys/dev/irdma/irdma_verbs.c
214
struct irdma_sc_qp *qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_verbs.c
226
qp->vsi->qos[qp->user_pri].qs_handle;
sys/dev/irdma/irdma_verbs.c
236
qp->push_idx = cqp_request->compl_info.op_ret_val;
sys/dev/irdma/irdma_verbs.c
237
qp->push_offset = 0;
sys/dev/irdma/irdma_verbs.c
2695
struct irdma_sc_qp *qp;
sys/dev/irdma/irdma_verbs.c
2701
qp = cq_poll_info->qp_handle;
sys/dev/irdma/irdma_verbs.c
2702
entry->qp = qp->qp_uk.back_qp;
sys/dev/irdma/irdma_verbs.c
2738
qp->qp_uk.qp_caps & IRDMA_SEND_WITH_IMM ?
sys/dev/irdma/irdma_verbs.c
2740
if (qp->qp_uk.qp_type != IRDMA_QP_TYPE_ROCE_UD &&
sys/dev/irdma/irdma_verbs.c
2747
if (qp->qp_uk.qp_type == IRDMA_QP_TYPE_ROCE_UD) {
sys/dev/irdma/irdma_verbs.c
566
cqp_info->in.u.qp_create.qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_verbs.c
755
struct irdma_sc_qp *qp = &iwqp->sc_qp;
sys/dev/irdma/irdma_verbs.c
764
attr->cap.max_inline_data = qp->qp_uk.max_inline_data;
sys/dev/irdma/irdma_verbs.c
765
attr->cap.max_send_sge = qp->qp_uk.max_sq_frag_cnt;
sys/dev/irdma/irdma_verbs.c
766
attr->cap.max_recv_sge = qp->qp_uk.max_rq_frag_cnt;
sys/dev/irdma/irdma_verbs.h
299
struct irdma_sc_qp *qp;
sys/dev/irdma/irdma_verbs.h
323
qp = cq_poll_info->qp_handle;
sys/dev/irdma/irdma_verbs.h
324
irdma_dev_err(to_ibdev(qp->dev), "Invalid opcode = %d in CQE\n",
sys/dev/irdma/osdep.h
223
void irdma_term_modify_qp(struct irdma_sc_qp *qp, u8 next_state, u8 term, u8 term_len);
sys/dev/irdma/osdep.h
224
void irdma_terminate_done(struct irdma_sc_qp *qp, int timeout_occurred);
sys/dev/irdma/osdep.h
225
void irdma_terminate_start_timer(struct irdma_sc_qp *qp);
sys/dev/irdma/osdep.h
226
void irdma_terminate_del_timer(struct irdma_sc_qp *qp);
sys/dev/irdma/osdep.h
230
void irdma_send_ieq_ack(struct irdma_sc_qp *qp);
sys/dev/iser/icl_iser.h
411
struct ib_qp *qp;
sys/dev/iser/iser_memory.c
195
ret = ib_post_send(ib_conn->qp, wr, &bad_wr);
sys/dev/iser/iser_verbs.c
121
ib_conn = wc->qp->qp_context;
sys/dev/iser/iser_verbs.c
471
ib_conn->qp = ib_conn->cma_id->qp;
sys/dev/iser/iser_verbs.c
474
ib_conn->cma_id->qp);
sys/dev/iser/iser_verbs.c
573
iser_conn, ib_conn->cma_id, ib_conn->qp);
sys/dev/iser/iser_verbs.c
575
if (ib_conn->qp != NULL) {
sys/dev/iser/iser_verbs.c
580
ib_conn->qp = NULL;
sys/dev/iser/iser_verbs.c
616
if (ib_conn->qp == NULL) {
sys/dev/iser/iser_verbs.c
647
err = ib_post_send(ib_conn->qp, &ib_conn->beacon.send, &bad_send_wr);
sys/dev/iser/iser_verbs.c
661
err = ib_post_recv(ib_conn->qp, &ib_conn->beacon.recv, &bad_recv_wr);
sys/dev/iser/iser_verbs.c
783
(void)ib_query_qp(cma_id->qp, &attr, ~0, &init_attr);
sys/dev/iser/iser_verbs.c
786
attr.dest_qp_num, cma_id->qp->qp_num);
sys/dev/iser/iser_verbs.c
867
ib_ret = ib_post_recv(ib_conn->qp, &rx_wr, &rx_wr_failed);
sys/dev/iser/iser_verbs.c
899
ib_ret = ib_post_recv(ib_conn->qp, ib_conn->rx_wr, &rx_wr_failed);
sys/dev/iser/iser_verbs.c
932
ib_ret = ib_post_send(ib_conn->qp, &send_wr, &send_wr_failed);
sys/dev/mlx4/device.h
1129
int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp,
sys/dev/mlx4/device.h
1131
void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp);
sys/dev/mlx4/device.h
1142
int mlx4_unicast_attach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/device.h
1144
int mlx4_unicast_detach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/device.h
1146
int mlx4_multicast_attach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/device.h
1149
int mlx4_multicast_detach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/device.h
828
int qp;
sys/dev/mlx4/device.h
911
} __packed qp;
sys/dev/mlx4/mlx4_core/mlx4.h
1300
int mlx4_qp_detach_common(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/mlx4_core/mlx4.h
1302
int mlx4_qp_attach_common(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/mlx4_core/mlx4.h
1305
int mlx4_trans_to_dmfs_attach(struct mlx4_dev *dev, struct mlx4_qp *qp,
sys/dev/mlx4/mlx4_core/mlx4.h
615
__be32 qp[MLX4_MAX_QP_PER_MGM];
sys/dev/mlx4/mlx4_core/mlx4_eq.c
532
be32_to_cpu(eqe->event.qp.qpn)
sys/dev/mlx4/mlx4_core/mlx4_eq.c
547
mlx4_qp_event(dev, be32_to_cpu(eqe->event.qp.qpn) &
sys/dev/mlx4/mlx4_core/mlx4_fw.c
2681
struct mlx4_qp qp;
sys/dev/mlx4/mlx4_core/mlx4_fw.c
2728
qp.qpn = be32_to_cpu(mgm->qp[i]);
sys/dev/mlx4/mlx4_core/mlx4_fw.c
2730
err = mlx4_multicast_detach(dev, &qp,
sys/dev/mlx4/mlx4_core/mlx4_fw.c
2734
err = mlx4_multicast_attach(dev, &qp,
sys/dev/mlx4/mlx4_core/mlx4_main.c
890
dev->quotas.qp = func_cap.qp_quota;
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1104
int mlx4_qp_attach_common(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1159
if ((be32_to_cpu(mgm->qp[i]) & MGM_QPN_MASK) == qp->qpn) {
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1160
mlx4_dbg(dev, "QP %06x already a member of MGM\n", qp->qpn);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1166
mgm->qp[members_count++] = cpu_to_be32((qp->qpn & MGM_QPN_MASK) |
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1169
mgm->qp[members_count++] = cpu_to_be32(qp->qpn & MGM_QPN_MASK);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1195
index, qp->qpn);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1198
index, qp->qpn);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1214
int mlx4_qp_detach_common(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1250
check_duplicate_entry(dev, port, steer, index, qp->qpn) &&
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1251
!promisc_steering_entry(dev, port, steer, index, qp->qpn, NULL))
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1256
if ((be32_to_cpu(mgm->qp[i]) & MGM_QPN_MASK) == qp->qpn) {
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1262
mlx4_err(dev, "QP %06x not found in MGM\n", qp->qpn);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1268
mgm->qp[loc] = mgm->qp[members_count - 1];
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1269
mgm->qp[members_count - 1] = 0;
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1274
index, qp->qpn);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1336
static int mlx4_QP_ATTACH(struct mlx4_dev *dev, struct mlx4_qp *qp,
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1352
qpn = qp->qpn;
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1368
int mlx4_trans_to_dmfs_attach(struct mlx4_dev *dev, struct mlx4_qp *qp,
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1385
rule.qpn = qp->qpn;
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1408
int mlx4_multicast_attach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1422
return mlx4_QP_ATTACH(dev, qp, gid, 1,
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1424
return mlx4_qp_attach_common(dev, qp, gid,
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1429
return mlx4_trans_to_dmfs_attach(dev, qp, gid, port,
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1438
int mlx4_multicast_detach(struct mlx4_dev *dev, struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1451
return mlx4_QP_ATTACH(dev, qp, gid, 0, 0, prot);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1453
return mlx4_qp_detach_common(dev, qp, gid, prot,
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1529
struct mlx4_qp *qp, u8 gid[16],
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1536
return mlx4_QP_ATTACH(dev, qp, gid, 1,
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1539
return mlx4_qp_attach_common(dev, qp, gid, block_mcast_loopback,
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1544
int mlx4_unicast_detach(struct mlx4_dev *dev, struct mlx4_qp *qp,
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1551
return mlx4_QP_ATTACH(dev, qp, gid, 0, 0, prot);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
1553
return mlx4_qp_detach_common(dev, qp, gid, prot, MLX4_UC_STEER);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
218
mgm->qp[members_count++] = cpu_to_be32(pqp->qpn & MGM_QPN_MASK);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
355
u32 qpn = be32_to_cpu(mgm->qp[i]) & MGM_QPN_MASK;
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
477
if ((be32_to_cpu(mgm->qp[i]) &
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
501
mgm->qp[members_count++] =
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
525
mgm->qp[members_count++] = cpu_to_be32(dqp->qpn & MGM_QPN_MASK);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
591
mgm->qp[members_count++] = cpu_to_be32(dqp->qpn & MGM_QPN_MASK);
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
636
if ((be32_to_cpu(mgm->qp[i]) &
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
652
mgm->qp[loc] = mgm->qp[members_count - 1];
sys/dev/mlx4/mlx4_core/mlx4_mcg.c
653
mgm->qp[members_count - 1] = 0;
sys/dev/mlx4/mlx4_core/mlx4_qp.c
146
ret = mlx4_cmd(dev, 0, qp->qpn, 2,
sys/dev/mlx4/mlx4_core/mlx4_qp.c
150
is_master_qp0(dev, qp, &real_qp0, &proxy_qp0)) {
sys/dev/mlx4/mlx4_core/mlx4_qp.c
151
port = (qp->qpn & 1) + 1;
sys/dev/mlx4/mlx4_core/mlx4_qp.c
175
cpu_to_be16(mlx4_qp_roce_entropy(dev, qp->qpn));
sys/dev/mlx4/mlx4_core/mlx4_qp.c
181
cpu_to_be32(qp->qpn);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
184
qp->qpn | (!!sqd_event << 31),
sys/dev/mlx4/mlx4_core/mlx4_qp.c
188
if (mlx4_is_master(dev) && is_master_qp0(dev, qp, &real_qp0, &proxy_qp0)) {
sys/dev/mlx4/mlx4_core/mlx4_qp.c
189
port = (qp->qpn & 1) + 1;
sys/dev/mlx4/mlx4_core/mlx4_qp.c
213
int sqd_event, struct mlx4_qp *qp)
sys/dev/mlx4/mlx4_core/mlx4_qp.c
216
optpar, sqd_event, qp, 0);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
388
int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp, gfp_t gfp)
sys/dev/mlx4/mlx4_core/mlx4_qp.c
397
qp->qpn = qpn;
sys/dev/mlx4/mlx4_core/mlx4_qp.c
404
err = radix_tree_insert(&dev->qp_table_tree, qp->qpn &
sys/dev/mlx4/mlx4_core/mlx4_qp.c
405
(dev->caps.num_qps - 1), qp);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
410
atomic_set(&qp->refcount, 1);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
411
init_completion(&qp->free);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
491
void mlx4_qp_remove(struct mlx4_dev *dev, struct mlx4_qp *qp)
sys/dev/mlx4/mlx4_core/mlx4_qp.c
497
radix_tree_delete(&dev->qp_table_tree, qp->qpn & (dev->caps.num_qps - 1));
sys/dev/mlx4/mlx4_core/mlx4_qp.c
502
void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp)
sys/dev/mlx4/mlx4_core/mlx4_qp.c
504
if (atomic_dec_and_test(&qp->refcount))
sys/dev/mlx4/mlx4_core/mlx4_qp.c
505
complete(&qp->free);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
506
wait_for_completion(&qp->free);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
508
mlx4_qp_free_icm(dev, qp->qpn);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
53
struct mlx4_qp *qp;
sys/dev/mlx4/mlx4_core/mlx4_qp.c
57
qp = __mlx4_qp_lookup(dev, qpn);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
58
if (qp)
sys/dev/mlx4/mlx4_core/mlx4_qp.c
59
atomic_inc(&qp->refcount);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
63
if (!qp) {
sys/dev/mlx4/mlx4_core/mlx4_qp.c
68
qp->event(qp, event_type);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
70
if (atomic_dec_and_test(&qp->refcount))
sys/dev/mlx4/mlx4_core/mlx4_qp.c
71
complete(&qp->free);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
75
static int is_master_qp0(struct mlx4_dev *dev, struct mlx4_qp *qp, int *real_qp0, int *proxy_qp0)
sys/dev/mlx4/mlx4_core/mlx4_qp.c
80
*proxy_qp0 = qp->qpn >= pf_proxy_offset && qp->qpn <= pf_proxy_offset + 1;
sys/dev/mlx4/mlx4_core/mlx4_qp.c
82
*real_qp0 = qp->qpn >= dev->phys_caps.base_sqpn &&
sys/dev/mlx4/mlx4_core/mlx4_qp.c
83
qp->qpn <= dev->phys_caps.base_sqpn + 1;
sys/dev/mlx4/mlx4_core/mlx4_qp.c
878
int mlx4_qp_query(struct mlx4_dev *dev, struct mlx4_qp *qp,
sys/dev/mlx4/mlx4_core/mlx4_qp.c
888
err = mlx4_cmd_box(dev, 0, mailbox->dma, qp->qpn, 0,
sys/dev/mlx4/mlx4_core/mlx4_qp.c
901
struct mlx4_qp *qp, enum mlx4_qp_state *qp_state)
sys/dev/mlx4/mlx4_core/mlx4_qp.c
918
context, 0, 0, qp);
sys/dev/mlx4/mlx4_core/mlx4_qp.c
92
int sqd_event, struct mlx4_qp *qp, int native)
sys/dev/mlx4/mlx4_core/mlx4_qp.c
935
struct mlx4_qp qp;
sys/dev/mlx4/mlx4_core/mlx4_qp.c
938
qp.qpn = qpn;
sys/dev/mlx4/mlx4_core/mlx4_qp.c
939
err = mlx4_qp_query(dev, &qp, &context);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
1452
enum res_qp_states state, struct res_qp **qp,
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
1506
if (qp)
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
1507
*qp = r;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2907
struct res_qp *qp;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2924
err = qp_res_start_move_to(dev, slave, qpn, RES_QP_HW, &qp, 0);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2927
qp->local_qpn = local_qpn;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2928
qp->sched_queue = 0;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2929
qp->param3 = 0;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2930
qp->vlan_control = 0;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2931
qp->fvl_rx = 0;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2932
qp->pri_path_fl = 0;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2933
qp->vlan_index = 0;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2934
qp->feup = 0;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2935
qp->qpc_flags = be32_to_cpu(qpc->flags);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2968
qp->mtt = mtt;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2970
qp->rcq = rcq;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2972
qp->scq = scq;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
2980
qp->srq = srq;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3683
struct res_qp *qp;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3685
err = get_res(dev, slave, qpn, RES_QP, &qp);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3688
if (qp->com.from_state != RES_QP_HW) {
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3772
struct res_qp *qp;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3796
err = get_res(dev, slave, qpn, RES_QP, &qp);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3799
if (qp->com.from_state != RES_QP_HW) {
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3815
qp->sched_queue = orig_sched_queue;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3816
qp->param3 = orig_param3;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3817
qp->vlan_control = orig_vlan_control;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3818
qp->fvl_rx = orig_fvl_rx;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3819
qp->pri_path_fl = orig_pri_path_fl;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3820
qp->vlan_index = orig_vlan_index;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3821
qp->feup = orig_feup;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3938
struct res_qp *qp;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3940
err = qp_res_start_move_to(dev, slave, qpn, RES_QP_MAPPED, &qp, 0);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3947
atomic_dec(&qp->mtt->ref_count);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3948
atomic_dec(&qp->rcq->ref_count);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3949
atomic_dec(&qp->scq->ref_count);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3950
if (qp->srq)
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
3951
atomic_dec(&qp->srq->ref_count);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4023
static int qp_attach(struct mlx4_dev *dev, int slave, struct mlx4_qp *qp,
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4032
return mlx4_trans_to_dmfs_attach(dev, qp, gid, port,
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4043
return mlx4_qp_attach_common(dev, qp, gid,
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4050
static int qp_detach(struct mlx4_dev *dev, struct mlx4_qp *qp,
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4058
return mlx4_qp_detach_common(dev, qp, gid, prot, type);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4089
struct mlx4_qp qp; /* dummy for calling attach/detach */
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4106
qp.qpn = qpn;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4108
err = qp_attach(dev, slave, &qp, gid, block_loopback, prot,
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4126
err = qp_detach(dev, &qp, gid, prot, type, reg_id);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4135
qp_detach(dev, &qp, gid, prot, type, reg_id);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
450
dev->quotas.qp = dev->caps.num_qps - dev->caps.reserved_qps -
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4550
struct mlx4_qp qp; /* dummy for calling attach/detach */
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4558
qp.qpn = rqp->local_qpn;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4559
(void) mlx4_qp_detach_common(dev, &qp, rgid->gid,
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
460
dev->quotas.qp =
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4630
struct res_qp *qp;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4643
list_for_each_entry_safe(qp, tmp, qp_list, com.list) {
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4645
if (qp->com.owner == slave) {
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4646
qpn = qp->com.res_id;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4647
detach_qp(dev, slave, qp);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4648
state = qp->com.from_state;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4653
rb_erase(&qp->com.node,
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4655
list_del(&qp->com.list);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4662
kfree(qp);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4673
qp->local_qpn, 2,
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4679
slave, qp->local_qpn);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4680
atomic_dec(&qp->rcq->ref_count);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4681
atomic_dec(&qp->scq->ref_count);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4682
atomic_dec(&qp->mtt->ref_count);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4683
if (qp->srq)
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
4684
atomic_dec(&qp->srq->ref_count);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5246
struct res_qp *qp;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5302
list_for_each_entry_safe(qp, tmp, qp_list, com.list) {
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5304
if (qp->com.owner == work->slave) {
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5305
if (qp->com.from_state != RES_QP_HW ||
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5306
!qp->sched_queue || /* no INIT2RTR trans yet */
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5307
mlx4_is_qp_reserved(dev, qp->local_qpn) ||
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5308
qp->qpc_flags & (1 << MLX4_RSS_QPC_FLAG_OFFSET)) {
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5312
port = (qp->sched_queue >> 6 & 1) + 1;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5317
if (MLX4_QP_ST_RC == ((qp->qpc_flags >> 16) & 0xff))
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5323
upd_context->qp_context.param3 = qp->param3;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5324
upd_context->qp_context.pri_path.vlan_control = qp->vlan_control;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5325
upd_context->qp_context.pri_path.fvl_rx = qp->fvl_rx;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5326
upd_context->qp_context.pri_path.vlan_index = qp->vlan_index;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5327
upd_context->qp_context.pri_path.fl = qp->pri_path_fl;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5328
upd_context->qp_context.pri_path.feup = qp->feup;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5330
qp->sched_queue;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5332
upd_context->qp_context.param3 = qp->param3 & ~cpu_to_be32(MLX4_STRIP_VLAN);
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5336
qp->fvl_rx | MLX4_FVL_RX_FORCE_ETH_VLAN;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5338
qp->pri_path_fl | MLX4_FL_ETH_HIDE_CQE_VLAN;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5344
qp->feup | MLX4_FEUP_FORCE_ETH_UP | MLX4_FVL_FORCE_ETH_VLAN;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5346
qp->sched_queue & 0xC7;
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5357
qp->local_qpn & 0xffffff,
sys/dev/mlx4/mlx4_core/mlx4_resource_tracker.c
5362
work->slave, port, qp->local_qpn, err);
sys/dev/mlx4/mlx4_en/en.h
294
struct mlx4_qp qp;
sys/dev/mlx4/mlx4_en/en.h
843
void mlx4_en_sqp_event(struct mlx4_qp *qp, enum mlx4_event event);
sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c
484
struct mlx4_qp qp;
sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c
487
qp.qpn = *qpn;
sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c
491
err = mlx4_unicast_attach(dev, &qp, gid, 0, MLX4_PROT_ETH);
sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c
535
struct mlx4_qp qp;
sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c
538
qp.qpn = qpn;
sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c
542
mlx4_unicast_detach(dev, &qp, gid, MLX4_PROT_ETH);
sys/dev/mlx4/mlx4_en/mlx4_en_resources.c
117
void mlx4_en_sqp_event(struct mlx4_qp *qp, enum mlx4_event event)
sys/dev/mlx4/mlx4_en/mlx4_en_rx.c
924
struct mlx4_qp *qp)
sys/dev/mlx4/mlx4_en/mlx4_en_rx.c
936
err = mlx4_qp_alloc(mdev->dev, qpn, qp, GFP_KERNEL);
sys/dev/mlx4/mlx4_en/mlx4_en_rx.c
941
qp->event = mlx4_en_sqp_event;
sys/dev/mlx4/mlx4_en/mlx4_en_rx.c
955
err = mlx4_qp_to_ready(mdev->dev, &ring->wqres.mtt, context, qp, state);
sys/dev/mlx4/mlx4_en/mlx4_en_rx.c
957
mlx4_qp_remove(mdev->dev, qp);
sys/dev/mlx4/mlx4_en/mlx4_en_rx.c
958
mlx4_qp_free(mdev->dev, qp);
sys/dev/mlx4/mlx4_en/mlx4_en_tx.c
152
err = mlx4_qp_alloc(mdev->dev, ring->qpn, &ring->qp, GFP_KERNEL);
sys/dev/mlx4/mlx4_en/mlx4_en_tx.c
157
ring->qp.event = mlx4_en_sqp_event;
sys/dev/mlx4/mlx4_en/mlx4_en_tx.c
200
mlx4_qp_remove(mdev->dev, &ring->qp);
sys/dev/mlx4/mlx4_en/mlx4_en_tx.c
201
mlx4_qp_free(mdev->dev, &ring->qp);
sys/dev/mlx4/mlx4_en/mlx4_en_tx.c
231
ring->doorbell_qpn = ring->qp.qpn << 8;
sys/dev/mlx4/mlx4_en/mlx4_en_tx.c
239
&ring->qp, &ring->qp_state);
sys/dev/mlx4/mlx4_en/mlx4_en_tx.c
249
MLX4_QP_STATE_RST, NULL, 0, 0, &ring->qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib.h
416
struct ib_qp *qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib.h
442
struct mlx4_ib_demux_pv_qp qp[2];
sys/dev/mlx4/mlx4_ib/mlx4_ib.h
762
int mlx4_ib_destroy_qp(struct ib_qp *qp, struct ib_udata *udata);
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
573
static void use_tunnel_data(struct mlx4_ib_qp *qp, struct mlx4_ib_cq *cq, struct ib_wc *wc,
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
578
ib_dma_sync_single_for_cpu(qp->ibqp.device,
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
579
qp->sqp_proxy_rcv[tail].map,
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
582
hdr = (struct mlx4_ib_proxy_sqp_hdr *) (qp->sqp_proxy_rcv[tail].addr);
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
600
static void mlx4_ib_qp_sw_comp(struct mlx4_ib_qp *qp, int num_entries,
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
607
wq = is_send ? &qp->sq : &qp->rq;
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
619
wc->qp = &qp->ibqp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
627
struct mlx4_ib_qp *qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
633
list_for_each_entry(qp, &cq->send_qp_list, cq_send_list) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
634
mlx4_ib_qp_sw_comp(qp, num_entries, wc + *npolled, npolled, 1);
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
639
list_for_each_entry(qp, &cq->recv_qp_list, cq_recv_list) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
640
mlx4_ib_qp_sw_comp(qp, num_entries, wc + *npolled, npolled, 0);
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
713
wc->qp = &(*cur_qp)->ibqp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
715
if (wc->qp->qp_type == IB_QPT_XRC_TGT) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_cq.c
825
is_eth = (rdma_port_get_link_layer(wc->qp->device,
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1282
size = (tun_qp->qp->qp_type == IB_QPT_UD) ?
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1296
return ib_post_recv(tun_qp->qp, &recv_wr, &bad_recv_wr);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1349
sqp = &sqp_ctx->qp[0];
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1353
sqp = &sqp_ctx->qp[1];
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1357
send_qp = sqp->qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1446
struct mlx4_ib_demux_pv_qp *tun_qp = &ctx->qp[MLX4_TUN_WRID_QPN(wc->wr_id)];
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1567
tun_qp = &ctx->qp[qp_type];
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
158
ext_info->my_qpn = cpu_to_be32(in_wc->qp->qp_num);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1661
tun_qp = &ctx->qp[qp_type];
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1698
tun_qp = &ctx->qp[MLX4_TUN_WRID_QPN(wc.wr_id)];
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1764
tun_qp = &ctx->qp[qp_type];
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1792
tun_qp->qp = ib_create_qp(ctx->pd, &qp_init_attr.init_attr);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1793
if (IS_ERR(tun_qp->qp)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1794
ret = PTR_ERR(tun_qp->qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1795
tun_qp->qp = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1813
ret = ib_modify_qp(tun_qp->qp, &attr, qp_attr_mask_INIT);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1820
ret = ib_modify_qp(tun_qp->qp, &attr, IB_QP_STATE);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1828
ret = ib_modify_qp(tun_qp->qp, &attr, IB_QP_STATE | IB_QP_SQ_PSN);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1846
ib_destroy_qp(tun_qp->qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1847
tun_qp->qp = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
1866
sqp = &ctx->qp[MLX4_TUN_WRID_QPN(wc.wr_id)];
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
201
new_ah = ib_create_ah(dev->send_agent[port_num - 1][0]->qp->pd,
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2022
ib_destroy_qp(ctx->qp[1].qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2023
ctx->qp[1].qp = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2028
ib_destroy_qp(ctx->qp[0].qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2029
ctx->qp[0].qp = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2060
ib_destroy_qp(ctx->qp[0].qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2061
ctx->qp[0].qp = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2064
ib_destroy_qp(ctx->qp[1].qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2065
ctx->qp[1].qp = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2192
ib_destroy_qp(sqp_ctx->qp[0].qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2193
sqp_ctx->qp[0].qp = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2196
ib_destroy_qp(sqp_ctx->qp[1].qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
2197
sqp_ctx->qp[1].qp = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
512
tun_qp = &tun_ctx->qp[0];
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
514
tun_qp = &tun_ctx->qp[1];
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
533
src_qp = tun_qp->qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
686
err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
757
err = mlx4_ib_send_to_slave(dev, slave, port, wc->qp->qp_type, wc, grh, mad);
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
772
if (in_wc && in_wc->qp->qp_num) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_mad.c
777
in_wc->qp->qp_num,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1377
static int __mlx4_ib_default_rules_match(struct ib_qp *qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1383
u8 link_layer = rdma_port_get_link_layer(qp->device, flow_attr->port);
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1433
struct ib_qp *qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1469
static int __mlx4_ib_create_flow(struct ib_qp *qp, struct ib_flow_attr *flow_attr,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1477
struct mlx4_ib_dev *mdev = to_mdev(qp->device);
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1511
ctrl->qpn = cpu_to_be32(qp->qp_num);
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1516
default_flow = __mlx4_ib_default_rules_match(qp, flow_attr);
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1519
mdev, qp, default_table + default_flow,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1528
ret = parse_flow_attr(mdev->dev, qp->qp_num, ib_flow,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1564
static int mlx4_ib_tunnel_steer_add(struct ib_qp *qp, struct ib_flow_attr *flow_attr,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1569
struct mlx4_dev *dev = to_mdev(qp->device)->dev;
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1582
err = mlx4_tunnel_steer_add(to_mdev(qp->device)->dev, ib_spec->eth.val.dst_mac,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1583
flow_attr->port, qp->qp_num,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1639
static struct ib_flow *mlx4_ib_create_flow(struct ib_qp *qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1646
struct mlx4_dev *dev = (to_mdev(qp->device))->dev;
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1649
if (flow_attr->port < 1 || flow_attr->port > qp->device->phys_port_cnt)
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1704
err = __mlx4_ib_create_flow(qp, flow_attr, domain, type[i],
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1713
err = __mlx4_ib_create_flow(qp, flow_attr,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1726
err = mlx4_ib_tunnel_steer_add(qp, flow_attr,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1733
err = mlx4_ib_tunnel_steer_add(qp, flow_attr,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1748
(void)__mlx4_ib_destroy_flow(to_mdev(qp->device)->dev,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1754
(void)__mlx4_ib_destroy_flow(to_mdev(qp->device)->dev,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1767
struct mlx4_ib_dev *mdev = to_mdev(flow_id->qp->device);
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1849
static struct mlx4_ib_gid_entry *find_gid_entry(struct mlx4_ib_qp *qp, u8 *raw)
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
1855
list_for_each_entry_safe(ge, tmp, &qp->gid_list, list) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2200
struct mlx4_ib_qp *qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2211
qp = ibdev->qp1_proxy[port - 1];
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2212
if (qp) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2217
mutex_lock(&qp->mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2218
old_smac = qp->pri.smac;
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2228
if (mlx4_update_qp(ibdev->dev, qp->mqp.qpn, MLX4_UPDATE_QP_SMAC,
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2234
if (qp->pri.smac_port)
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2236
qp->pri.smac = new_smac;
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2237
qp->pri.smac_port = port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2238
qp->pri.smac_index = new_smac_index;
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2244
if (qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
2245
mutex_unlock(&qp->mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c
534
props->max_qp = dev->dev->quotas.qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1000
if (qp->ibqp.qp_type == IB_QPT_XRC_TGT)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1001
return to_mpd(to_mxrcd(qp->ibqp.xrcd)->pd);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1003
return to_mpd(qp->ibqp.pd);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1006
static void get_cqs(struct mlx4_ib_qp *qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1009
switch (qp->ibqp.qp_type) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1011
*send_cq = to_mcq(to_mxrcd(qp->ibqp.xrcd)->cq);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1015
*send_cq = to_mcq(qp->ibqp.send_cq);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1019
*send_cq = to_mcq(qp->ibqp.send_cq);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1020
*recv_cq = to_mcq(qp->ibqp.recv_cq);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1025
static void destroy_qp_common(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1031
if (qp->state != IB_QPS_RESET) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1032
if (mlx4_qp_modify(dev->dev, NULL, to_mlx4_state(qp->state),
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1033
MLX4_QP_STATE_RST, NULL, 0, 0, &qp->mqp))
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1035
qp->mqp.qpn);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1036
if (qp->pri.smac || (!qp->pri.smac && qp->pri.smac_port)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1037
mlx4_unregister_mac(dev->dev, qp->pri.smac_port, qp->pri.smac);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1038
qp->pri.smac = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1039
qp->pri.smac_port = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1041
if (qp->alt.smac) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1042
mlx4_unregister_mac(dev->dev, qp->alt.smac_port, qp->alt.smac);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1043
qp->alt.smac = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1045
if (qp->pri.vid < 0x1000) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1046
mlx4_unregister_vlan(dev->dev, qp->pri.vlan_port, qp->pri.vid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1047
qp->pri.vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1048
qp->pri.candidate_vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1049
qp->pri.update_vid = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1051
if (qp->alt.vid < 0x1000) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1052
mlx4_unregister_vlan(dev->dev, qp->alt.vlan_port, qp->alt.vid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1053
qp->alt.vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1054
qp->alt.candidate_vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1055
qp->alt.update_vid = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1059
get_cqs(qp, &send_cq, &recv_cq);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1065
list_del(&qp->qps_list);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1066
list_del(&qp->cq_send_list);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1067
list_del(&qp->cq_recv_list);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1069
__mlx4_ib_cq_clean(recv_cq, qp->mqp.qpn,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1070
qp->ibqp.srq ? to_msrq(qp->ibqp.srq): NULL);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1072
__mlx4_ib_cq_clean(send_cq, qp->mqp.qpn, NULL);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1075
mlx4_qp_remove(dev->dev, &qp->mqp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1080
mlx4_qp_free(dev->dev, &qp->mqp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1082
if (!is_sqp(dev, qp) && !is_tunnel_qp(dev, qp)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1083
if (qp->flags & MLX4_IB_QP_NETIF)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1084
mlx4_ib_steer_qp_free(dev, qp->mqp.qpn, 1);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1086
mlx4_qp_release_range(dev->dev, qp->mqp.qpn, 1);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1089
mlx4_mtt_cleanup(dev->dev, &qp->mtt);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1092
if (qp->rq.wqe_cnt) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1099
mlx4_ib_db_unmap_user(mcontext, &qp->db);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1102
kvfree(qp->sq.wrid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1103
kvfree(qp->rq.wrid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1104
if (qp->mlx4_ib_qp_type & (MLX4_IB_QPT_PROXY_SMI_OWNER |
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1106
free_proxy_bufs(&dev->ib_dev, qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1107
mlx4_buf_free(dev->dev, qp->buf_size, &qp->buf);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1108
if (qp->rq.wqe_cnt)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1109
mlx4_db_free(dev->dev, &qp->db);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1111
ib_umem_release(qp->umem);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1113
del_gid_entries(qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1137
struct mlx4_ib_qp *qp = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1193
qp = kzalloc(sizeof *qp, gfp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1194
if (!qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1196
qp->pri.vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1197
qp->alt.vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1202
udata, 0, &qp, gfp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1204
kfree(qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1208
qp->ibqp.qp_num = qp->mqp.qpn;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1209
qp->xrcdn = xrcdn;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1232
&qp, gfp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1236
qp->port = init_attr->port_num;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1237
qp->ibqp.qp_num = init_attr->qp_type == IB_QPT_SMI ? 0 :
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1246
return &qp->ibqp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1274
sqp->qp.flags |= MLX4_IB_ROCE_V2_GSI_QP;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
128
return container_of(mqp, struct mlx4_ib_sqp, qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1283
static int _mlx4_ib_destroy_qp(struct ib_qp *qp, struct ib_udata *udata)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1285
struct mlx4_ib_dev *dev = to_mdev(qp->device);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1286
struct mlx4_ib_qp *mqp = to_mqp(qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
131
static int is_tunnel_qp(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1310
int mlx4_ib_destroy_qp(struct ib_qp *qp, struct ib_udata *udata)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1312
struct mlx4_ib_qp *mqp = to_mqp(qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1321
return _mlx4_ib_destroy_qp(qp, udata);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1348
static __be32 to_mlx4_access_flags(struct mlx4_ib_qp *qp, const struct ib_qp_attr *attr,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1358
dest_rd_atomic = qp->resp_depth;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
136
return qp->mqp.qpn >= dev->dev->phys_caps.base_tunnel_sqpn &&
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1363
access_flags = qp->atomic_rd_en;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
137
qp->mqp.qpn < dev->dev->phys_caps.base_tunnel_sqpn +
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
141
static int is_sqp(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
148
qp->mqp.qpn >= dev->dev->phys_caps.base_sqpn &&
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
149
qp->mqp.qpn <= dev->dev->phys_caps.base_sqpn + 3);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1512
static int mlx4_set_path(struct mlx4_ib_dev *dev, const struct ib_qp_attr *qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1518
return _mlx4_set_path(dev, &qp->ah_attr,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1525
const struct ib_qp_attr *qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1530
return _mlx4_set_path(dev, &qp->alt_ah_attr,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1536
static void update_mcg_macs(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1540
list_for_each_entry_safe(ge, tmp, &qp->gid_list, list) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1541
if (!ge->added && mlx4_ib_add_mc(dev, qp, &ge->gid)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1543
ge->port = qp->port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1549
struct mlx4_ib_qp *qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
155
if (qp->mqp.qpn == dev->dev->caps.qp0_proxy[i] ||
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1555
u64_mac = atomic64_read(&dev->iboe.mac[qp->port - 1]);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1557
context->pri_path.sched_queue = MLX4_IB_DEFAULT_SCHED_QUEUE | ((qp->port - 1) << 6);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1558
if (!qp->pri.smac && !qp->pri.smac_port) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1559
smac_index = mlx4_register_mac(dev->dev, qp->port, u64_mac);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
156
qp->mqp.qpn == dev->dev->caps.qp1_proxy[i]) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1561
qp->pri.candidate_smac_index = smac_index;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1562
qp->pri.candidate_smac = u64_mac;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1563
qp->pri.candidate_smac_port = qp->port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1572
static int create_qp_lb_counter(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1578
if (rdma_port_get_link_layer(&dev->ib_dev, qp->port) !=
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1580
!(qp->flags & MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK) ||
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1596
qp->counter_index = new_counter_index;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1598
mutex_lock(&dev->counters_table[qp->port - 1].mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1600
&dev->counters_table[qp->port - 1].counters_list);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1601
mutex_unlock(&dev->counters_table[qp->port - 1].mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1631
struct mlx4_ib_qp *qp = to_mqp(ibqp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1645
rdma_port_get_link_layer(&dev->ib_dev, qp->port) ==
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
165
return !!(qp->flags & MLX4_IB_ROCE_V2_GSI_QP);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1654
(to_mlx4_st(dev, qp->mlx4_ib_qp_type) << 16));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1678
if (qp->flags & MLX4_IB_QP_LSO)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
169
static int is_qp0(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1693
if (qp->rq.wqe_cnt)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1694
context->rq_size_stride = ilog2(qp->rq.wqe_cnt) << 3;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1695
context->rq_size_stride |= qp->rq.wqe_shift - 4;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1697
if (qp->sq.wqe_cnt)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1698
context->sq_size_stride = ilog2(qp->sq.wqe_cnt) << 3;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1699
context->sq_size_stride |= qp->sq.wqe_shift - 4;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1701
if (new_state == IB_QPS_RESET && qp->counter_index)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1702
mlx4_ib_free_qp_counter(dev, qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1705
context->sq_size_stride |= !!qp->sq_no_prefetch << 7;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1706
context->xrcd = cpu_to_be32((u32) qp->xrcdn);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1730
err = create_qp_lb_counter(dev, qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1735
dev->counters_table[qp->port - 1].default_counter;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1736
if (qp->counter_index)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1737
counter_index = qp->counter_index->index;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1742
if (qp->counter_index) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1752
if (qp->flags & MLX4_IB_QP_NETIF) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1753
mlx4_ib_steer_qp_reg(dev, qp, 1);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1758
enum ib_gid_type gid_type = qp->flags & MLX4_IB_ROCE_V2_GSI_QP ?
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
176
qp->mqp.qpn >= dev->dev->phys_caps.base_sqpn &&
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1767
if (qp->mlx4_ib_qp_type & MLX4_IB_QPT_ANY_SRIOV)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
177
qp->mqp.qpn <= dev->dev->phys_caps.base_sqpn + 1);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1775
attr_mask & IB_QP_PORT ? attr->port_num : qp->port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1800
if (mlx4_set_path(dev, attr, attr_mask, qp, &context->pri_path,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
183
if (qp->mqp.qpn == dev->dev->caps.qp0_proxy[i]) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1834
if (mlx4_set_alt_path(dev, attr, attr_mask, qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1844
pd = get_pd(qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1845
get_cqs(qp, &send_cq, &recv_cq);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1852
if (!qp->ibqp.uobject)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1883
context->params2 |= to_mlx4_access_flags(qp, attr, attr_mask);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1899
if (qp->mlx4_ib_qp_type &
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1904
!(qp->mlx4_ib_qp_type & MLX4_IB_QPT_ANY_SRIOV) &&
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
192
static void *get_wqe(struct mlx4_ib_qp *qp, int offset)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1921
if (qp->rq.wqe_cnt && cur_state == IB_QPS_RESET && new_state == IB_QPS_INIT)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1922
context->db_rec_addr = cpu_to_be64(qp->db.dma);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1929
context->pri_path.sched_queue = (qp->port - 1) << 6;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1930
if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_SMI ||
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1931
qp->mlx4_ib_qp_type &
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1934
if (qp->mlx4_ib_qp_type != MLX4_IB_QPT_SMI)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1937
if (qp->mlx4_ib_qp_type & MLX4_IB_QPT_ANY_SRIOV)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
194
return mlx4_buf_offset(&qp->buf, offset);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1941
if (rdma_port_get_link_layer(&dev->ib_dev, qp->port) ==
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1943
if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_TUN_GSI ||
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1944
qp->mlx4_ib_qp_type == MLX4_IB_QPT_GSI)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1947
if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_UD ||
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1948
qp->mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_GSI ||
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1949
qp->mlx4_ib_qp_type == MLX4_IB_QPT_TUN_GSI) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1950
err = handle_eth_ud_smac_index(dev, qp, context);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1955
if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_GSI)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1956
dev->qp1_proxy[qp->port - 1] = qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1961
if (qp->ibqp.qp_type == IB_QPT_RAW_PACKET) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
197
static void *get_recv_wqe(struct mlx4_ib_qp *qp, int n)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
1973
&dev->ib_dev, qp->port) ==
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
199
return get_wqe(qp, qp->rq.offset + (n << qp->rq.wqe_shift));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2001
for (i = 0; i < qp->sq.wqe_cnt; ++i) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2002
ctrl = get_send_wqe(qp, i);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2004
if (qp->sq_max_wqes_per_wr == 1)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2006
1 << (qp->sq.wqe_shift - 4);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2008
stamp_send_wqe(qp, i, 1 << qp->sq.wqe_shift);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2012
err = mlx4_qp_modify(dev->dev, &qp->mtt, to_mlx4_state(cur_state),
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2014
sqd_event, &qp->mqp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2018
qp->state = new_state;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
202
static void *get_send_wqe(struct mlx4_ib_qp *qp, int n)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2021
qp->atomic_rd_en = attr->qp_access_flags;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2023
qp->resp_depth = attr->max_dest_rd_atomic;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2025
qp->port = attr->port_num;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2026
update_mcg_macs(dev, qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2029
qp->alt_port = attr->alt_port_num;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2031
if (is_sqp(dev, qp))
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2032
store_sqp_attrs(to_msqp(qp), attr, attr_mask);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2038
if (is_qp0(dev, qp)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
204
return get_wqe(qp, qp->sq.offset + (n << qp->sq.wqe_shift));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2040
if (mlx4_INIT_PORT(dev->dev, qp->port))
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2042
qp->port);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2046
mlx4_CLOSE_PORT(dev->dev, qp->port);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2055
mlx4_ib_cq_clean(recv_cq, qp->mqp.qpn,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2058
mlx4_ib_cq_clean(send_cq, qp->mqp.qpn, NULL);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2060
qp->rq.head = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2061
qp->rq.tail = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2062
qp->sq.head = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2063
qp->sq.tail = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2064
qp->sq_next_wqe = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2065
if (qp->rq.wqe_cnt)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2066
*qp->db.db = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2068
if (qp->flags & MLX4_IB_QP_NETIF)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2069
mlx4_ib_steer_qp_reg(dev, qp, 0);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2071
if (qp->pri.smac || (!qp->pri.smac && qp->pri.smac_port)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2072
mlx4_unregister_mac(dev->dev, qp->pri.smac_port, qp->pri.smac);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2073
qp->pri.smac = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2074
qp->pri.smac_port = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2076
if (qp->alt.smac) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2077
mlx4_unregister_mac(dev->dev, qp->alt.smac_port, qp->alt.smac);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2078
qp->alt.smac = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2080
if (qp->pri.vid < 0x1000) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2081
mlx4_unregister_vlan(dev->dev, qp->pri.vlan_port, qp->pri.vid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2082
qp->pri.vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2083
qp->pri.candidate_vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2084
qp->pri.update_vid = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2087
if (qp->alt.vid < 0x1000) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2088
mlx4_unregister_vlan(dev->dev, qp->alt.vlan_port, qp->alt.vid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2089
qp->alt.vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2090
qp->alt.candidate_vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2091
qp->alt.update_vid = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2095
if (err && qp->counter_index)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2096
mlx4_ib_free_qp_counter(dev, qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2098
mlx4_ib_steer_qp_reg(dev, qp, 0);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2100
if (qp->pri.candidate_smac ||
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2101
(!qp->pri.candidate_smac && qp->pri.candidate_smac_port)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2103
mlx4_unregister_mac(dev->dev, qp->pri.candidate_smac_port, qp->pri.candidate_smac);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2105
if (qp->pri.smac || (!qp->pri.smac && qp->pri.smac_port))
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2106
mlx4_unregister_mac(dev->dev, qp->pri.smac_port, qp->pri.smac);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2107
qp->pri.smac = qp->pri.candidate_smac;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2108
qp->pri.smac_index = qp->pri.candidate_smac_index;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2109
qp->pri.smac_port = qp->pri.candidate_smac_port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2111
qp->pri.candidate_smac = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2112
qp->pri.candidate_smac_index = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2113
qp->pri.candidate_smac_port = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2115
if (qp->alt.candidate_smac) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2117
mlx4_unregister_mac(dev->dev, qp->alt.candidate_smac_port, qp->alt.candidate_smac);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2119
if (qp->alt.smac)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2120
mlx4_unregister_mac(dev->dev, qp->alt.smac_port, qp->alt.smac);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2121
qp->alt.smac = qp->alt.candidate_smac;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2122
qp->alt.smac_index = qp->alt.candidate_smac_index;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2123
qp->alt.smac_port = qp->alt.candidate_smac_port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2125
qp->alt.candidate_smac = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2126
qp->alt.candidate_smac_index = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2127
qp->alt.candidate_smac_port = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2130
if (qp->pri.update_vid) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2132
if (qp->pri.candidate_vid < 0x1000)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2133
mlx4_unregister_vlan(dev->dev, qp->pri.candidate_vlan_port,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2134
qp->pri.candidate_vid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2136
if (qp->pri.vid < 0x1000)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2137
mlx4_unregister_vlan(dev->dev, qp->pri.vlan_port,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2138
qp->pri.vid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2139
qp->pri.vid = qp->pri.candidate_vid;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2140
qp->pri.vlan_port = qp->pri.candidate_vlan_port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2141
qp->pri.vlan_index = qp->pri.candidate_vlan_index;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2143
qp->pri.candidate_vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2144
qp->pri.update_vid = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2147
if (qp->alt.update_vid) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2149
if (qp->alt.candidate_vid < 0x1000)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2150
mlx4_unregister_vlan(dev->dev, qp->alt.candidate_vlan_port,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2151
qp->alt.candidate_vid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2153
if (qp->alt.vid < 0x1000)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2154
mlx4_unregister_vlan(dev->dev, qp->alt.vlan_port,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2155
qp->alt.vid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2156
qp->alt.vid = qp->alt.candidate_vid;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2157
qp->alt.vlan_port = qp->alt.candidate_vlan_port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2158
qp->alt.vlan_index = qp->alt.candidate_vlan_index;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
216
static void stamp_send_wqe(struct mlx4_ib_qp *qp, int n, int size)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2160
qp->alt.candidate_vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2161
qp->alt.update_vid = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2171
struct mlx4_ib_qp *qp = to_mqp(ibqp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2174
mutex_lock(&qp->mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2176
cur_state = attr_mask & IB_QP_CUR_STATE ? attr->cur_qp_state : qp->state;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2220
int p = attr_mask & IB_QP_PORT ? attr->port_num : qp->port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2259
mutex_unlock(&qp->mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
226
if (qp->sq_max_wqes_per_wr > 1) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
227
s = roundup(size, 1U << qp->sq.wqe_shift);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
229
ind = (i >> qp->sq.wqe_shift) + n;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
230
stamp = ind & qp->sq.wqe_cnt ? cpu_to_be32(0x7fffffff) :
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2301
struct mlx4_ib_dev *mdev = to_mdev(sqp->qp.ibqp.device);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
232
buf = get_send_wqe(qp, ind & (qp->sq.wqe_cnt - 1));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2323
if (sqp->qp.mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_SMI_OWNER)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2328
if (sqp->qp.mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_SMI_OWNER) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
233
wqe = buf + (i & ((1 << qp->sq.wqe_shift) - 1));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2345
ib_get_cached_pkey(ib_dev, sqp->qp.port, 0, &pkey);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2347
if (sqp->qp.mlx4_ib_qp_type == MLX4_IB_QPT_TUN_SMI_OWNER)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2351
cpu_to_be32(mdev->dev->caps.qp0_tunnel[sqp->qp.port - 1]);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2355
if (mlx4_get_parav_qkey(mdev->dev, sqp->qp.mqp.qpn, &qkey))
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2358
if (vf_get_qp0_qkey(mdev->dev, sqp->qp.mqp.qpn, &qkey))
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2362
sqp->ud_header.deth.source_qpn = cpu_to_be32(sqp->qp.mqp.qpn);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
237
ctrl = buf = get_send_wqe(qp, n & (qp->sq.wqe_cnt - 1));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2430
struct ib_device *ib_dev = sqp->qp.ibqp.device;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2453
is_eth = rdma_port_get_link_layer(sqp->qp.ibqp.device, sqp->qp.port) == IB_LINK_LAYER_ETHERNET;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
246
static void post_nop_wqe(struct mlx4_ib_qp *qp, int n, int size)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2524
demux[sqp->qp.port - 1].
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2527
to_mdev(ib_dev)->sriov.demux[sqp->qp.port - 1].
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
253
ctrl = wqe = get_send_wqe(qp, n & (qp->sq.wqe_cnt - 1));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
256
if (qp->ibqp.qp_type == IB_QPT_UD) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2562
mlx->flags |= cpu_to_be32((!sqp->qp.ibqp.qp_num ? MLX4_WQE_MLX_VL15 : 0) |
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
260
av->port_pd = cpu_to_be32((qp->port << 24) | to_mpd(qp->ibqp.pd)->pdn);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2611
sqp->ud_header.lrh.virtual_lane = !sqp->qp.ibqp.qp_num ? 15 :
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2614
sqp->qp.port);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2615
if (sqp->qp.ibqp.qp_num && sqp->ud_header.lrh.virtual_lane == 15)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2621
if (!sqp->qp.ibqp.qp_num)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2622
ib_get_cached_pkey(ib_dev, sqp->qp.port, sqp->pkey_index, &pkey);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2624
ib_get_cached_pkey(ib_dev, sqp->qp.port, wr->pkey_index, &pkey);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2630
sqp->ud_header.deth.source_qpn = cpu_to_be32(sqp->qp.ibqp.qp_num);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
278
(n & qp->sq.wqe_cnt ? cpu_to_be32(1U << 31) : 0);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
280
stamp_send_wqe(qp, n + qp->sq_spare_wqes, size);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
284
static inline unsigned pad_wraparound(struct mlx4_ib_qp *qp, int ind)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
286
unsigned s = qp->sq.wqe_cnt - (ind & (qp->sq.wqe_cnt - 1));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
287
if (unlikely(s < qp->sq_max_wqes_per_wr)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
288
post_nop_wqe(qp, ind, s << qp->sq.wqe_shift);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2890
struct mlx4_ib_qp *qp, unsigned *lso_seg_len,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2898
if (unlikely(!(qp->flags & MLX4_IB_QP_LSO) &&
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2899
wr->wr.num_sge > qp->sq.max_gs - (halign >> 4)))
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2934
struct mlx4_ib_qp *qp = to_mqp(ibqp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
294
static void mlx4_ib_qp_event(struct mlx4_qp *qp, enum mlx4_event type)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2952
if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_GSI) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2953
struct mlx4_ib_sqp *sqp = to_msqp(qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2966
qp = (gid_attr.gid_type == IB_GID_TYPE_ROCE_UDP_ENCAP) ?
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2967
to_mqp(sqp->roce_v2_gsi) : qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
297
struct ib_qp *ibqp = &to_mibqp(qp)->ibqp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2975
spin_lock_irqsave(&qp->sq.lock, flags);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2983
ind = qp->sq_next_wqe;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2989
if (mlx4_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
2995
if (unlikely(wr->num_sge > qp->sq.max_gs)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
300
to_mibqp(qp)->port = to_mibqp(qp)->alt_port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3001
ctrl = wqe = get_send_wqe(qp, ind & (qp->sq.wqe_cnt - 1));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3002
qp->sq.wrid[(qp->sq.head + nreq) & (qp->sq.wqe_cnt - 1)] = wr->wr_id;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3012
qp->sq_signal_bits;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3019
switch (qp->mlx4_ib_qp_type) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
304
event.element.qp = ibqp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3083
err = build_sriov_qp0_header(to_msqp(qp), ud_wr(wr),
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3107
err = build_lso_seg(wqe, ud_wr(wr), qp, &seglen,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3120
err = build_sriov_qp0_header(to_msqp(qp), ud_wr(wr),
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3144
qp->mlx4_ib_qp_type);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3154
err = build_mlx_header(to_msqp(qp), ud_wr(wr), ctrl,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3180
if (unlikely(qp->mlx4_ib_qp_type == MLX4_IB_QPT_SMI ||
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3181
qp->mlx4_ib_qp_type == MLX4_IB_QPT_GSI ||
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3182
qp->mlx4_ib_qp_type &
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3216
(ind & qp->sq.wqe_cnt ? cpu_to_be32(1U << 31) : 0) | blh;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3218
stamp = ind + qp->sq_spare_wqes;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3219
ind += DIV_ROUND_UP(size * 16, 1U << qp->sq.wqe_shift);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3231
stamp_send_wqe(qp, stamp, size * 16);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3232
ind = pad_wraparound(qp, ind);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3238
qp->sq.head += nreq;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3246
writel(qp->doorbell_qpn,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3255
stamp_send_wqe(qp, stamp, size * 16);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3257
ind = pad_wraparound(qp, ind);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3258
qp->sq_next_wqe = ind;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3261
spin_unlock_irqrestore(&qp->sq.lock, flags);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3269
struct mlx4_ib_qp *qp = to_mqp(ibqp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3279
max_gs = qp->rq.max_gs;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3280
spin_lock_irqsave(&qp->rq.lock, flags);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3289
ind = qp->rq.head & (qp->rq.wqe_cnt - 1);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3292
if (mlx4_wq_overflow(&qp->rq, nreq, qp->ibqp.recv_cq)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3298
if (unlikely(wr->num_sge > qp->rq.max_gs)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3304
scat = get_recv_wqe(qp, ind);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3306
if (qp->mlx4_ib_qp_type & (MLX4_IB_QPT_PROXY_SMI_OWNER |
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3309
qp->sqp_proxy_rcv[ind].map,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3316
scat->addr = cpu_to_be64(qp->sqp_proxy_rcv[ind].map);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
332
"on QP %06x\n", type, qp->qpn);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3330
qp->rq.wrid[ind] = wr->wr_id;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3332
ind = (ind + 1) & (qp->rq.wqe_cnt - 1);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3337
qp->rq.head += nreq;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3345
*qp->db.db = cpu_to_be32(qp->rq.head & 0xffff);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3348
spin_unlock_irqrestore(&qp->rq.lock, flags);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3432
struct mlx4_ib_qp *qp = to_mqp(ibqp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3437
mutex_lock(&qp->mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3439
if (qp->state == IB_QPS_RESET) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3444
err = mlx4_qp_query(dev->dev, &qp->mqp, &context);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3452
qp->state = to_ib_qp_state(mlx4_state);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3453
qp_attr->qp_state = qp->state;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3464
if (qp->ibqp.qp_type == IB_QPT_RC || qp->ibqp.qp_type == IB_QPT_UC) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3473
qp_attr->port_num = qp->port;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3493
qp_attr->cap.max_recv_wr = qp->rq.wqe_cnt;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3494
qp_attr->cap.max_recv_sge = qp->rq.max_gs;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3497
qp_attr->cap.max_send_wr = qp->sq.wqe_cnt;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3498
qp_attr->cap.max_send_sge = qp->sq.max_gs;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3513
if (qp->flags & MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3516
if (qp->flags & MLX4_IB_QP_LSO)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3519
if (qp->flags & MLX4_IB_QP_NETIF)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3523
qp->sq_signal_bits == cpu_to_be32(MLX4_WQE_CTRL_CQ_UPDATE) ?
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
3527
mutex_unlock(&qp->mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
387
int is_user, int has_rq, struct mlx4_ib_qp *qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
398
qp->rq.wqe_cnt = qp->rq.max_gs = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
404
qp->rq.wqe_cnt = roundup_pow_of_two(max(1U, cap->max_recv_wr));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
405
qp->rq.max_gs = roundup_pow_of_two(max(1U, cap->max_recv_sge));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
406
qp->rq.wqe_shift = ilog2(qp->rq.max_gs * sizeof (struct mlx4_wqe_data_seg));
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
411
cap->max_recv_wr = qp->rq.max_post = qp->rq.wqe_cnt;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
412
cap->max_recv_sge = qp->rq.max_gs;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
414
cap->max_recv_wr = qp->rq.max_post =
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
415
min(dev->dev->caps.max_wqes - MLX4_IB_SQ_MAX_SPARE, qp->rq.wqe_cnt);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
416
cap->max_recv_sge = min(qp->rq.max_gs,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
425
enum mlx4_ib_qp_type type, struct mlx4_ib_qp *qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
433
cap->max_inline_data + send_wqe_overhead(type, qp->flags) +
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
448
send_wqe_overhead(type, qp->flags);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
485
qp->sq_signal_bits && BITS_PER_LONG == 64 &&
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
489
qp->sq.wqe_shift = ilog2(64);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
491
qp->sq.wqe_shift = order_base_2(s);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
494
qp->sq_max_wqes_per_wr = DIV_ROUND_UP(s, 1U << qp->sq.wqe_shift);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
500
qp->sq_spare_wqes = (2048 >> qp->sq.wqe_shift) + qp->sq_max_wqes_per_wr;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
501
qp->sq.wqe_cnt = roundup_pow_of_two(cap->max_send_wr *
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
502
qp->sq_max_wqes_per_wr +
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
503
qp->sq_spare_wqes);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
505
if (qp->sq.wqe_cnt <= dev->dev->caps.max_wqes)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
508
if (qp->sq_max_wqes_per_wr <= 1)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
511
++qp->sq.wqe_shift;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
514
qp->sq.max_gs = (min(dev->dev->caps.max_sq_desc_sz,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
515
(qp->sq_max_wqes_per_wr << qp->sq.wqe_shift)) -
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
516
send_wqe_overhead(type, qp->flags)) /
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
519
qp->buf_size = (qp->rq.wqe_cnt << qp->rq.wqe_shift) +
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
520
(qp->sq.wqe_cnt << qp->sq.wqe_shift);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
521
if (qp->rq.wqe_shift > qp->sq.wqe_shift) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
522
qp->rq.offset = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
523
qp->sq.offset = qp->rq.wqe_cnt << qp->rq.wqe_shift;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
525
qp->rq.offset = qp->sq.wqe_cnt << qp->sq.wqe_shift;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
526
qp->sq.offset = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
529
cap->max_send_wr = qp->sq.max_post =
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
530
(qp->sq.wqe_cnt - qp->sq_spare_wqes) / qp->sq_max_wqes_per_wr;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
531
cap->max_send_sge = min(qp->sq.max_gs,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
541
struct mlx4_ib_qp *qp,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
551
qp->sq.wqe_cnt = 1 << ucmd->log_sq_bb_count;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
552
qp->sq.wqe_shift = ucmd->log_sq_stride;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
554
qp->buf_size = (qp->rq.wqe_cnt << qp->rq.wqe_shift) +
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
555
(qp->sq.wqe_cnt << qp->sq.wqe_shift);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
560
static int alloc_proxy_bufs(struct ib_device *dev, struct mlx4_ib_qp *qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
564
qp->sqp_proxy_rcv =
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
565
kmalloc(sizeof (struct mlx4_ib_buf) * qp->rq.wqe_cnt,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
567
if (!qp->sqp_proxy_rcv)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
569
for (i = 0; i < qp->rq.wqe_cnt; i++) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
570
qp->sqp_proxy_rcv[i].addr =
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
573
if (!qp->sqp_proxy_rcv[i].addr)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
575
qp->sqp_proxy_rcv[i].map =
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
576
ib_dma_map_single(dev, qp->sqp_proxy_rcv[i].addr,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
579
if (ib_dma_mapping_error(dev, qp->sqp_proxy_rcv[i].map)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
580
kfree(qp->sqp_proxy_rcv[i].addr);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
589
ib_dma_unmap_single(dev, qp->sqp_proxy_rcv[i].map,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
592
kfree(qp->sqp_proxy_rcv[i].addr);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
594
kfree(qp->sqp_proxy_rcv);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
595
qp->sqp_proxy_rcv = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
599
static void free_proxy_bufs(struct ib_device *dev, struct mlx4_ib_qp *qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
603
for (i = 0; i < qp->rq.wqe_cnt; i++) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
604
ib_dma_unmap_single(dev, qp->sqp_proxy_rcv[i].map,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
607
kfree(qp->sqp_proxy_rcv[i].addr);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
609
kfree(qp->sqp_proxy_rcv);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
631
struct mlx4_ib_qp *qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
633
mutex_lock(&dev->counters_table[qp->port - 1].mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
634
mlx4_counter_free(dev->dev, qp->counter_index->index);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
635
list_del(&qp->counter_index->list);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
636
mutex_unlock(&dev->counters_table[qp->port - 1].mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
638
kfree(qp->counter_index);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
639
qp->counter_index = NULL;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
651
struct mlx4_ib_qp *qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
704
qp = &sqp->qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
705
qp->pri.vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
706
qp->alt.vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
708
qp = kzalloc(sizeof (struct mlx4_ib_qp), gfp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
709
if (!qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
711
qp->pri.vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
712
qp->alt.vid = 0xFFFF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
715
qp = *caller_qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
717
qp->mlx4_ib_qp_type = qp_type;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
719
mutex_init(&qp->mutex);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
720
spin_lock_init(&qp->sq.lock);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
721
spin_lock_init(&qp->rq.lock);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
722
INIT_LIST_HEAD(&qp->gid_list);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
723
INIT_LIST_HEAD(&qp->steering_rules);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
725
qp->state = IB_QPS_RESET;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
727
qp->sq_signal_bits = cpu_to_be32(MLX4_WQE_CTRL_CQ_UPDATE);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
729
err = set_rq_size(dev, &init_attr->cap, !!pd->uobject, qp_has_rq(init_attr), qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
741
qp->sq_no_prefetch = ucmd.sq_no_prefetch;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
743
err = set_user_sq_size(dev, qp, &ucmd);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
747
qp->umem = ib_umem_get(pd->uobject->context, ucmd.buf_addr,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
748
qp->buf_size, 0, 0);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
749
if (IS_ERR(qp->umem)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
750
err = PTR_ERR(qp->umem);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
754
err = mlx4_mtt_init(dev->dev, ib_umem_page_count(qp->umem),
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
755
ilog2(qp->umem->page_size), &qp->mtt);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
759
err = mlx4_ib_umem_write_mtt(dev, &qp->mtt, qp->umem);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
765
ucmd.db_addr, &qp->db);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
770
qp->sq_no_prefetch = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
773
qp->flags |= MLX4_IB_QP_LSO;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
778
qp->flags |= MLX4_IB_QP_NETIF;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
785
qp_type, qp, true);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
790
err = mlx4_db_alloc(dev->dev, &qp->db, 0, gfp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
794
*qp->db.db = 0;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
797
if (mlx4_buf_alloc(dev->dev, qp->buf_size, qp->buf_size,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
798
&qp->buf, gfp)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
802
qp, false);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
806
if (mlx4_buf_alloc(dev->dev, qp->buf_size,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
807
PAGE_SIZE * 2, &qp->buf, gfp)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
813
err = mlx4_mtt_init(dev->dev, qp->buf.npages, qp->buf.page_shift,
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
814
&qp->mtt);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
818
err = mlx4_buf_write_mtt(dev->dev, &qp->mtt, &qp->buf, gfp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
822
qp->sq.wrid = kmalloc_array(qp->sq.wqe_cnt, sizeof(u64),
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
824
if (!qp->sq.wrid)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
825
qp->sq.wrid = __vmalloc(qp->sq.wqe_cnt * sizeof(u64),
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
827
qp->rq.wrid = kmalloc_array(qp->rq.wqe_cnt, sizeof(u64),
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
829
if (!qp->rq.wrid)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
830
qp->rq.wrid = __vmalloc(qp->rq.wqe_cnt * sizeof(u64),
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
832
if (!qp->sq.wrid || !qp->rq.wrid) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
839
if (qp->mlx4_ib_qp_type & (MLX4_IB_QPT_PROXY_SMI_OWNER |
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
841
if (alloc_proxy_bufs(pd->device, qp)) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
857
if (qp->flags & MLX4_IB_QP_NETIF)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
867
qp->flags |= MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
869
err = mlx4_qp_alloc(dev->dev, qpn, &qp->mqp, gfp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
87
struct mlx4_ib_qp qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
874
qp->mqp.qpn |= (1 << 23);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
881
qp->doorbell_qpn = swab32(qp->mqp.qpn << 8);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
883
qp->mqp.event = mlx4_ib_qp_event;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
885
*caller_qp = qp;
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
893
list_add_tail(&qp->qps_list, &dev->qp_list);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
898
list_add_tail(&qp->cq_send_list, &mcq->send_qp_list);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
900
list_add_tail(&qp->cq_recv_list, &mcq->recv_qp_list);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
908
if (qp->flags & MLX4_IB_QP_NETIF)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
914
if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_GSI)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
915
free_proxy_bufs(pd->device, qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
919
mlx4_ib_db_unmap_user(to_mucontext(pd->uobject->context), &qp->db);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
921
kvfree(qp->sq.wrid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
922
kvfree(qp->rq.wrid);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
926
mlx4_mtt_cleanup(dev->dev, &qp->mtt);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
930
ib_umem_release(qp->umem);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
932
mlx4_buf_free(dev->dev, qp->buf_size, &qp->buf);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
936
mlx4_db_free(dev->dev, &qp->db);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
940
kfree(qp);
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
988
static void del_gid_entries(struct mlx4_ib_qp *qp)
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
992
list_for_each_entry_safe(ge, tmp, &qp->gid_list, list) {
sys/dev/mlx4/mlx4_ib/mlx4_ib_qp.c
998
static struct mlx4_ib_pd *get_pd(struct mlx4_ib_qp *qp)
sys/dev/mlx4/qp.h
483
int sqd_event, struct mlx4_qp *qp);
sys/dev/mlx4/qp.h
485
int mlx4_qp_query(struct mlx4_dev *dev, struct mlx4_qp *qp,
sys/dev/mlx4/qp.h
490
struct mlx4_qp *qp, enum mlx4_qp_state *qp_state);
sys/dev/mlx4/qp.h
497
void mlx4_qp_remove(struct mlx4_dev *dev, struct mlx4_qp *qp);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
100
qp->pid = curthread->td_proc->p_pid;
sys/dev/mlx5/mlx5_core/mlx5_qp.c
106
struct mlx5_core_qp *qp, int rsc_type)
sys/dev/mlx5/mlx5_core/mlx5_qp.c
112
radix_tree_delete(&table->tree, qp->qpn | (rsc_type << 24));
sys/dev/mlx5/mlx5_core/mlx5_qp.c
115
mlx5_core_put_rsc((struct mlx5_core_rsc_common *)qp);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
116
wait_for_completion(&qp->common.free);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
120
struct mlx5_core_qp *qp,
sys/dev/mlx5/mlx5_core/mlx5_qp.c
134
qp->uid = MLX5_GET(create_qp_in, in, uid);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
135
qp->qpn = MLX5_GET(create_qp_out, out, qpn);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
136
mlx5_core_dbg(dev, "qpn = 0x%x\n", qp->qpn);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
138
err = create_qprqsq_common(dev, qp, MLX5_RES_QP);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
148
MLX5_SET(destroy_qp_in, din, qpn, qp->qpn);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
149
MLX5_SET(destroy_qp_in, din, uid, qp->uid);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
156
struct mlx5_core_qp *qp)
sys/dev/mlx5/mlx5_core/mlx5_qp.c
163
destroy_qprqsq_common(dev, qp, MLX5_RES_QP);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
166
MLX5_SET(destroy_qp_in, in, qpn, qp->qpn);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
167
MLX5_SET(destroy_qp_in, in, uid, qp->uid);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
292
struct mlx5_core_qp *qp)
sys/dev/mlx5/mlx5_core/mlx5_qp.c
297
err = modify_qp_mbox_alloc(dev, opcode, qp->qpn,
sys/dev/mlx5/mlx5_core/mlx5_qp.c
298
opt_param_mask, qpc, &mbox, qp->uid);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
321
int mlx5_core_qp_query(struct mlx5_core_dev *dev, struct mlx5_core_qp *qp,
sys/dev/mlx5/mlx5_core/mlx5_qp.c
327
MLX5_SET(query_qp_in, in, qpn, qp->qpn);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
66
struct mlx5_core_qp *qp;
sys/dev/mlx5/mlx5_core/mlx5_qp.c
73
qp = (struct mlx5_core_qp *)common;
sys/dev/mlx5/mlx5_core/mlx5_qp.c
74
qp->event(qp, event_type);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
85
struct mlx5_core_qp *qp, int rsc_type)
sys/dev/mlx5/mlx5_core/mlx5_qp.c
90
qp->common.res = rsc_type;
sys/dev/mlx5/mlx5_core/mlx5_qp.c
93
err = radix_tree_insert(&table->tree, qp->qpn | (rsc_type << 24), qp);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
98
atomic_set(&qp->common.refcount, 1);
sys/dev/mlx5/mlx5_core/mlx5_qp.c
99
init_completion(&qp->common.free);
sys/dev/mlx5/mlx5_fpga/conn.h
82
} qp;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
108
if (unlikely(conn->qp.rq.pc - conn->qp.rq.cc >= conn->qp.rq.size)) {
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
113
ix = conn->qp.rq.pc & (conn->qp.rq.size - 1);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
114
data = mlx5_wq_cyc_get_wqe(&conn->qp.wq.rq, ix);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
119
conn->qp.rq.pc++;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
120
conn->qp.rq.bufs[ix] = buf;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
124
*conn->qp.wq.rq.db = cpu_to_be32(conn->qp.rq.pc & 0xffff);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
133
*conn->qp.wq.sq.db = cpu_to_be32(conn->qp.sq.pc);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
147
ix = conn->qp.sq.pc & (conn->qp.sq.size - 1);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
149
ctrl = mlx5_wq_cyc_get_wqe(&conn->qp.wq.sq, ix);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
164
ctrl->opmod_idx_opcode = cpu_to_be32(((conn->qp.sq.pc & 0xffff) << 8) |
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
166
ctrl->qpn_ds = cpu_to_be32(size | (conn->qp.mqp.qpn << 8));
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
168
conn->qp.sq.pc++;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
169
conn->qp.sq.bufs[ix] = buf;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
179
if (!conn->qp.active)
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
186
spin_lock_irqsave(&conn->qp.sq.lock, flags);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
188
if (conn->qp.sq.pc - conn->qp.sq.cc >= conn->qp.sq.size) {
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
189
list_add_tail(&buf->list, &conn->qp.sq.backlog);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
196
spin_unlock_irqrestore(&conn->qp.sq.lock, flags);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
253
ix = be16_to_cpu(cqe->wqe_counter) & (conn->qp.rq.size - 1);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
254
buf = conn->qp.rq.bufs[ix];
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
255
conn->qp.rq.bufs[ix] = NULL;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
258
conn->qp.rq.cc++;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
269
if (unlikely(status || !conn->qp.active)) {
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
270
conn->qp.active = false;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
295
spin_lock_irqsave(&conn->qp.sq.lock, flags);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
297
ix = be16_to_cpu(cqe->wqe_counter) & (conn->qp.sq.size - 1);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
298
buf = conn->qp.sq.bufs[ix];
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
299
conn->qp.sq.bufs[ix] = NULL;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
300
conn->qp.sq.cc++;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
303
if (unlikely(!list_empty(&conn->qp.sq.backlog))) {
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
304
if (likely(conn->qp.active)) {
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
305
nextbuf = list_first_entry(&conn->qp.sq.backlog,
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
312
spin_unlock_irqrestore(&conn->qp.sq.lock, flags);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
327
conn->qp.active = false;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
376
conn = container_of(mqp, struct mlx5_fpga_conn, qp.mqp);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
410
if (unlikely(!conn->qp.active))
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
420
if (unlikely(!conn->qp.active))
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
523
return mlx5_wq_qp_create(mdev, &wqp, qpc, &conn->qp.wq,
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
524
&conn->qp.wq_ctrl);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
536
conn->qp.rq.pc = 0;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
537
conn->qp.rq.cc = 0;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
538
conn->qp.rq.size = roundup_pow_of_two(rx_size);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
539
conn->qp.sq.pc = 0;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
540
conn->qp.sq.cc = 0;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
541
conn->qp.sq.size = roundup_pow_of_two(tx_size);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
544
MLX5_SET(qpc, temp_qpc, log_rq_size, ilog2(conn->qp.rq.size));
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
545
MLX5_SET(qpc, temp_qpc, log_sq_size, ilog2(conn->qp.sq.size));
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
550
conn->qp.rq.bufs = kvzalloc(sizeof(conn->qp.rq.bufs[0]) *
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
551
conn->qp.rq.size, GFP_KERNEL);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
552
if (!conn->qp.rq.bufs) {
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
557
conn->qp.sq.bufs = kvzalloc(sizeof(conn->qp.sq.bufs[0]) *
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
558
conn->qp.sq.size, GFP_KERNEL);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
559
if (!conn->qp.sq.bufs) {
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
566
conn->qp.wq_ctrl.buf.npages;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
576
conn->qp.wq_ctrl.buf.page_shift - MLX5_ADAPTER_PAGE_SHIFT);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
583
MLX5_SET(qpc, qpc, log_rq_size, ilog2(conn->qp.rq.size));
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
585
MLX5_SET(qpc, qpc, log_sq_size, ilog2(conn->qp.sq.size));
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
588
MLX5_SET64(qpc, qpc, dbr_addr, conn->qp.wq_ctrl.db.dma);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
592
mlx5_fill_page_array(&conn->qp.wq_ctrl.buf,
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
595
err = mlx5_core_create_qp(mdev, &conn->qp.mqp, in, inlen);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
599
conn->qp.mqp.event = mlx5_fpga_conn_event;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
600
mlx5_fpga_dbg(fdev, "Created QP #0x%x\n", conn->qp.mqp.qpn);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
605
kvfree(conn->qp.sq.bufs);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
607
kvfree(conn->qp.rq.bufs);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
609
mlx5_wq_destroy(&conn->qp.wq_ctrl);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
619
for (ix = 0; ix < conn->qp.rq.size; ix++) {
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
620
if (!conn->qp.rq.bufs[ix])
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
622
mlx5_fpga_conn_unmap_buf(conn, conn->qp.rq.bufs[ix]);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
623
kfree(conn->qp.rq.bufs[ix]);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
624
conn->qp.rq.bufs[ix] = NULL;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
633
for (ix = 0; ix < conn->qp.sq.size; ix++) {
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
634
buf = conn->qp.sq.bufs[ix];
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
637
conn->qp.sq.bufs[ix] = NULL;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
643
list_for_each_entry_safe(buf, temp, &conn->qp.sq.backlog, list) {
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
653
mlx5_core_destroy_qp(conn->fdev->mdev, &conn->qp.mqp);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
656
kvfree(conn->qp.sq.bufs);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
657
kvfree(conn->qp.rq.bufs);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
658
mlx5_wq_destroy(&conn->qp.wq_ctrl);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
665
mlx5_fpga_dbg(conn->fdev, "Modifying QP %u to RST\n", conn->qp.mqp.qpn);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
668
&conn->qp.mqp);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
678
mlx5_fpga_dbg(conn->fdev, "Modifying QP %u to INIT\n", conn->qp.mqp.qpn);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
693
MLX5_SET64(qpc, qpc, dbr_addr, conn->qp.wq_ctrl.db.dma);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
696
&conn->qp.mqp);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
734
conn->qp.sgid_index);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
741
&conn->qp.mqp);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
778
&conn->qp.mqp);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
813
conn->qp.active = true;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
858
INIT_LIST_HEAD(&conn->qp.sq.backlog);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
860
spin_lock_init(&conn->qp.sq.lock);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
879
err = mlx5_core_reserved_gid_alloc(fdev->mdev, &conn->qp.sgid_index);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
886
err = mlx5_core_roce_gid_set(fdev->mdev, conn->qp.sgid_index,
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
895
mlx5_fpga_dbg(fdev, "Reserved SGID index %u\n", conn->qp.sgid_index);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
925
MLX5_SET(fpga_qpc, conn->fpga_qpc, remote_qpn, conn->qp.mqp.qpn);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
954
mlx5_core_roce_gid_set(fdev->mdev, conn->qp.sgid_index, 0, 0, NULL,
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
957
mlx5_core_reserved_gid_free(fdev->mdev, conn->qp.sgid_index);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
970
conn->qp.active = false;
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
976
&conn->qp.mqp);
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
982
mlx5_core_roce_gid_set(conn->fdev->mdev, conn->qp.sgid_index, 0, 0,
sys/dev/mlx5/mlx5_fpga/mlx5fpga_conn.c
984
mlx5_core_reserved_gid_free(conn->fdev->mdev, conn->qp.sgid_index);
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1017
void mlx5_ib_mr_pfault_handler(struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1019
void mlx5_ib_odp_create_qp(struct mlx5_ib_qp *qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1024
void mlx5_ib_qp_disable_pagefaults(struct mlx5_ib_qp *qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1025
void mlx5_ib_qp_enable_pagefaults(struct mlx5_ib_qp *qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1034
static inline void mlx5_ib_odp_create_qp(struct mlx5_ib_qp *qp) {}
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1039
static inline void mlx5_ib_qp_disable_pagefaults(struct mlx5_ib_qp *qp) {}
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1040
static inline void mlx5_ib_qp_enable_pagefaults(struct mlx5_ib_qp *qp) {}
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1061
int mlx5_ib_gsi_destroy_qp(struct ib_qp *qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1062
int mlx5_ib_gsi_modify_qp(struct ib_qp *qp, struct ib_qp_attr *attr,
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1064
int mlx5_ib_gsi_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr,
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1067
int mlx5_ib_gsi_post_send(struct ib_qp *qp, const struct ib_send_wr *wr,
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
1069
int mlx5_ib_gsi_post_recv(struct ib_qp *qp, const struct ib_recv_wr *wr,
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
576
struct ib_qp *qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
923
int mlx5_ib_destroy_qp(struct ib_qp *qp, struct ib_udata *udata);
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
928
void *mlx5_get_send_wqe(struct mlx5_ib_qp *qp, int n);
sys/dev/mlx5/mlx5_ib/mlx5_ib.h
929
int mlx5_ib_read_user_wqe(struct mlx5_ib_qp *qp, int send, int wqe_index,
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
165
struct mlx5_ib_qp *qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
167
enum rdma_link_layer ll = rdma_port_get_link_layer(qp->ibqp.device, 1);
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
168
struct mlx5_ib_dev *dev = to_mdev(qp->ibqp.device);
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
176
if (qp->ibqp.srq || qp->ibqp.xrcd) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
179
if (qp->ibqp.xrcd) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
184
srq = to_msrq(qp->ibqp.srq);
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
194
wq = &qp->rq;
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
228
if (unlikely(is_qp1(qp->ibqp.qp_type))) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
231
ib_find_cached_pkey(&dev->ib_dev, qp->port, pkey,
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
339
static int is_atomic_response(struct mlx5_ib_qp *qp, uint16_t idx)
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
346
static void *mlx5_get_atomic_laddr(struct mlx5_ib_qp *qp, uint16_t idx)
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
351
dpseg = mlx5_get_send_wqe(qp, idx) + sizeof(struct mlx5_wqe_ctrl_seg) +
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
358
static void handle_atomic(struct mlx5_ib_qp *qp, struct mlx5_cqe64 *cqe64,
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
365
if (!is_atomic_response(qp, idx))
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
369
addr = mlx5_get_atomic_laddr(qp, idx);
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
383
static void handle_atomics(struct mlx5_ib_qp *qp, struct mlx5_cqe64 *cqe64,
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
389
idx = tail & (qp->sq.wqe_cnt - 1);
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
390
handle_atomic(qp, cqe64, idx);
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
394
tail = qp->sq.w_list[idx].next;
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
396
tail = qp->sq.w_list[idx].next;
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
397
qp->sq.last_poll = tail;
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
437
static void sw_send_comp(struct mlx5_ib_qp *qp, int num_entries,
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
446
wq = &qp->sq;
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
460
wc->qp = &qp->ibqp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
467
static void sw_recv_comp(struct mlx5_ib_qp *qp, int num_entries,
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
475
wq = &qp->rq;
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
488
wc->qp = &qp->ibqp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
497
struct mlx5_ib_qp *qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
501
list_for_each_entry(qp, &cq->list_send_qp, cq_send_list) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
502
sw_send_comp(qp, num_entries, wc + *npolled, npolled);
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
507
list_for_each_entry(qp, &cq->list_recv_qp, cq_recv_list) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
508
sw_recv_comp(qp, num_entries, wc + *npolled, npolled);
sys/dev/mlx5/mlx5_ib/mlx5_ib_cq.c
570
wc->qp = &(*cur_qp)->ibqp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_devx.c
643
struct mlx5_ib_qp *qp = to_mqp(uobj->object);
sys/dev/mlx5/mlx5_ib/mlx5_ib_devx.c
644
enum ib_qp_type qp_type = qp->ibqp.qp_type;
sys/dev/mlx5/mlx5_ib/mlx5_ib_devx.c
647
(qp->flags & MLX5_IB_QP_UNDERLAY)) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_devx.c
649
&qp->raw_packet_qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_devx.c
665
qp->dct.mdct.dctn) == obj_id;
sys/dev/mlx5/mlx5_ib/mlx5_ib_devx.c
668
qp->ibqp.qp_num) == obj_id;
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
105
wr->wc.qp = &gsi->ibqp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
209
int mlx5_ib_gsi_destroy_qp(struct ib_qp *qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
211
struct mlx5_ib_dev *dev = to_mdev(qp->device);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
212
struct mlx5_ib_gsi_qp *gsi = gsi_qp(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
268
static int modify_to_rts(struct mlx5_ib_gsi_qp *gsi, struct ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
271
struct mlx5_ib_dev *dev = to_mdev(qp->device);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
281
ret = ib_modify_qp(qp, &attr, mask);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
284
qp->qp_num, ret);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
289
ret = ib_modify_qp(qp, &attr, IB_QP_STATE);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
292
qp->qp_num, ret);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
298
ret = ib_modify_qp(qp, &attr, IB_QP_STATE | IB_QP_SQ_PSN);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
301
qp->qp_num, ret);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
312
struct ib_qp *qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
331
qp = gsi->tx_qps[qp_index];
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
333
if (qp) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
339
qp = create_gsi_ud_qp(gsi);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
340
if (IS_ERR(qp)) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
342
PTR_ERR(qp));
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
346
ret = modify_to_rts(gsi, qp, qp_index);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
352
gsi->tx_qps[qp_index] = qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
358
WARN_ON_ONCE(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
369
int mlx5_ib_gsi_modify_qp(struct ib_qp *qp, struct ib_qp_attr *attr,
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
372
struct mlx5_ib_dev *dev = to_mdev(qp->device);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
373
struct mlx5_ib_gsi_qp *gsi = gsi_qp(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
394
int mlx5_ib_gsi_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr,
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
398
struct mlx5_ib_gsi_qp *gsi = gsi_qp(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
448
.qp = &gsi->ibqp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
476
int mlx5_ib_gsi_post_send(struct ib_qp *qp, const struct ib_send_wr *wr,
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
479
struct mlx5_ib_gsi_qp *gsi = gsi_qp(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
521
int mlx5_ib_gsi_post_recv(struct ib_qp *qp, const struct ib_recv_wr *wr,
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
524
struct mlx5_ib_gsi_qp *gsi = gsi_qp(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
58
static struct mlx5_ib_gsi_qp *gsi_qp(struct ib_qp *qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_gsi.c
60
return container_of(qp, struct mlx5_ib_gsi_qp, ibqp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2066
struct mlx5_ib_dev *dev = to_mdev(flow_id->qp->device);
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2362
static struct ib_flow *mlx5_ib_create_flow(struct ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2367
struct mlx5_ib_dev *dev = to_mdev(qp->device);
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2368
struct mlx5_ib_qp *mqp = to_mqp(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2784
if (dev->umrc.qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2785
mlx5_ib_destroy_qp(dev->umrc.qp, NULL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2802
struct ib_qp *qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2833
qp = mlx5_ib_create_qp(pd, init_attr, NULL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2834
if (IS_ERR(qp)) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2836
ret = PTR_ERR(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2839
qp->device = &dev->ib_dev;
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2840
qp->real_qp = qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2841
qp->uobject = NULL;
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2842
qp->qp_type = MLX5_IB_QPT_REG_UMR;
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2846
ret = mlx5_ib_modify_qp(qp, attr, IB_QP_STATE | IB_QP_PKEY_INDEX |
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2857
ret = mlx5_ib_modify_qp(qp, attr, IB_QP_STATE, NULL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2865
ret = mlx5_ib_modify_qp(qp, attr, IB_QP_STATE, NULL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2871
dev->umrc.qp = qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2888
mlx5_ib_destroy_qp(qp, NULL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
2889
dev->umrc.qp = NULL;
sys/dev/mlx5/mlx5_ib/mlx5_ib_mr.c
1037
err = ib_post_send(umrc->qp, &umrwr.wr, &bad);
sys/dev/mlx5/mlx5_ib/mlx5_ib_mr.c
1104
err = ib_post_send(umrc->qp, &umrwr.wr, &bad);
sys/dev/mlx5/mlx5_ib/mlx5_ib_mr.c
710
err = ib_post_send(umrc->qp, &umrwr.wr, &bad);
sys/dev/mlx5/mlx5_ib/mlx5_ib_mr.c
841
err = ib_post_send(umrc->qp, &wr.wr, &bad);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
100
static void *get_wqe(struct mlx5_ib_qp *qp, int offset)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1000
qp->sq.wrid = kmalloc(qp->sq.wqe_cnt * sizeof(*qp->sq.wrid), GFP_KERNEL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1001
qp->sq.wr_data = kmalloc(qp->sq.wqe_cnt * sizeof(*qp->sq.wr_data), GFP_KERNEL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1002
qp->rq.wrid = kmalloc(qp->rq.wqe_cnt * sizeof(*qp->rq.wrid), GFP_KERNEL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1003
qp->sq.w_list = kmalloc(qp->sq.wqe_cnt * sizeof(*qp->sq.w_list), GFP_KERNEL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1004
qp->sq.wqe_head = kmalloc(qp->sq.wqe_cnt * sizeof(*qp->sq.wqe_head), GFP_KERNEL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1006
if (!qp->sq.wrid || !qp->sq.wr_data || !qp->rq.wrid ||
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1007
!qp->sq.w_list || !qp->sq.wqe_head) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1011
qp->create_type = MLX5_QP_KERNEL;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1016
kfree(qp->sq.wqe_head);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1017
kfree(qp->sq.w_list);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1018
kfree(qp->sq.wrid);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1019
kfree(qp->sq.wr_data);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
102
return mlx5_buf_offset(&qp->buf, offset);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1020
kfree(qp->rq.wrid);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1021
mlx5_db_free(dev->mdev, &qp->db);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1027
mlx5_buf_free(dev->mdev, &qp->buf);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1031
static void destroy_qp_kernel(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1033
kfree(qp->sq.wqe_head);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1034
kfree(qp->sq.w_list);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1035
kfree(qp->sq.wrid);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1036
kfree(qp->sq.wr_data);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1037
kfree(qp->rq.wrid);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1038
mlx5_db_free(dev->mdev, &qp->db);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1039
mlx5_buf_free(dev->mdev, &qp->buf);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1042
static u32 get_rx_type(struct mlx5_ib_qp *qp, struct ib_qp_init_attr *attr)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1047
else if (!qp->has_rq)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
105
static void *get_recv_wqe(struct mlx5_ib_qp *qp, int n)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
107
return get_wqe(qp, qp->rq.offset + (n << qp->rq.wqe_shift));
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
110
void *mlx5_get_send_wqe(struct mlx5_ib_qp *qp, int n)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
112
return get_wqe(qp, qp->sq.offset + (n << MLX5_IB_SQ_STRIDE));
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1271
static int create_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1275
struct mlx5_ib_raw_packet_qp *raw_packet_qp = &qp->raw_packet_qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1284
if (qp->sq.wqe_cnt) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1293
sq->base.container_mibqp = qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1296
if (qp->rq.wqe_cnt) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1297
rq->base.container_mibqp = qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1309
qp->trans_qp.base.mqp.qpn = qp->sq.wqe_cnt ? sq->base.mqp.qpn :
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1317
if (!qp->sq.wqe_cnt)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
132
int mlx5_ib_read_user_wqe(struct mlx5_ib_qp *qp, int send, int wqe_index,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1327
struct mlx5_ib_qp *qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1329
struct mlx5_ib_raw_packet_qp *raw_packet_qp = &qp->raw_packet_qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1333
if (qp->rq.wqe_cnt) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1334
destroy_raw_packet_qp_tir(dev, rq, qp->ibqp.pd);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1338
if (qp->sq.wqe_cnt) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1340
destroy_raw_packet_qp_tis(dev, sq, qp->ibqp.pd);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1344
static void raw_packet_qp_copy_info(struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1350
sq->sq = &qp->sq;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1351
rq->rq = &qp->rq;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1352
sq->doorbell = &qp->db;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1353
rq->doorbell = &qp->db;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1356
static void destroy_rss_raw_qp_tir(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1358
mlx5_core_destroy_tir(dev->mdev, qp->rss_qp.tirn,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1359
to_mpd(qp->ibqp.pd)->uid);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
136
struct ib_device *ibdev = qp->ibqp.device;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1362
static int create_rss_raw_qp_tir(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
138
struct mlx5_ib_wq *wq = send ? &qp->sq : &qp->rq;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
148
qp->ibqp.qp_type);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1523
err = mlx5_core_create_tir(dev->mdev, in, inlen, &qp->rss_qp.tirn);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1530
qp->trans_qp.base.mqp.qpn = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1531
qp->flags |= MLX5_IB_QP_RSS;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1588
struct ib_udata *udata, struct mlx5_ib_qp *qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1605
&qp->raw_packet_qp.rq.base :
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1606
&qp->trans_qp.base;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1609
mlx5_ib_odp_create_qp(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1611
mutex_init(&qp->mutex);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1612
spin_lock_init(&qp->sq.lock);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1613
spin_lock_init(&qp->rq.lock);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1619
err = create_rss_raw_qp_tir(dev, qp, pd, init_attr, udata);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1628
qp->flags |= MLX5_IB_QP_BLOCK_MULTICAST_LOOPBACK;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1641
qp->flags |= MLX5_IB_QP_CROSS_CHANNEL;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1643
qp->flags |= MLX5_IB_QP_MANAGED_SEND;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1645
qp->flags |= MLX5_IB_QP_MANAGED_RECV;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1665
qp->flags |= MLX5_IB_QP_CAP_SCATTER_FCS;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1669
qp->sq_signal_bits = MLX5_WQE_CTRL_CQ_UPDATE;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1682
qp->wq_sig = !!(ucmd.flags & MLX5_QP_FLAG_SIGNATURE);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1683
qp->scat_cqe = !!(ucmd.flags & MLX5_QP_FLAG_SCATTER_CQE);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1685
qp->wq_sig = !!wq_signature;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1688
qp->has_rq = qp_has_rq(init_attr);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1689
err = set_rq_size(dev, &init_attr->cap, qp->has_rq,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1690
qp, (pd && pd->uobject) ? &ucmd : NULL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1701
if (ucmd.rq_wqe_shift != qp->rq.wqe_shift ||
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1702
ucmd.rq_wqe_count != qp->rq.wqe_cnt) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1716
err = create_user_qp(dev, pd, qp, udata, init_attr, &in,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1721
err = create_kernel_qp(dev, init_attr, qp, &in, &inlen,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1734
qp->create_type = MLX5_QP_EMPTY;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1738
qp->port = init_attr->port_num;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1751
if (qp->wq_sig)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1754
if (qp->flags & MLX5_IB_QP_BLOCK_MULTICAST_LOOPBACK)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1757
if (qp->flags & MLX5_IB_QP_CROSS_CHANNEL)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1759
if (qp->flags & MLX5_IB_QP_MANAGED_SEND)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1761
if (qp->flags & MLX5_IB_QP_MANAGED_RECV)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1764
if (qp->scat_cqe && is_connected(init_attr->qp_type)) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1784
if (qp->rq.wqe_cnt) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1785
MLX5_SET(qpc, qpc, log_rq_stride, qp->rq.wqe_shift - 4);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1786
MLX5_SET(qpc, qpc, log_rq_size, ilog2(qp->rq.wqe_cnt));
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1792
MLX5_SET(qpc, qpc, rq_type, get_rx_type(qp, init_attr));
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1794
if (qp->sq.wqe_cnt)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1795
MLX5_SET(qpc, qpc, log_sq_size, ilog2(qp->sq.wqe_cnt));
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1828
MLX5_SET64(qpc, qpc, dbr_addr, qp->db.dma);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1838
qp->flags |= MLX5_IB_QP_LSO;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1842
qp->raw_packet_qp.sq.ubuffer.buf_addr = ucmd.sq_buf_addr;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1843
raw_packet_qp_copy_info(qp, &qp->raw_packet_qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1844
err = create_raw_packet_qp(dev, qp, in, pd);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1856
base->container_mibqp = qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1866
list_add_tail(&qp->qps_list, &dev->qp_list);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
187
static void mlx5_ib_qp_event(struct mlx5_core_qp *qp, int type)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1870
list_add_tail(&qp->cq_send_list, &send_cq->list_send_qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1872
list_add_tail(&qp->cq_recv_list, &recv_cq->list_recv_qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1879
if (qp->create_type == MLX5_QP_USER)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1880
destroy_qp_user(dev, pd, qp, base, udata);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1881
else if (qp->create_type == MLX5_QP_KERNEL)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1882
destroy_qp_kernel(dev, qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
189
struct ib_qp *ibqp = &to_mibqp(qp)->ibqp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
194
to_mibqp(qp)->port = to_mibqp(qp)->trans_qp.alt_port;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1946
static struct mlx5_ib_pd *get_pd(struct mlx5_ib_qp *qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1948
return to_mpd(qp->ibqp.pd);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1986
static int modify_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
199
event.element.qp = ibqp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1990
static void destroy_qp_common(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1994
struct mlx5_ib_qp_base *base = &qp->trans_qp.base;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1998
if (qp->ibqp.rwq_ind_tbl) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
1999
destroy_rss_raw_qp_tir(dev, qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2003
base = qp->ibqp.qp_type == IB_QPT_RAW_PACKET ?
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2004
&qp->raw_packet_qp.rq.base :
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2005
&qp->trans_qp.base;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2007
if (qp->state != IB_QPS_RESET) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2008
if (qp->ibqp.qp_type != IB_QPT_RAW_PACKET) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2009
mlx5_ib_qp_disable_pagefaults(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2018
err = modify_raw_packet_qp(dev, qp, &raw_qp_param, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2025
get_cqs(qp->ibqp.qp_type, qp->ibqp.send_cq, qp->ibqp.recv_cq,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2031
list_del(&qp->qps_list);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2033
list_del(&qp->cq_send_list);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2036
list_del(&qp->cq_recv_list);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2038
if (qp->create_type == MLX5_QP_KERNEL) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2040
qp->ibqp.srq ? to_msrq(qp->ibqp.srq) : NULL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2048
if (qp->ibqp.qp_type == IB_QPT_RAW_PACKET) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2049
destroy_raw_packet_qp(dev, qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2057
if (qp->create_type == MLX5_QP_KERNEL)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2058
destroy_qp_kernel(dev, qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2059
else if (qp->create_type == MLX5_QP_USER)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2060
destroy_qp_user(dev, &get_pd(qp)->ibpd, qp, base, udata);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2099
struct mlx5_ib_qp *qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2147
qp = kzalloc(sizeof(*qp), GFP_KERNEL);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2148
if (!qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2151
err = create_qp_common(dev, pd, init_attr, udata, qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2154
kfree(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2159
qp->ibqp.qp_num = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2161
qp->ibqp.qp_num = 1;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2163
qp->ibqp.qp_num = qp->trans_qp.base.mqp.qpn;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2166
qp->ibqp.qp_num, qp->trans_qp.base.mqp.qpn,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2170
qp->trans_qp.xrcdn = xrcdn;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2187
return &qp->ibqp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2190
int mlx5_ib_destroy_qp(struct ib_qp *qp, struct ib_udata *udata)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2192
struct mlx5_ib_dev *dev = to_mdev(qp->device);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2193
struct mlx5_ib_qp *mqp = to_mqp(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2195
if (unlikely(qp->qp_type == IB_QPT_GSI))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2196
return mlx5_ib_gsi_destroy_qp(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2205
static int to_mlx5_access_flags(struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2212
struct mlx5_ib_dev *dev = to_mdev(qp->ibqp.device);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2217
dest_rd_atomic = qp->trans_qp.resp_depth;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2222
access_flags = qp->trans_qp.atomic_rd_en;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2232
atomic_mode = get_atomic_mode(dev, qp->ibqp.qp_type);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
226
pr_warn("mlx5_ib: Unexpected event type %d on QP %06x\n", type, qp->qpn);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2324
static int mlx5_set_path(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
235
int has_rq, struct mlx5_ib_qp *qp, struct mlx5_ib_create_qp *ucmd)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2390
if ((qp->ibqp.qp_type == IB_QPT_RAW_PACKET) && qp->sq.wqe_cnt)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2392
&qp->raw_packet_qp.sq,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2393
ah->sl & 0xf, qp->ibqp.pd);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
245
qp->rq.max_gs = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
246
qp->rq.wqe_cnt = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
247
qp->rq.wqe_shift = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
252
qp->rq.wqe_cnt = ucmd->rq_wqe_count;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
253
qp->rq.wqe_shift = ucmd->rq_wqe_shift;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
254
qp->rq.max_gs = (1 << qp->rq.wqe_shift) / sizeof(struct mlx5_wqe_data_seg) - qp->wq_sig;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
255
qp->rq.max_post = qp->rq.wqe_cnt;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
257
wqe_size = qp->wq_sig ? sizeof(struct mlx5_wqe_signature_seg) : 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2615
static int modify_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2619
struct mlx5_ib_raw_packet_qp *raw_packet_qp = &qp->raw_packet_qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
262
qp->rq.wqe_cnt = wq_size / wqe_size;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2622
int modify_rq = !!qp->rq.wqe_cnt;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2623
int modify_sq = !!qp->sq.wqe_cnt;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2657
qp->ibqp.pd);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2666
qp->ibqp.pd);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2671
return modify_raw_packet_qp_sq(dev->mdev, sq, sq_state, qp->ibqp.pd);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
270
qp->rq.wqe_shift = ilog2(wqe_size);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
271
qp->rq.max_gs = (1 << qp->rq.wqe_shift) / sizeof(struct mlx5_wqe_data_seg) - qp->wq_sig;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2719
struct mlx5_ib_qp *qp = to_mqp(ibqp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
272
qp->rq.max_post = qp->rq.wqe_cnt;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2720
struct mlx5_ib_qp_base *base = &qp->trans_qp.base;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2784
context->pri_path.port = qp->port;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2790
err = mlx5_set_path(dev, qp, &attr->ah_attr, &context->pri_path,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2791
attr_mask & IB_QP_PORT ? attr->port_num : qp->port,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2801
err = mlx5_set_path(dev, qp, &attr->alt_ah_attr,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2810
pd = get_pd(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2811
get_cqs(qp->ibqp.qp_type, qp->ibqp.send_cq, qp->ibqp.recv_cq,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2843
err = to_mlx5_access_flags(qp, attr, attr_mask, &access_flags);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2859
if (qp->rq.wqe_cnt && cur_state == IB_QPS_RESET && new_state == IB_QPS_INIT)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2860
context->db_rec_addr = cpu_to_be64(qp->db.dma);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2864
qp->port) - 1;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2873
if (qp->flags & MLX5_IB_QP_SQPN_QP1)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2889
(qp->ibqp.qp_type != IB_QPT_RAW_PACKET))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2890
mlx5_ib_qp_disable_pagefaults(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2900
if (qp->ibqp.qp_type == IB_QPT_RAW_PACKET) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2908
err = modify_raw_packet_qp(dev, qp, &raw_qp_param, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2918
(qp->ibqp.qp_type != IB_QPT_RAW_PACKET))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2919
mlx5_ib_qp_enable_pagefaults(qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2921
qp->state = new_state;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2924
qp->trans_qp.atomic_rd_en = attr->qp_access_flags;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2926
qp->trans_qp.resp_depth = attr->max_dest_rd_atomic;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2928
qp->port = attr->port_num;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2930
qp->trans_qp.alt_port = attr->alt_port_num;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2942
qp->rq.head = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2943
qp->rq.tail = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2944
qp->sq.head = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2945
qp->sq.tail = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2946
qp->sq.cur_post = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2947
qp->sq.last_poll = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2948
qp->db.db[MLX5_RCV_DBR] = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2949
qp->db.db[MLX5_SND_DBR] = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2961
struct mlx5_ib_qp *qp = to_mqp(ibqp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2976
mutex_lock(&qp->mutex);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2978
cur_state = attr_mask & IB_QP_CUR_STATE ? attr->cur_qp_state : qp->state;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
2997
port = attr_mask & IB_QP_PORT ? attr->port_num : qp->port;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3030
mutex_unlock(&qp->mutex);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3061
struct mlx5_ib_qp *qp, int *size)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3100
seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3408
static int set_data_inl_seg(struct mlx5_ib_qp *qp, const struct ib_send_wr *wr,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3412
void *qend = qp->sq.qend;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3426
if (unlikely(inl > qp->max_inline_data))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3434
wqe = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3555
struct mlx5_ib_qp *qp, void **seg, int *size)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3639
if (unlikely((*seg == qp->sq.qend)))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3640
*seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3649
if (unlikely((*seg == qp->sq.qend)))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3650
*seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3687
static int set_sig_umr_wr(const struct ib_send_wr *send_wr, struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3692
u32 pdn = get_pd(qp)->pdn;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3698
unlikely(!sig_mr->sig) || unlikely(!qp->signature_en) ||
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3720
if (unlikely((*seg == qp->sq.qend)))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3721
*seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3726
if (unlikely((*seg == qp->sq.qend)))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3727
*seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3729
ret = set_sig_data_segment(wr, qp, seg, size);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
375
struct mlx5_ib_qp *qp)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3763
static int set_reg_wr(struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3768
struct mlx5_ib_pd *pd = to_mpd(qp->ibqp.pd);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3771
mlx5_ib_warn(to_mdev(qp->ibqp.device),
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3779
if (unlikely((*seg == qp->sq.qend)))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3780
*seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3785
if (unlikely((*seg == qp->sq.qend)))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3786
*seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3795
static void set_linv_wr(struct mlx5_ib_qp *qp, void **seg, int *size)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3800
if (unlikely((*seg == qp->sq.qend)))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3801
*seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3805
if (unlikely((*seg == qp->sq.qend)))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3806
*seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3809
static void dump_wqe(struct mlx5_ib_qp *qp, int idx, int size_16)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3815
pr_debug("dump wqe at %p\n", mlx5_get_send_wqe(qp, tidx));
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3818
void *buf = mlx5_get_send_wqe(qp, tidx);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3819
tidx = (tidx + 1) & (qp->sq.wqe_cnt - 1);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3847
static int begin_wqe(struct mlx5_ib_qp *qp, void **seg,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3852
if (unlikely(mlx5_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3855
*idx = qp->sq.cur_post & (qp->sq.wqe_cnt - 1);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3856
*seg = mlx5_get_send_wqe(qp, *idx);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3860
(*ctrl)->fm_ce_se = qp->sq_signal_bits |
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3872
static void finish_wqe(struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3880
ctrl->opmod_idx_opcode = cpu_to_be32(((u32)(qp->sq.cur_post) << 8) |
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3882
ctrl->qpn_ds = cpu_to_be32(size | (qp->trans_qp.base.mqp.qpn << 8));
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3884
qp->fm_cache = next_fence;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3885
if (unlikely(qp->wq_sig))
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3888
qp->sq.wrid[idx] = wr_id;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3889
qp->sq.w_list[idx].opcode = mlx5_opcode;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3890
qp->sq.wqe_head[idx] = qp->sq.head + nreq;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3891
qp->sq.cur_post += DIV_ROUND_UP(size * 16, MLX5_SEND_WQE_BB);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3892
qp->sq.w_list[idx].next = qp->sq.cur_post;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3902
struct mlx5_ib_qp *qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3922
qp = to_mqp(ibqp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3923
bf = &qp->bf;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3924
qend = qp->sq.qend;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3926
spin_lock_irqsave(&qp->sq.lock, flags);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
394
qp->max_inline_data = wqe_size - sq_overhead(attr) -
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3943
fence = qp->fm_cache;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3945
if (unlikely(num_sge > qp->sq.max_gs)) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3952
err = begin_wqe(qp, &seg, &ctrl, wr, &idx, &size, nreq, wr->send_flags);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
396
attr->cap.max_inline_data = qp->max_inline_data;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3987
qp->sq.wr_data[idx] = IB_WR_LOCAL_INV;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3989
set_linv_wr(qp, &seg, &size);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
399
qp->signature_en = true;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3995
qp->sq.wr_data[idx] = IB_WR_REG_MR;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
3997
err = set_reg_wr(qp, reg_wr(wr), &seg, &size);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4006
qp->sq.wr_data[idx] = IB_WR_REG_SIG_MR;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4010
err = set_sig_umr_wr(wr, qp, &seg, &size);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4017
finish_wqe(qp, ctrl, size, idx, wr->wr_id,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
402
qp->sq.wqe_cnt = wq_size / MLX5_SEND_WQE_BB;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4024
err = begin_wqe(qp, &seg, &ctrl, wr,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
403
if (qp->sq.wqe_cnt > (1 << MLX5_CAP_GEN(dev->mdev, log_max_qp_sz))) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4042
finish_wqe(qp, ctrl, size, idx, wr->wr_id,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4045
err = begin_wqe(qp, &seg, &ctrl, wr,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
405
qp->sq.wqe_cnt,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4064
finish_wqe(qp, ctrl, size, idx, wr->wr_id,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
409
qp->sq.wqe_shift = ilog2(MLX5_SEND_WQE_BB);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4096
seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
410
qp->sq.max_gs = get_send_sge(attr, wqe_size);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4104
seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4107
if (qp->flags & IB_QP_CREATE_IPOIB_UD_LSO) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
411
if (qp->sq.max_gs < attr->cap.max_send_sge)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4115
seg = set_eth_seg(seg, wr, qend, qp, &size);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4118
seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4127
qp->sq.wr_data[idx] = MLX5_IB_WR_UMR;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4133
seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4138
seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
414
attr->cap.max_send_sge = qp->sq.max_gs;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4148
err = set_data_inl_seg(qp, wr, seg, &sz);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
415
qp->sq.max_post = wq_size / wqe_size;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4159
seg = mlx5_get_send_wqe(qp, 0);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
416
attr->cap.max_send_wr = qp->sq.max_post;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4170
finish_wqe(qp, ctrl, size, idx, wr->wr_id, nreq,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4175
dump_wqe(qp, idx, size);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4180
qp->sq.head += nreq;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4187
qp->db.db[MLX5_SND_DBR] = cpu_to_be32(qp->sq.cur_post);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4201
spin_unlock_irqrestore(&qp->sq.lock, flags);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4214
struct mlx5_ib_qp *qp = to_mqp(ibqp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
422
struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4228
spin_lock_irqsave(&qp->rq.lock, flags);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4237
ind = qp->rq.head & (qp->rq.wqe_cnt - 1);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4240
if (mlx5_wq_overflow(&qp->rq, nreq, qp->ibqp.recv_cq)) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4246
if (unlikely(wr->num_sge > qp->rq.max_gs)) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4252
scat = get_recv_wqe(qp, ind);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4253
if (qp->wq_sig)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4259
if (i < qp->rq.max_gs) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4265
if (qp->wq_sig) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4267
set_sig_seg(sig, (qp->rq.max_gs + 1) << 2);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
427
int desc_sz = 1 << qp->sq.wqe_shift;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4270
qp->rq.wrid[ind] = wr->wr_id;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4272
ind = (ind + 1) & (qp->rq.wqe_cnt - 1);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4277
qp->rq.head += nreq;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4284
*qp->db.db = cpu_to_be32(qp->rq.head & 0xffff);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4287
spin_unlock_irqrestore(&qp->rq.lock, flags);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
441
qp->sq.wqe_cnt = ucmd->sq_wqe_count;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4416
struct mlx5_ib_qp *qp, u8 *qp_state)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
443
if (qp->sq.wqe_cnt > (1 << MLX5_CAP_GEN(dev->mdev, log_max_qp_sz))) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4449
qp->raw_packet_qp.sq.base.mqp.qpn, sq_state,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
445
qp->sq.wqe_cnt,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4450
qp->raw_packet_qp.rq.base.mqp.qpn, rq_state);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4455
*qp_state = qp->state;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4461
struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4464
struct mlx5_ib_raw_packet_qp *raw_packet_qp = &qp->raw_packet_qp;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4471
if (qp->sq.wqe_cnt) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4477
if (qp->rq.wqe_cnt) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4483
return sqrq_state_to_qp_state(sq_state, rq_state, qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4487
static int query_qp_attr(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4500
err = mlx5_core_qp_query(dev->mdev, &qp->trans_qp.base.mqp, outb,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
451
base->ubuffer.buf_size = qp->rq.wqe_cnt << qp->rq.wqe_shift;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4510
qp->state = to_ib_qp_state(mlx5_state);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
452
qp->raw_packet_qp.sq.ubuffer.buf_size = qp->sq.wqe_cnt << 6;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4521
if (qp->ibqp.qp_type == IB_QPT_RC || qp->ibqp.qp_type == IB_QPT_UC) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
454
base->ubuffer.buf_size = (qp->rq.wqe_cnt << qp->rq.wqe_shift) +
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
455
(qp->sq.wqe_cnt << 6);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4555
struct mlx5_ib_qp *qp = to_mqp(ibqp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4574
mutex_lock(&qp->mutex);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4576
if (qp->ibqp.qp_type == IB_QPT_RAW_PACKET) {
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4577
err = query_raw_packet_qp_state(dev, qp, &raw_packet_qp_state);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4580
qp->state = raw_packet_qp_state;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4583
err = query_qp_attr(dev, qp, qp_attr);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4588
qp_attr->qp_state = qp->state;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4590
qp_attr->cap.max_recv_wr = qp->rq.wqe_cnt;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4591
qp_attr->cap.max_recv_sge = qp->rq.max_gs;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4594
qp_attr->cap.max_send_wr = qp->sq.max_post;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4595
qp_attr->cap.max_send_sge = qp->sq.max_gs;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4606
qp_attr->cap.max_inline_data = qp->max_inline_data;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4611
if (qp->flags & MLX5_IB_QP_BLOCK_MULTICAST_LOOPBACK)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4614
if (qp->flags & MLX5_IB_QP_CROSS_CHANNEL)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4616
if (qp->flags & MLX5_IB_QP_MANAGED_SEND)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4618
if (qp->flags & MLX5_IB_QP_MANAGED_RECV)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4620
if (qp->flags & MLX5_IB_QP_SQPN_QP1)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4623
qp_init_attr->sq_sig_type = qp->sq_signal_bits & MLX5_WQE_CTRL_CQ_UPDATE ?
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
4627
mutex_unlock(&qp->mutex);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
761
struct mlx5_ib_qp *qp, struct ib_udata *udata,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
804
if (qp->flags & MLX5_IB_QP_CROSS_CHANNEL)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
819
qp->rq.offset = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
820
qp->sq.wqe_shift = ilog2(MLX5_SEND_WQE_BB);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
821
qp->sq.offset = qp->rq.wqe_cnt << qp->rq.wqe_shift;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
823
err = set_user_buf_size(dev, qp, &ucmd, base, attr);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
864
qp->bfregn = bfregn;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
866
err = mlx5_ib_db_map_user(context, ucmd.db_addr, &qp->db);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
877
qp->create_type = MLX5_QP_USER;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
882
mlx5_ib_db_unmap_user(context, &qp->db);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
897
static void destroy_qp_user(struct mlx5_ib_dev *dev, struct ib_pd *pd, struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
907
mlx5_ib_db_unmap_user(context, &qp->db);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
915
if (qp->bfregn != MLX5_IB_INVALID_BFREG)
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
916
mlx5_ib_free_bfreg(dev, &context->bfregi, qp->bfregn);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
921
struct mlx5_ib_qp *qp,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
936
spin_lock_init(&qp->bf.lock32);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
939
qp->bf.bfreg = &dev->fp_bfreg;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
941
qp->bf.bfreg = &dev->wc_bfreg;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
943
qp->bf.bfreg = &dev->bfreg;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
948
qp->bf.buf_size = (1 << MLX5_CAP_GEN(dev->mdev, log_bf_reg_size)) / 2;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
949
uar_index = qp->bf.bfreg->index;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
951
err = calc_sq_size(dev, init_attr, qp);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
957
qp->rq.offset = 0;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
958
qp->sq.offset = qp->rq.wqe_cnt << qp->rq.wqe_shift;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
959
base->ubuffer.buf_size = err + (qp->rq.wqe_cnt << qp->rq.wqe_shift);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
962
2 * PAGE_SIZE, &qp->buf);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
968
qp->sq.qend = mlx5_get_send_wqe(qp, qp->sq.wqe_cnt);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
970
MLX5_FLD_SZ_BYTES(create_qp_in, pas[0]) * qp->buf.npages;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
980
MLX5_SET(qpc, qpc, log_page_size, qp->buf.page_shift - MLX5_ADAPTER_PAGE_SHIFT);
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
988
qp->flags |= MLX5_IB_QP_SQPN_QP1;
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
991
mlx5_fill_page_array(&qp->buf,
sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
994
err = mlx5_db_alloc(dev->mdev, &qp->db);
sys/dev/mlx5/qp.h
586
struct mlx5_core_qp *qp,
sys/dev/mlx5/qp.h
591
struct mlx5_core_qp *qp);
sys/dev/mlx5/qp.h
593
struct mlx5_core_qp *qp);
sys/dev/mlx5/qp.h
594
int mlx5_core_qp_query(struct mlx5_core_dev *dev, struct mlx5_core_qp *qp,
sys/dev/mlx5/qp.h
618
int mlx5_debug_qp_add(struct mlx5_core_dev *dev, struct mlx5_core_qp *qp);
sys/dev/mlx5/qp.h
619
void mlx5_debug_qp_remove(struct mlx5_core_dev *dev, struct mlx5_core_qp *qp);
sys/dev/mthca/mthca_cmd.c
1911
MTHCA_PUT(inbox, in_wc->qp->qp_num, MAD_IFC_MY_QPN_OFFSET);
sys/dev/mthca/mthca_cq.c
378
struct mthca_qp *qp, int wqe_index, int is_send,
sys/dev/mthca/mthca_cq.c
466
mthca_free_err_wqe(dev, qp, is_send, wqe_index, &dbd, &new_wqe);
sys/dev/mthca/mthca_cq.c
525
*cur_qp = mthca_array_get(&dev->qp_table.qp,
sys/dev/mthca/mthca_cq.c
536
entry->qp = &(*cur_qp)->ibqp;
sys/dev/mthca/mthca_cq.c
664
struct mthca_qp *qp = NULL;
sys/dev/mthca/mthca_cq.c
675
err = mthca_poll_one(dev, cq, &qp,
sys/dev/mthca/mthca_dev.h
261
struct mthca_array qp;
sys/dev/mthca/mthca_dev.h
544
void mthca_free_err_wqe(struct mthca_dev *dev, struct mthca_qp *qp, int is_send,
sys/dev/mthca/mthca_dev.h
553
struct mthca_qp *qp,
sys/dev/mthca/mthca_dev.h
565
void mthca_free_qp(struct mthca_dev *dev, struct mthca_qp *qp);
sys/dev/mthca/mthca_eq.c
144
} __attribute__((packed)) qp;
sys/dev/mthca/mthca_eq.c
282
mthca_qp_event(dev, be32_to_cpu(eqe->event.qp.qpn) & 0xffffff,
sys/dev/mthca/mthca_eq.c
287
mthca_qp_event(dev, be32_to_cpu(eqe->event.qp.qpn) & 0xffffff,
sys/dev/mthca/mthca_eq.c
292
mthca_qp_event(dev, be32_to_cpu(eqe->event.qp.qpn) & 0xffffff,
sys/dev/mthca/mthca_eq.c
297
mthca_qp_event(dev, be32_to_cpu(eqe->event.qp.qpn) & 0xffffff,
sys/dev/mthca/mthca_eq.c
307
mthca_qp_event(dev, be32_to_cpu(eqe->event.qp.qpn) & 0xffffff,
sys/dev/mthca/mthca_eq.c
312
mthca_qp_event(dev, be32_to_cpu(eqe->event.qp.qpn) & 0xffffff,
sys/dev/mthca/mthca_eq.c
317
mthca_qp_event(dev, be32_to_cpu(eqe->event.qp.qpn) & 0xffffff,
sys/dev/mthca/mthca_eq.c
322
mthca_qp_event(dev, be32_to_cpu(eqe->event.qp.qpn) & 0xffffff,
sys/dev/mthca/mthca_mad.c
89
new_ah = ib_create_ah(dev->send_agent[port_num - 1][0]->qp->pd,
sys/dev/mthca/mthca_mcg.c
165
if (mgm->qp[i] == cpu_to_be32(ibqp->qp_num | (1 << 31))) {
sys/dev/mthca/mthca_mcg.c
170
} else if (!(mgm->qp[i] & cpu_to_be32(1 << 31))) {
sys/dev/mthca/mthca_mcg.c
171
mgm->qp[i] = cpu_to_be32(ibqp->qp_num | (1 << 31));
sys/dev/mthca/mthca_mcg.c
242
if (mgm->qp[i] == cpu_to_be32(ibqp->qp_num | (1 << 31)))
sys/dev/mthca/mthca_mcg.c
244
if (!(mgm->qp[i] & cpu_to_be32(1 << 31)))
sys/dev/mthca/mthca_mcg.c
254
mgm->qp[loc] = mgm->qp[i - 1];
sys/dev/mthca/mthca_mcg.c
255
mgm->qp[i - 1] = 0;
sys/dev/mthca/mthca_mcg.c
43
__be32 qp[MTHCA_QP_PER_MGM];
sys/dev/mthca/mthca_provider.c
474
struct mthca_qp *qp;
sys/dev/mthca/mthca_provider.c
485
qp = kzalloc(sizeof(*qp), GFP_KERNEL);
sys/dev/mthca/mthca_provider.c
486
if (!qp)
sys/dev/mthca/mthca_provider.c
491
kfree(qp);
sys/dev/mthca/mthca_provider.c
499
kfree(qp);
sys/dev/mthca/mthca_provider.c
511
kfree(qp);
sys/dev/mthca/mthca_provider.c
515
qp->mr.ibmr.lkey = ucmd.lkey;
sys/dev/mthca/mthca_provider.c
516
qp->sq.db_index = ucmd.sq_db_index;
sys/dev/mthca/mthca_provider.c
517
qp->rq.db_index = ucmd.rq_db_index;
sys/dev/mthca/mthca_provider.c
524
&init_attr->cap, qp, udata);
sys/dev/mthca/mthca_provider.c
537
qp->ibqp.qp_num = qp->qpn;
sys/dev/mthca/mthca_provider.c
543
qp = kzalloc(sizeof(*qp), GFP_KERNEL);
sys/dev/mthca/mthca_provider.c
544
if (!qp)
sys/dev/mthca/mthca_provider.c
547
qp->ibqp.qp_num = init_attr->qp_type == IB_QPT_SMI ? 0 : 1;
sys/dev/mthca/mthca_provider.c
553
qp->ibqp.qp_num, init_attr->port_num,
sys/dev/mthca/mthca_provider.c
554
to_msqp(qp), udata);
sys/dev/mthca/mthca_provider.c
563
kfree(qp);
sys/dev/mthca/mthca_provider.c
567
init_attr->cap.max_send_wr = qp->sq.max;
sys/dev/mthca/mthca_provider.c
568
init_attr->cap.max_recv_wr = qp->rq.max;
sys/dev/mthca/mthca_provider.c
569
init_attr->cap.max_send_sge = qp->sq.max_gs;
sys/dev/mthca/mthca_provider.c
570
init_attr->cap.max_recv_sge = qp->rq.max_gs;
sys/dev/mthca/mthca_provider.c
571
init_attr->cap.max_inline_data = qp->max_inline_data;
sys/dev/mthca/mthca_provider.c
573
return &qp->ibqp;
sys/dev/mthca/mthca_provider.c
576
static int mthca_destroy_qp(struct ib_qp *qp, struct ib_udata *udata)
sys/dev/mthca/mthca_provider.c
585
mthca_unmap_user_db(to_mdev(qp->device),
sys/dev/mthca/mthca_provider.c
588
to_mqp(qp)->sq.db_index);
sys/dev/mthca/mthca_provider.c
589
mthca_unmap_user_db(to_mdev(qp->device),
sys/dev/mthca/mthca_provider.c
592
to_mqp(qp)->rq.db_index);
sys/dev/mthca/mthca_provider.c
594
mthca_free_qp(to_mdev(qp->device), to_mqp(qp));
sys/dev/mthca/mthca_provider.c
595
kfree(to_mqp(qp));
sys/dev/mthca/mthca_provider.h
291
struct mthca_qp qp;
sys/dev/mthca/mthca_provider.h
341
static inline struct mthca_sqp *to_msqp(struct mthca_qp *qp)
sys/dev/mthca/mthca_provider.h
343
return container_of(qp, struct mthca_sqp, qp);
sys/dev/mthca/mthca_qp.c
1032
for (qp->sq.wqe_shift = 6; 1 << qp->sq.wqe_shift < size;
sys/dev/mthca/mthca_qp.c
1033
qp->sq.wqe_shift++)
sys/dev/mthca/mthca_qp.c
1036
qp->send_wqe_offset = ALIGN(qp->rq.max << qp->rq.wqe_shift,
sys/dev/mthca/mthca_qp.c
1037
1 << qp->sq.wqe_shift);
sys/dev/mthca/mthca_qp.c
1047
size = PAGE_ALIGN(qp->send_wqe_offset +
sys/dev/mthca/mthca_qp.c
1048
(qp->sq.max << qp->sq.wqe_shift));
sys/dev/mthca/mthca_qp.c
1050
qp->wrid = kmalloc((qp->rq.max + qp->sq.max) * sizeof (u64),
sys/dev/mthca/mthca_qp.c
1052
if (!qp->wrid)
sys/dev/mthca/mthca_qp.c
1056
&qp->queue, &qp->is_direct, pd, 0, &qp->mr);
sys/dev/mthca/mthca_qp.c
1063
kfree(qp->wrid);
sys/dev/mthca/mthca_qp.c
1068
struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
1070
mthca_buf_free(dev, PAGE_ALIGN(qp->send_wqe_offset +
sys/dev/mthca/mthca_qp.c
1071
(qp->sq.max << qp->sq.wqe_shift)),
sys/dev/mthca/mthca_qp.c
1072
&qp->queue, qp->is_direct, &qp->mr);
sys/dev/mthca/mthca_qp.c
1073
kfree(qp->wrid);
sys/dev/mthca/mthca_qp.c
1077
struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
1082
ret = mthca_table_get(dev, dev->qp_table.qp_table, qp->qpn);
sys/dev/mthca/mthca_qp.c
1086
ret = mthca_table_get(dev, dev->qp_table.eqp_table, qp->qpn);
sys/dev/mthca/mthca_qp.c
1091
qp->qpn << dev->qp_table.rdb_shift);
sys/dev/mthca/mthca_qp.c
1099
mthca_table_put(dev, dev->qp_table.eqp_table, qp->qpn);
sys/dev/mthca/mthca_qp.c
1102
mthca_table_put(dev, dev->qp_table.qp_table, qp->qpn);
sys/dev/mthca/mthca_qp.c
1108
struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
1111
qp->qpn << dev->qp_table.rdb_shift);
sys/dev/mthca/mthca_qp.c
1112
mthca_table_put(dev, dev->qp_table.eqp_table, qp->qpn);
sys/dev/mthca/mthca_qp.c
1113
mthca_table_put(dev, dev->qp_table.qp_table, qp->qpn);
sys/dev/mthca/mthca_qp.c
1117
struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
1120
qp->rq.db_index = mthca_alloc_db(dev, MTHCA_DB_TYPE_RQ,
sys/dev/mthca/mthca_qp.c
1121
qp->qpn, &qp->rq.db);
sys/dev/mthca/mthca_qp.c
1122
if (qp->rq.db_index < 0)
sys/dev/mthca/mthca_qp.c
1125
qp->sq.db_index = mthca_alloc_db(dev, MTHCA_DB_TYPE_SQ,
sys/dev/mthca/mthca_qp.c
1126
qp->qpn, &qp->sq.db);
sys/dev/mthca/mthca_qp.c
1127
if (qp->sq.db_index < 0) {
sys/dev/mthca/mthca_qp.c
1128
mthca_free_db(dev, MTHCA_DB_TYPE_RQ, qp->rq.db_index);
sys/dev/mthca/mthca_qp.c
1137
struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
1140
mthca_free_db(dev, MTHCA_DB_TYPE_SQ, qp->sq.db_index);
sys/dev/mthca/mthca_qp.c
1141
mthca_free_db(dev, MTHCA_DB_TYPE_RQ, qp->rq.db_index);
sys/dev/mthca/mthca_qp.c
1150
struct mthca_qp *qp,
sys/dev/mthca/mthca_qp.c
1157
qp->refcount = 1;
sys/dev/mthca/mthca_qp.c
1158
init_waitqueue_head(&qp->wait);
sys/dev/mthca/mthca_qp.c
1159
mutex_init(&qp->mutex);
sys/dev/mthca/mthca_qp.c
1160
qp->state = IB_QPS_RESET;
sys/dev/mthca/mthca_qp.c
1161
qp->atomic_rd_en = 0;
sys/dev/mthca/mthca_qp.c
1162
qp->resp_depth = 0;
sys/dev/mthca/mthca_qp.c
1163
qp->sq_policy = send_policy;
sys/dev/mthca/mthca_qp.c
1164
mthca_wq_reset(&qp->sq);
sys/dev/mthca/mthca_qp.c
1165
mthca_wq_reset(&qp->rq);
sys/dev/mthca/mthca_qp.c
1167
spin_lock_init(&qp->sq.lock);
sys/dev/mthca/mthca_qp.c
1168
spin_lock_init(&qp->rq.lock);
sys/dev/mthca/mthca_qp.c
1170
ret = mthca_map_memfree(dev, qp);
sys/dev/mthca/mthca_qp.c
1174
ret = mthca_alloc_wqe_buf(dev, pd, qp, udata);
sys/dev/mthca/mthca_qp.c
1176
mthca_unmap_memfree(dev, qp);
sys/dev/mthca/mthca_qp.c
1180
mthca_adjust_qp_caps(dev, pd, qp);
sys/dev/mthca/mthca_qp.c
1190
ret = mthca_alloc_memfree(dev, qp);
sys/dev/mthca/mthca_qp.c
1192
mthca_free_wqe_buf(dev, qp);
sys/dev/mthca/mthca_qp.c
1193
mthca_unmap_memfree(dev, qp);
sys/dev/mthca/mthca_qp.c
1200
qp->rq.max_gs * sizeof (struct mthca_data_seg)) / 16;
sys/dev/mthca/mthca_qp.c
1202
for (i = 0; i < qp->rq.max; ++i) {
sys/dev/mthca/mthca_qp.c
1203
next = get_recv_wqe(qp, i);
sys/dev/mthca/mthca_qp.c
1204
next->nda_op = cpu_to_be32(((i + 1) & (qp->rq.max - 1)) <<
sys/dev/mthca/mthca_qp.c
1205
qp->rq.wqe_shift);
sys/dev/mthca/mthca_qp.c
1209
(void *) scatter < (void *) next + (1 << qp->rq.wqe_shift);
sys/dev/mthca/mthca_qp.c
1214
for (i = 0; i < qp->sq.max; ++i) {
sys/dev/mthca/mthca_qp.c
1215
next = get_send_wqe(qp, i);
sys/dev/mthca/mthca_qp.c
1216
next->nda_op = cpu_to_be32((((i + 1) & (qp->sq.max - 1)) <<
sys/dev/mthca/mthca_qp.c
1217
qp->sq.wqe_shift) +
sys/dev/mthca/mthca_qp.c
1218
qp->send_wqe_offset);
sys/dev/mthca/mthca_qp.c
1221
for (i = 0; i < qp->rq.max; ++i) {
sys/dev/mthca/mthca_qp.c
1222
next = get_recv_wqe(qp, i);
sys/dev/mthca/mthca_qp.c
1223
next->nda_op = htonl((((i + 1) % qp->rq.max) <<
sys/dev/mthca/mthca_qp.c
1224
qp->rq.wqe_shift) | 1);
sys/dev/mthca/mthca_qp.c
1228
qp->sq.last = get_send_wqe(qp, qp->sq.max - 1);
sys/dev/mthca/mthca_qp.c
1229
qp->rq.last = get_recv_wqe(qp, qp->rq.max - 1);
sys/dev/mthca/mthca_qp.c
1235
struct mthca_pd *pd, struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
1237
int max_data_size = mthca_max_data_size(dev, qp, dev->limits.max_desc_sz);
sys/dev/mthca/mthca_qp.c
1251
if (qp->transport == MLX && cap->max_send_sge + 2 > dev->limits.max_sg)
sys/dev/mthca/mthca_qp.c
1255
qp->rq.max = cap->max_recv_wr ?
sys/dev/mthca/mthca_qp.c
1257
qp->sq.max = cap->max_send_wr ?
sys/dev/mthca/mthca_qp.c
1260
qp->rq.max = cap->max_recv_wr;
sys/dev/mthca/mthca_qp.c
1261
qp->sq.max = cap->max_send_wr;
sys/dev/mthca/mthca_qp.c
1264
qp->rq.max_gs = cap->max_recv_sge;
sys/dev/mthca/mthca_qp.c
1265
qp->sq.max_gs = max_t(int, cap->max_send_sge,
sys/dev/mthca/mthca_qp.c
1280
struct mthca_qp *qp,
sys/dev/mthca/mthca_qp.c
1286
case IB_QPT_RC: qp->transport = RC; break;
sys/dev/mthca/mthca_qp.c
1287
case IB_QPT_UC: qp->transport = UC; break;
sys/dev/mthca/mthca_qp.c
1288
case IB_QPT_UD: qp->transport = UD; break;
sys/dev/mthca/mthca_qp.c
1292
err = mthca_set_qp_size(dev, cap, pd, qp);
sys/dev/mthca/mthca_qp.c
1296
qp->qpn = mthca_alloc(&dev->qp_table.alloc);
sys/dev/mthca/mthca_qp.c
1297
if (qp->qpn == -1)
sys/dev/mthca/mthca_qp.c
1301
qp->port = 0;
sys/dev/mthca/mthca_qp.c
1304
send_policy, qp, udata);
sys/dev/mthca/mthca_qp.c
1306
mthca_free(&dev->qp_table.alloc, qp->qpn);
sys/dev/mthca/mthca_qp.c
1311
mthca_array_set(&dev->qp_table.qp,
sys/dev/mthca/mthca_qp.c
1312
qp->qpn & (dev->limits.num_qps - 1), qp);
sys/dev/mthca/mthca_qp.c
1362
sqp->qp.transport = MLX;
sys/dev/mthca/mthca_qp.c
1363
err = mthca_set_qp_size(dev, cap, pd, &sqp->qp);
sys/dev/mthca/mthca_qp.c
1367
sqp->header_buf_size = sqp->qp.sq.max * MTHCA_UD_HEADER_SIZE;
sys/dev/mthca/mthca_qp.c
1374
if (mthca_array_get(&dev->qp_table.qp, mqpn))
sys/dev/mthca/mthca_qp.c
1377
mthca_array_set(&dev->qp_table.qp, mqpn, sqp);
sys/dev/mthca/mthca_qp.c
1383
sqp->qp.port = port;
sys/dev/mthca/mthca_qp.c
1384
sqp->qp.qpn = mqpn;
sys/dev/mthca/mthca_qp.c
1385
sqp->qp.transport = MLX;
sys/dev/mthca/mthca_qp.c
1388
send_policy, &sqp->qp, udata);
sys/dev/mthca/mthca_qp.c
1404
mthca_array_clear(&dev->qp_table.qp, mqpn);
sys/dev/mthca/mthca_qp.c
1416
static inline int get_qp_refcount(struct mthca_dev *dev, struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
1421
c = qp->refcount;
sys/dev/mthca/mthca_qp.c
1428
struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
1433
send_cq = to_mcq(qp->ibqp.send_cq);
sys/dev/mthca/mthca_qp.c
1434
recv_cq = to_mcq(qp->ibqp.recv_cq);
sys/dev/mthca/mthca_qp.c
1443
mthca_array_clear(&dev->qp_table.qp,
sys/dev/mthca/mthca_qp.c
1444
qp->qpn & (dev->limits.num_qps - 1));
sys/dev/mthca/mthca_qp.c
1445
--qp->refcount;
sys/dev/mthca/mthca_qp.c
1450
wait_event(qp->wait, !get_qp_refcount(dev, qp));
sys/dev/mthca/mthca_qp.c
1452
if (qp->state != IB_QPS_RESET)
sys/dev/mthca/mthca_qp.c
1453
mthca_MODIFY_QP(dev, qp->state, IB_QPS_RESET, qp->qpn, 0,
sys/dev/mthca/mthca_qp.c
1461
if (!qp->ibqp.uobject) {
sys/dev/mthca/mthca_qp.c
1462
mthca_cq_clean(dev, recv_cq, qp->qpn,
sys/dev/mthca/mthca_qp.c
1463
qp->ibqp.srq ? to_msrq(qp->ibqp.srq) : NULL);
sys/dev/mthca/mthca_qp.c
1465
mthca_cq_clean(dev, send_cq, qp->qpn, NULL);
sys/dev/mthca/mthca_qp.c
1467
mthca_free_memfree(dev, qp);
sys/dev/mthca/mthca_qp.c
1468
mthca_free_wqe_buf(dev, qp);
sys/dev/mthca/mthca_qp.c
1471
mthca_unmap_memfree(dev, qp);
sys/dev/mthca/mthca_qp.c
1473
if (is_sqp(dev, qp)) {
sys/dev/mthca/mthca_qp.c
1474
atomic_dec(&(to_mpd(qp->ibqp.pd)->sqp_count));
sys/dev/mthca/mthca_qp.c
1476
to_msqp(qp)->header_buf_size,
sys/dev/mthca/mthca_qp.c
1477
to_msqp(qp)->header_buf,
sys/dev/mthca/mthca_qp.c
1478
to_msqp(qp)->header_dma);
sys/dev/mthca/mthca_qp.c
1480
mthca_free(&dev->qp_table.alloc, qp->qpn);
sys/dev/mthca/mthca_qp.c
1501
mlx->flags |= cpu_to_be32((!sqp->qp.ibqp.qp_num ? MTHCA_MLX_VL15 : 0) |
sys/dev/mthca/mthca_qp.c
1522
sqp->ud_header.lrh.virtual_lane = !sqp->qp.ibqp.qp_num ? 15 : 0;
sys/dev/mthca/mthca_qp.c
1526
if (!sqp->qp.ibqp.qp_num)
sys/dev/mthca/mthca_qp.c
1527
ib_get_cached_pkey(&dev->ib_dev, sqp->qp.port,
sys/dev/mthca/mthca_qp.c
1530
ib_get_cached_pkey(&dev->ib_dev, sqp->qp.port,
sys/dev/mthca/mthca_qp.c
1537
sqp->ud_header.deth.source_qpn = cpu_to_be32(sqp->qp.ibqp.qp_num);
sys/dev/mthca/mthca_qp.c
1544
data->lkey = cpu_to_be32(to_mpd(sqp->qp.ibqp.pd)->ntmr.ibmr.lkey);
sys/dev/mthca/mthca_qp.c
1612
struct mthca_qp *qp = to_mqp(ibqp);
sys/dev/mthca/mthca_qp.c
1632
spin_lock_irqsave(&qp->sq.lock, flags);
sys/dev/mthca/mthca_qp.c
1636
ind = qp->sq.next_ind;
sys/dev/mthca/mthca_qp.c
1639
if (mthca_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)) {
sys/dev/mthca/mthca_qp.c
1641
" %d max, %d nreq)\n", qp->qpn,
sys/dev/mthca/mthca_qp.c
1642
qp->sq.head, qp->sq.tail,
sys/dev/mthca/mthca_qp.c
1643
qp->sq.max, nreq);
sys/dev/mthca/mthca_qp.c
1649
wqe = get_send_wqe(qp, ind);
sys/dev/mthca/mthca_qp.c
1650
prev_wqe = qp->sq.last;
sys/dev/mthca/mthca_qp.c
1651
qp->sq.last = wqe;
sys/dev/mthca/mthca_qp.c
1668
switch (qp->transport) {
sys/dev/mthca/mthca_qp.c
1723
err = build_mlx_header(dev, to_msqp(qp), ind, ud_wr(wr),
sys/dev/mthca/mthca_qp.c
1735
if (wr->num_sge > qp->sq.max_gs) {
sys/dev/mthca/mthca_qp.c
1749
if (qp->transport == MLX) {
sys/dev/mthca/mthca_qp.c
1757
qp->wrid[ind + qp->rq.max] = wr->wr_id;
sys/dev/mthca/mthca_qp.c
1767
cpu_to_be32(((ind << qp->sq.wqe_shift) +
sys/dev/mthca/mthca_qp.c
1768
qp->send_wqe_offset) |
sys/dev/mthca/mthca_qp.c
1784
if (unlikely(ind >= qp->sq.max))
sys/dev/mthca/mthca_qp.c
1785
ind -= qp->sq.max;
sys/dev/mthca/mthca_qp.c
1792
mthca_write64(((qp->sq.next_ind << qp->sq.wqe_shift) +
sys/dev/mthca/mthca_qp.c
1793
qp->send_wqe_offset) | f0 | op0,
sys/dev/mthca/mthca_qp.c
1794
(qp->qpn << 8) | size0,
sys/dev/mthca/mthca_qp.c
1804
qp->sq.next_ind = ind;
sys/dev/mthca/mthca_qp.c
1805
qp->sq.head += nreq;
sys/dev/mthca/mthca_qp.c
1807
spin_unlock_irqrestore(&qp->sq.lock, flags);
sys/dev/mthca/mthca_qp.c
1815
struct mthca_qp *qp = to_mqp(ibqp);
sys/dev/mthca/mthca_qp.c
1833
spin_lock_irqsave(&qp->rq.lock, flags);
sys/dev/mthca/mthca_qp.c
1837
ind = qp->rq.next_ind;
sys/dev/mthca/mthca_qp.c
1840
if (mthca_wq_overflow(&qp->rq, nreq, qp->ibqp.recv_cq)) {
sys/dev/mthca/mthca_qp.c
1842
" %d max, %d nreq)\n", qp->qpn,
sys/dev/mthca/mthca_qp.c
1843
qp->rq.head, qp->rq.tail,
sys/dev/mthca/mthca_qp.c
1844
qp->rq.max, nreq);
sys/dev/mthca/mthca_qp.c
1850
wqe = get_recv_wqe(qp, ind);
sys/dev/mthca/mthca_qp.c
1851
prev_wqe = qp->rq.last;
sys/dev/mthca/mthca_qp.c
1852
qp->rq.last = wqe;
sys/dev/mthca/mthca_qp.c
1861
if (unlikely(wr->num_sge > qp->rq.max_gs)) {
sys/dev/mthca/mthca_qp.c
1873
qp->wrid[ind] = wr->wr_id;
sys/dev/mthca/mthca_qp.c
1882
if (unlikely(ind >= qp->rq.max))
sys/dev/mthca/mthca_qp.c
1883
ind -= qp->rq.max;
sys/dev/mthca/mthca_qp.c
1891
mthca_write64((qp->rq.next_ind << qp->rq.wqe_shift) | size0,
sys/dev/mthca/mthca_qp.c
1892
qp->qpn << 8, dev->kar + MTHCA_RECEIVE_DOORBELL,
sys/dev/mthca/mthca_qp.c
1895
qp->rq.next_ind = ind;
sys/dev/mthca/mthca_qp.c
1896
qp->rq.head += MTHCA_TAVOR_MAX_WQES_PER_RECV_DB;
sys/dev/mthca/mthca_qp.c
1904
mthca_write64((qp->rq.next_ind << qp->rq.wqe_shift) | size0,
sys/dev/mthca/mthca_qp.c
1905
qp->qpn << 8 | nreq, dev->kar + MTHCA_RECEIVE_DOORBELL,
sys/dev/mthca/mthca_qp.c
1909
qp->rq.next_ind = ind;
sys/dev/mthca/mthca_qp.c
1910
qp->rq.head += nreq;
sys/dev/mthca/mthca_qp.c
1918
spin_unlock_irqrestore(&qp->rq.lock, flags);
sys/dev/mthca/mthca_qp.c
1926
struct mthca_qp *qp = to_mqp(ibqp);
sys/dev/mthca/mthca_qp.c
1947
spin_lock_irqsave(&qp->sq.lock, flags);
sys/dev/mthca/mthca_qp.c
1951
ind = qp->sq.head & (qp->sq.max - 1);
sys/dev/mthca/mthca_qp.c
1958
((qp->sq.head & 0xffff) << 8) | f0 | op0;
sys/dev/mthca/mthca_qp.c
196
static int is_sqp(struct mthca_dev *dev, struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
1960
qp->sq.head += MTHCA_ARBEL_MAX_WQES_PER_SEND_DB;
sys/dev/mthca/mthca_qp.c
1967
*qp->sq.db = cpu_to_be32(qp->sq.head & 0xffff);
sys/dev/mthca/mthca_qp.c
1975
mthca_write64(dbhi, (qp->qpn << 8) | size0,
sys/dev/mthca/mthca_qp.c
198
return qp->qpn >= dev->qp_table.sqp_start &&
sys/dev/mthca/mthca_qp.c
1980
if (mthca_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)) {
sys/dev/mthca/mthca_qp.c
1982
" %d max, %d nreq)\n", qp->qpn,
sys/dev/mthca/mthca_qp.c
1983
qp->sq.head, qp->sq.tail,
sys/dev/mthca/mthca_qp.c
1984
qp->sq.max, nreq);
sys/dev/mthca/mthca_qp.c
199
qp->qpn <= dev->qp_table.sqp_start + 3;
sys/dev/mthca/mthca_qp.c
1990
wqe = get_send_wqe(qp, ind);
sys/dev/mthca/mthca_qp.c
1991
prev_wqe = qp->sq.last;
sys/dev/mthca/mthca_qp.c
1992
qp->sq.last = wqe;
sys/dev/mthca/mthca_qp.c
2009
switch (qp->transport) {
sys/dev/mthca/mthca_qp.c
202
static int is_qp0(struct mthca_dev *dev, struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
204
return qp->qpn >= dev->qp_table.sqp_start &&
sys/dev/mthca/mthca_qp.c
205
qp->qpn <= dev->qp_table.sqp_start + 1;
sys/dev/mthca/mthca_qp.c
2064
err = build_mlx_header(dev, to_msqp(qp), ind, ud_wr(wr),
sys/dev/mthca/mthca_qp.c
2076
if (wr->num_sge > qp->sq.max_gs) {
sys/dev/mthca/mthca_qp.c
208
static void *get_recv_wqe(struct mthca_qp *qp, int n)
sys/dev/mthca/mthca_qp.c
2090
if (qp->transport == MLX) {
sys/dev/mthca/mthca_qp.c
2098
qp->wrid[ind + qp->rq.max] = wr->wr_id;
sys/dev/mthca/mthca_qp.c
210
if (qp->is_direct)
sys/dev/mthca/mthca_qp.c
2108
cpu_to_be32(((ind << qp->sq.wqe_shift) +
sys/dev/mthca/mthca_qp.c
2109
qp->send_wqe_offset) |
sys/dev/mthca/mthca_qp.c
211
return qp->queue.direct.buf + (n << qp->rq.wqe_shift);
sys/dev/mthca/mthca_qp.c
2125
if (unlikely(ind >= qp->sq.max))
sys/dev/mthca/mthca_qp.c
2126
ind -= qp->sq.max;
sys/dev/mthca/mthca_qp.c
213
return qp->queue.page_list[(n << qp->rq.wqe_shift) >> PAGE_SHIFT].buf +
sys/dev/mthca/mthca_qp.c
2131
dbhi = (nreq << 24) | ((qp->sq.head & 0xffff) << 8) | f0 | op0;
sys/dev/mthca/mthca_qp.c
2133
qp->sq.head += nreq;
sys/dev/mthca/mthca_qp.c
214
((n << qp->rq.wqe_shift) & (PAGE_SIZE - 1));
sys/dev/mthca/mthca_qp.c
2140
*qp->sq.db = cpu_to_be32(qp->sq.head & 0xffff);
sys/dev/mthca/mthca_qp.c
2148
mthca_write64(dbhi, (qp->qpn << 8) | size0, dev->kar + MTHCA_SEND_DOORBELL,
sys/dev/mthca/mthca_qp.c
2158
spin_unlock_irqrestore(&qp->sq.lock, flags);
sys/dev/mthca/mthca_qp.c
2166
struct mthca_qp *qp = to_mqp(ibqp);
sys/dev/mthca/mthca_qp.c
217
static void *get_send_wqe(struct mthca_qp *qp, int n)
sys/dev/mthca/mthca_qp.c
2174
spin_lock_irqsave(&qp->rq.lock, flags);
sys/dev/mthca/mthca_qp.c
2178
ind = qp->rq.head & (qp->rq.max - 1);
sys/dev/mthca/mthca_qp.c
2181
if (mthca_wq_overflow(&qp->rq, nreq, qp->ibqp.recv_cq)) {
sys/dev/mthca/mthca_qp.c
2183
" %d max, %d nreq)\n", qp->qpn,
sys/dev/mthca/mthca_qp.c
2184
qp->rq.head, qp->rq.tail,
sys/dev/mthca/mthca_qp.c
2185
qp->rq.max, nreq);
sys/dev/mthca/mthca_qp.c
219
if (qp->is_direct)
sys/dev/mthca/mthca_qp.c
2191
wqe = get_recv_wqe(qp, ind);
sys/dev/mthca/mthca_qp.c
2197
if (unlikely(wr->num_sge > qp->rq.max_gs)) {
sys/dev/mthca/mthca_qp.c
220
return qp->queue.direct.buf + qp->send_wqe_offset +
sys/dev/mthca/mthca_qp.c
2208
if (i < qp->rq.max_gs)
sys/dev/mthca/mthca_qp.c
221
(n << qp->sq.wqe_shift);
sys/dev/mthca/mthca_qp.c
2211
qp->wrid[ind] = wr->wr_id;
sys/dev/mthca/mthca_qp.c
2214
if (unlikely(ind >= qp->rq.max))
sys/dev/mthca/mthca_qp.c
2215
ind -= qp->rq.max;
sys/dev/mthca/mthca_qp.c
2219
qp->rq.head += nreq;
sys/dev/mthca/mthca_qp.c
2226
*qp->rq.db = cpu_to_be32(qp->rq.head & 0xffff);
sys/dev/mthca/mthca_qp.c
2229
spin_unlock_irqrestore(&qp->rq.lock, flags);
sys/dev/mthca/mthca_qp.c
223
return qp->queue.page_list[(qp->send_wqe_offset +
sys/dev/mthca/mthca_qp.c
2233
void mthca_free_err_wqe(struct mthca_dev *dev, struct mthca_qp *qp, int is_send,
sys/dev/mthca/mthca_qp.c
224
(n << qp->sq.wqe_shift)) >>
sys/dev/mthca/mthca_qp.c
2242
if (qp->ibqp.srq && !is_send) {
sys/dev/mthca/mthca_qp.c
2248
next = get_send_wqe(qp, index);
sys/dev/mthca/mthca_qp.c
2250
next = get_recv_wqe(qp, index);
sys/dev/mthca/mthca_qp.c
226
((qp->send_wqe_offset + (n << qp->sq.wqe_shift)) &
sys/dev/mthca/mthca_qp.c
2280
err = mthca_array_init(&dev->qp_table.qp,
sys/dev/mthca/mthca_qp.c
2302
mthca_array_cleanup(&dev->qp_table.qp, dev->limits.num_qps);
sys/dev/mthca/mthca_qp.c
2315
mthca_array_cleanup(&dev->qp_table.qp, dev->limits.num_qps);
sys/dev/mthca/mthca_qp.c
241
struct mthca_qp *qp;
sys/dev/mthca/mthca_qp.c
245
qp = mthca_array_get(&dev->qp_table.qp, qpn & (dev->limits.num_qps - 1));
sys/dev/mthca/mthca_qp.c
246
if (qp)
sys/dev/mthca/mthca_qp.c
247
++qp->refcount;
sys/dev/mthca/mthca_qp.c
250
if (!qp) {
sys/dev/mthca/mthca_qp.c
257
qp->port = qp->alt_port;
sys/dev/mthca/mthca_qp.c
261
event.element.qp = &qp->ibqp;
sys/dev/mthca/mthca_qp.c
262
if (qp->ibqp.event_handler)
sys/dev/mthca/mthca_qp.c
263
qp->ibqp.event_handler(&event, qp->ibqp.qp_context);
sys/dev/mthca/mthca_qp.c
266
if (!--qp->refcount)
sys/dev/mthca/mthca_qp.c
267
wake_up(&qp->wait);
sys/dev/mthca/mthca_qp.c
328
static __be32 get_hw_access_flags(struct mthca_qp *qp, const struct ib_qp_attr *attr,
sys/dev/mthca/mthca_qp.c
338
dest_rd_atomic = qp->resp_depth;
sys/dev/mthca/mthca_qp.c
343
access_flags = qp->atomic_rd_en;
sys/dev/mthca/mthca_qp.c
429
struct mthca_qp *qp = to_mqp(ibqp);
sys/dev/mthca/mthca_qp.c
436
mutex_lock(&qp->mutex);
sys/dev/mthca/mthca_qp.c
438
if (qp->state == IB_QPS_RESET) {
sys/dev/mthca/mthca_qp.c
449
err = mthca_QUERY_QP(dev, qp->qpn, 0, mailbox);
sys/dev/mthca/mthca_qp.c
459
qp->state = to_ib_qp_state(mthca_state);
sys/dev/mthca/mthca_qp.c
460
qp_attr->qp_state = qp->state;
sys/dev/mthca/mthca_qp.c
471
if (qp->transport == RC || qp->transport == UC) {
sys/dev/mthca/mthca_qp.c
499
qp_attr->cap.max_send_wr = qp->sq.max;
sys/dev/mthca/mthca_qp.c
500
qp_attr->cap.max_recv_wr = qp->rq.max;
sys/dev/mthca/mthca_qp.c
501
qp_attr->cap.max_send_sge = qp->sq.max_gs;
sys/dev/mthca/mthca_qp.c
502
qp_attr->cap.max_recv_sge = qp->rq.max_gs;
sys/dev/mthca/mthca_qp.c
503
qp_attr->cap.max_inline_data = qp->max_inline_data;
sys/dev/mthca/mthca_qp.c
506
qp_init_attr->sq_sig_type = qp->sq_policy;
sys/dev/mthca/mthca_qp.c
512
mutex_unlock(&qp->mutex);
sys/dev/mthca/mthca_qp.c
551
struct mthca_qp *qp = to_mqp(ibqp);
sys/dev/mthca/mthca_qp.c
570
(to_mthca_st(qp->transport) << 16));
sys/dev/mthca/mthca_qp.c
591
if (qp->transport == MLX || qp->transport == UD)
sys/dev/mthca/mthca_qp.c
603
if (qp->rq.max)
sys/dev/mthca/mthca_qp.c
604
qp_context->rq_size_stride = ilog2(qp->rq.max) << 3;
sys/dev/mthca/mthca_qp.c
605
qp_context->rq_size_stride |= qp->rq.wqe_shift - 4;
sys/dev/mthca/mthca_qp.c
607
if (qp->sq.max)
sys/dev/mthca/mthca_qp.c
608
qp_context->sq_size_stride = ilog2(qp->sq.max) << 3;
sys/dev/mthca/mthca_qp.c
609
qp_context->sq_size_stride |= qp->sq.wqe_shift - 4;
sys/dev/mthca/mthca_qp.c
614
if (qp->ibqp.uobject)
sys/dev/mthca/mthca_qp.c
618
qp_context->local_qpn = cpu_to_be32(qp->qpn);
sys/dev/mthca/mthca_qp.c
623
if (qp->transport == MLX)
sys/dev/mthca/mthca_qp.c
625
cpu_to_be32(qp->port << 24);
sys/dev/mthca/mthca_qp.c
649
attr_mask & IB_QP_PORT ? attr->port_num : qp->port))
sys/dev/mthca/mthca_qp.c
699
qp_context->wqe_lkey = cpu_to_be32(qp->mr.ibmr.lkey);
sys/dev/mthca/mthca_qp.c
703
if (qp->sq_policy == IB_SIGNAL_ALL_WR)
sys/dev/mthca/mthca_qp.c
726
qp_context->snd_wqe_base_l = cpu_to_be32(qp->send_wqe_offset);
sys/dev/mthca/mthca_qp.c
727
qp_context->snd_db_index = cpu_to_be32(qp->sq.db_index);
sys/dev/mthca/mthca_qp.c
739
qp_context->params2 |= get_hw_access_flags(qp, attr, attr_mask);
sys/dev/mthca/mthca_qp.c
759
((qp->qpn & (dev->limits.num_qps - 1)) * MTHCA_RDB_ENTRY_SIZE <<
sys/dev/mthca/mthca_qp.c
765
qp_context->rcv_db_index = cpu_to_be32(qp->rq.db_index);
sys/dev/mthca/mthca_qp.c
781
err = mthca_MODIFY_QP(dev, cur_state, new_state, qp->qpn, 0,
sys/dev/mthca/mthca_qp.c
789
qp->state = new_state;
sys/dev/mthca/mthca_qp.c
791
qp->atomic_rd_en = attr->qp_access_flags;
sys/dev/mthca/mthca_qp.c
793
qp->resp_depth = attr->max_dest_rd_atomic;
sys/dev/mthca/mthca_qp.c
795
qp->port = attr->port_num;
sys/dev/mthca/mthca_qp.c
797
qp->alt_port = attr->alt_port_num;
sys/dev/mthca/mthca_qp.c
799
if (is_sqp(dev, qp))
sys/dev/mthca/mthca_qp.c
800
store_attrs(to_msqp(qp), attr, attr_mask);
sys/dev/mthca/mthca_qp.c
806
if (is_qp0(dev, qp)) {
sys/dev/mthca/mthca_qp.c
809
init_port(dev, qp->port);
sys/dev/mthca/mthca_qp.c
815
mthca_CLOSE_IB(dev, qp->port);
sys/dev/mthca/mthca_qp.c
822
if (new_state == IB_QPS_RESET && !qp->ibqp.uobject) {
sys/dev/mthca/mthca_qp.c
823
mthca_cq_clean(dev, to_mcq(qp->ibqp.recv_cq), qp->qpn,
sys/dev/mthca/mthca_qp.c
824
qp->ibqp.srq ? to_msrq(qp->ibqp.srq) : NULL);
sys/dev/mthca/mthca_qp.c
825
if (qp->ibqp.send_cq != qp->ibqp.recv_cq)
sys/dev/mthca/mthca_qp.c
826
mthca_cq_clean(dev, to_mcq(qp->ibqp.send_cq), qp->qpn, NULL);
sys/dev/mthca/mthca_qp.c
828
mthca_wq_reset(&qp->sq);
sys/dev/mthca/mthca_qp.c
829
qp->sq.last = get_send_wqe(qp, qp->sq.max - 1);
sys/dev/mthca/mthca_qp.c
831
mthca_wq_reset(&qp->rq);
sys/dev/mthca/mthca_qp.c
832
qp->rq.last = get_recv_wqe(qp, qp->rq.max - 1);
sys/dev/mthca/mthca_qp.c
835
*qp->sq.db = 0;
sys/dev/mthca/mthca_qp.c
836
*qp->rq.db = 0;
sys/dev/mthca/mthca_qp.c
850
struct mthca_qp *qp = to_mqp(ibqp);
sys/dev/mthca/mthca_qp.c
854
mutex_lock(&qp->mutex);
sys/dev/mthca/mthca_qp.c
858
spin_lock_irq(&qp->sq.lock);
sys/dev/mthca/mthca_qp.c
859
spin_lock(&qp->rq.lock);
sys/dev/mthca/mthca_qp.c
860
cur_state = qp->state;
sys/dev/mthca/mthca_qp.c
861
spin_unlock(&qp->rq.lock);
sys/dev/mthca/mthca_qp.c
862
spin_unlock_irq(&qp->sq.lock);
sys/dev/mthca/mthca_qp.c
870
qp->transport, cur_state, new_state,
sys/dev/mthca/mthca_qp.c
911
mutex_unlock(&qp->mutex);
sys/dev/mthca/mthca_qp.c
915
static int mthca_max_data_size(struct mthca_dev *dev, struct mthca_qp *qp, int desc_sz)
sys/dev/mthca/mthca_qp.c
923
switch (qp->transport) {
sys/dev/mthca/mthca_qp.c
951
struct mthca_qp *qp)
sys/dev/mthca/mthca_qp.c
953
int max_data_size = mthca_max_data_size(dev, qp,
sys/dev/mthca/mthca_qp.c
955
1 << qp->sq.wqe_shift));
sys/dev/mthca/mthca_qp.c
957
qp->max_inline_data = mthca_max_inline_data(pd, max_data_size);
sys/dev/mthca/mthca_qp.c
959
qp->sq.max_gs = min_t(int, dev->limits.max_sg,
sys/dev/mthca/mthca_qp.c
961
qp->rq.max_gs = min_t(int, dev->limits.max_sg,
sys/dev/mthca/mthca_qp.c
962
(min(dev->limits.max_desc_sz, 1 << qp->rq.wqe_shift) -
sys/dev/mthca/mthca_qp.c
976
struct mthca_qp *qp,
sys/dev/mthca/mthca_qp.c
983
qp->rq.max_gs * sizeof (struct mthca_data_seg);
sys/dev/mthca/mthca_qp.c
988
for (qp->rq.wqe_shift = 6; 1 << qp->rq.wqe_shift < size;
sys/dev/mthca/mthca_qp.c
989
qp->rq.wqe_shift++)
sys/dev/mthca/mthca_qp.c
992
size = qp->sq.max_gs * sizeof (struct mthca_data_seg);
sys/dev/mthca/mthca_qp.c
993
switch (qp->transport) {
sys/dev/ntb/if_ntb/if_ntb.c
110
static void ntb_net_tx_handler(struct ntb_transport_qp *qp, void *qp_data,
sys/dev/ntb/if_ntb/if_ntb.c
112
static void ntb_net_rx_handler(struct ntb_transport_qp *qp, void *qp_data,
sys/dev/ntb/if_ntb/if_ntb.c
151
q->qp = ntb_transport_create_queue(dev, i, &handlers, q);
sys/dev/ntb/if_ntb/if_ntb.c
152
if (q->qp == NULL)
sys/dev/ntb/if_ntb/if_ntb.c
154
sc->mtu = imin(sc->mtu, ntb_transport_max_size(q->qp));
sys/dev/ntb/if_ntb/if_ntb.c
186
ntb_transport_link_up(sc->queues[i].qp);
sys/dev/ntb/if_ntb/if_ntb.c
198
ntb_transport_link_down(sc->queues[i].qp);
sys/dev/ntb/if_ntb/if_ntb.c
204
ntb_transport_free_queue(q->qp);
sys/dev/ntb/if_ntb/if_ntb.c
223
if_setbaudrate(ifp, ntb_transport_link_speed(sc->queues[0].qp));
sys/dev/ntb/if_ntb/if_ntb.c
224
if_link_state_change(ifp, ntb_transport_link_query(sc->queues[0].qp) ?
sys/dev/ntb/if_ntb/if_ntb.c
309
if (ntb_transport_link_query(sc->queues[0].qp))
sys/dev/ntb/if_ntb/if_ntb.c
327
rc = ntb_transport_tx_enqueue(q->qp, m, m, len);
sys/dev/ntb/if_ntb/if_ntb.c
392
if (ntb_transport_tx_free_entry(q->qp) > 0)
sys/dev/ntb/if_ntb/if_ntb.c
419
ntb_net_tx_handler(struct ntb_transport_qp *qp, void *qp_data, void *data,
sys/dev/ntb/if_ntb/if_ntb.c
428
ntb_net_rx_handler(struct ntb_transport_qp *qp, void *qp_data, void *data,
sys/dev/ntb/if_ntb/if_ntb.c
474
if_setbaudrate(q->ifp, ntb_transport_link_speed(q->qp));
sys/dev/ntb/if_ntb/if_ntb.c
85
struct ntb_transport_qp *qp;
sys/dev/ntb/ntb_transport.c
1000
ntb_memcpy_rx(qp, entry, offset);
sys/dev/ntb/ntb_transport.c
1003
qp->rx_index++;
sys/dev/ntb/ntb_transport.c
1004
qp->rx_index %= qp->rx_max_entry;
sys/dev/ntb/ntb_transport.c
1009
ntb_memcpy_rx(struct ntb_transport_qp *qp, struct ntb_queue_entry *entry,
sys/dev/ntb/ntb_transport.c
1025
ntb_rx_copy_callback(qp, entry);
sys/dev/ntb/ntb_transport.c
1029
ntb_rx_copy_callback(struct ntb_transport_qp *qp, void *data)
sys/dev/ntb/ntb_transport.c
1035
ntb_complete_rxc(qp);
sys/dev/ntb/ntb_transport.c
1039
ntb_complete_rxc(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1047
mtx_lock_spin(&qp->ntb_rx_q_lock);
sys/dev/ntb/ntb_transport.c
1049
while (!STAILQ_EMPTY(&qp->rx_post_q)) {
sys/dev/ntb/ntb_transport.c
1050
entry = STAILQ_FIRST(&qp->rx_post_q);
sys/dev/ntb/ntb_transport.c
1055
iowrite32(entry->index, &qp->rx_info->entry);
sys/dev/ntb/ntb_transport.c
1057
STAILQ_REMOVE_HEAD(&qp->rx_post_q, entry);
sys/dev/ntb/ntb_transport.c
1068
entry->cb_data = qp->cb_data;
sys/dev/ntb/ntb_transport.c
1070
STAILQ_INSERT_TAIL(&qp->rx_pend_q, entry, entry);
sys/dev/ntb/ntb_transport.c
1072
mtx_unlock_spin(&qp->ntb_rx_q_lock);
sys/dev/ntb/ntb_transport.c
1075
if (qp->rx_handler != NULL && qp->client_ready)
sys/dev/ntb/ntb_transport.c
1076
qp->rx_handler(qp, qp->cb_data, m, len);
sys/dev/ntb/ntb_transport.c
108
struct ntb_transport_qp *qp;
sys/dev/ntb/ntb_transport.c
1080
mtx_lock_spin(&qp->ntb_rx_q_lock);
sys/dev/ntb/ntb_transport.c
1083
mtx_unlock_spin(&qp->ntb_rx_q_lock);
sys/dev/ntb/ntb_transport.c
1090
struct ntb_transport_qp *qp;
sys/dev/ntb/ntb_transport.c
1105
qp = &nt->qp_vec[qp_num];
sys/dev/ntb/ntb_transport.c
1106
if (qp->link_is_up)
sys/dev/ntb/ntb_transport.c
1107
taskqueue_enqueue(qp->rxc_tq, &qp->rxc_db_work);
sys/dev/ntb/ntb_transport.c
1135
struct ntb_transport_qp *qp;
sys/dev/ntb/ntb_transport.c
1224
qp = &nt->qp_vec[i];
sys/dev/ntb/ntb_transport.c
1228
if (qp->client_ready)
sys/dev/ntb/ntb_transport.c
1229
callout_reset(&qp->link_work, 0, ntb_qp_link_work, qp);
sys/dev/ntb/ntb_transport.c
130
void (*tx_handler)(struct ntb_transport_qp *qp, void *qp_data,
sys/dev/ntb/ntb_transport.c
1329
struct ntb_transport_qp *qp = &nt->qp_vec[qp_num];
sys/dev/ntb/ntb_transport.c
1349
qp->rx_buff = mw->virt_addr + rx_size * (qp_num / mw_count);
sys/dev/ntb/ntb_transport.c
1352
qp->remote_rx_info = (void*)(qp->rx_buff + rx_size);
sys/dev/ntb/ntb_transport.c
1355
qp->rx_max_frame = qmin(transport_mtu, rx_size / 2);
sys/dev/ntb/ntb_transport.c
1356
qp->rx_max_entry = rx_size / qp->rx_max_frame;
sys/dev/ntb/ntb_transport.c
1357
qp->rx_index = 0;
sys/dev/ntb/ntb_transport.c
1359
qp->remote_rx_info->entry = qp->rx_max_entry - 1;
sys/dev/ntb/ntb_transport.c
1362
for (i = 0; i < qp->rx_max_entry; i++) {
sys/dev/ntb/ntb_transport.c
1363
offset = (void *)(qp->rx_buff + qp->rx_max_frame * (i + 1) -
sys/dev/ntb/ntb_transport.c
1368
qp->rx_pkts = 0;
sys/dev/ntb/ntb_transport.c
1369
qp->tx_pkts = 0;
sys/dev/ntb/ntb_transport.c
1370
qp->tx_index = 0;
sys/dev/ntb/ntb_transport.c
1378
struct ntb_transport_qp *qp = arg;
sys/dev/ntb/ntb_transport.c
1379
device_t dev = qp->dev;
sys/dev/ntb/ntb_transport.c
1380
struct ntb_transport_ctx *nt = qp->transport;
sys/dev/ntb/ntb_transport.c
1393
if ((val & (1ull << qp->qp_num)) != 0) {
sys/dev/ntb/ntb_transport.c
1394
ntb_printf(2, "qp %d link up\n", qp->qp_num);
sys/dev/ntb/ntb_transport.c
1395
qp->link_is_up = true;
sys/dev/ntb/ntb_transport.c
1397
if (qp->event_handler != NULL)
sys/dev/ntb/ntb_transport.c
1398
qp->event_handler(qp->cb_data, NTB_LINK_UP);
sys/dev/ntb/ntb_transport.c
140
void (*rx_handler)(struct ntb_transport_qp *qp, void *qp_data,
sys/dev/ntb/ntb_transport.c
1400
ntb_db_clear_mask(dev, 1ull << qp->qp_num);
sys/dev/ntb/ntb_transport.c
1402
callout_reset(&qp->link_work,
sys/dev/ntb/ntb_transport.c
1403
NTB_LINK_DOWN_TIMEOUT * hz / 1000, ntb_qp_link_work, qp);
sys/dev/ntb/ntb_transport.c
1410
struct ntb_transport_qp *qp;
sys/dev/ntb/ntb_transport.c
1419
qp = &nt->qp_vec[i];
sys/dev/ntb/ntb_transport.c
1420
ntb_qp_link_cleanup(qp);
sys/dev/ntb/ntb_transport.c
1421
callout_drain(&qp->link_work);
sys/dev/ntb/ntb_transport.c
1441
ntb_qp_link_down(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1444
ntb_qp_link_cleanup(qp);
sys/dev/ntb/ntb_transport.c
1448
ntb_qp_link_down_reset(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1451
qp->link_is_up = false;
sys/dev/ntb/ntb_transport.c
1452
ntb_db_set_mask(qp->dev, 1ull << qp->qp_num);
sys/dev/ntb/ntb_transport.c
1454
qp->tx_index = qp->rx_index = 0;
sys/dev/ntb/ntb_transport.c
1455
qp->tx_bytes = qp->rx_bytes = 0;
sys/dev/ntb/ntb_transport.c
1456
qp->tx_pkts = qp->rx_pkts = 0;
sys/dev/ntb/ntb_transport.c
1458
qp->rx_ring_empty = 0;
sys/dev/ntb/ntb_transport.c
1459
qp->tx_ring_full = 0;
sys/dev/ntb/ntb_transport.c
1461
qp->rx_err_no_buf = qp->tx_err_no_buf = 0;
sys/dev/ntb/ntb_transport.c
1462
qp->rx_err_oflow = qp->rx_err_ver = 0;
sys/dev/ntb/ntb_transport.c
1466
ntb_qp_link_cleanup(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1469
callout_drain(&qp->link_work);
sys/dev/ntb/ntb_transport.c
1470
ntb_qp_link_down_reset(qp);
sys/dev/ntb/ntb_transport.c
1472
if (qp->event_handler != NULL)
sys/dev/ntb/ntb_transport.c
1473
qp->event_handler(qp->cb_data, NTB_LINK_DOWN);
sys/dev/ntb/ntb_transport.c
1486
ntb_transport_link_down(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1488
struct ntb_transport_ctx *nt = qp->transport;
sys/dev/ntb/ntb_transport.c
1492
qp->client_ready = false;
sys/dev/ntb/ntb_transport.c
1497
ntb_peer_spad_write(qp->dev, NTBT_QP_LINKS, val);
sys/dev/ntb/ntb_transport.c
1499
if (qp->link_is_up)
sys/dev/ntb/ntb_transport.c
1500
ntb_send_link_down(qp);
sys/dev/ntb/ntb_transport.c
1502
callout_drain(&qp->link_work);
sys/dev/ntb/ntb_transport.c
1514
ntb_transport_link_query(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1517
return (qp->link_is_up);
sys/dev/ntb/ntb_transport.c
1529
ntb_transport_link_speed(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1531
struct ntb_transport_ctx *nt = qp->transport;
sys/dev/ntb/ntb_transport.c
1558
ntb_send_link_down(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1563
if (!qp->link_is_up)
sys/dev/ntb/ntb_transport.c
1567
entry = ntb_list_rm(&qp->ntb_tx_free_q_lock, &qp->tx_free_q);
sys/dev/ntb/ntb_transport.c
1581
mtx_lock(&qp->tx_lock);
sys/dev/ntb/ntb_transport.c
1582
rc = ntb_process_tx(qp, entry);
sys/dev/ntb/ntb_transport.c
1583
mtx_unlock(&qp->tx_lock);
sys/dev/ntb/ntb_transport.c
1587
ntb_qp_link_down_reset(qp);
sys/dev/ntb/ntb_transport.c
1648
unsigned char ntb_transport_qp_num(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1651
return (qp->qp_num);
sys/dev/ntb/ntb_transport.c
1663
ntb_transport_max_size(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1666
return (qp->tx_max_frame - sizeof(struct ntb_payload_header));
sys/dev/ntb/ntb_transport.c
1670
ntb_transport_tx_free_entry(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
1672
unsigned int head = qp->tx_index;
sys/dev/ntb/ntb_transport.c
1673
unsigned int tail = qp->remote_rx_info->entry;
sys/dev/ntb/ntb_transport.c
1675
return (tail >= head ? tail - head : qp->tx_max_entry + tail - head);
sys/dev/ntb/ntb_transport.c
265
#define QP_TO_MW(nt, qp) ((qp) % nt->mw_count)
sys/dev/ntb/ntb_transport.c
274
static int ntb_process_tx(struct ntb_transport_qp *qp,
sys/dev/ntb/ntb_transport.c
277
static int ntb_process_rxc(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.c
278
static void ntb_memcpy_rx(struct ntb_transport_qp *qp,
sys/dev/ntb/ntb_transport.c
280
static inline void ntb_rx_copy_callback(struct ntb_transport_qp *qp,
sys/dev/ntb/ntb_transport.c
282
static void ntb_complete_rxc(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.c
293
static void ntb_qp_link_down(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.c
294
static void ntb_qp_link_down_reset(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.c
295
static void ntb_qp_link_cleanup(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.c
296
static void ntb_send_link_down(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.c
348
int rc, i, db_count, spad_count, qp, qpu, qpo, qpt;
sys/dev/ntb/ntb_transport.c
452
qp = (np && np[0] != 0) ? strtol(np, NULL, 10) : qpo - qpu;
sys/dev/ntb/ntb_transport.c
453
if (qp <= 0)
sys/dev/ntb/ntb_transport.c
454
qp = 1;
sys/dev/ntb/ntb_transport.c
456
if (qp > qpt - qpu) {
sys/dev/ntb/ntb_transport.c
464
nc->qpcnt = qp;
sys/dev/ntb/ntb_transport.c
477
if (qp > 1)
sys/dev/ntb/ntb_transport.c
478
printf("-%d", qpu + qp - 1);
sys/dev/ntb/ntb_transport.c
482
qpu += qp;
sys/dev/ntb/ntb_transport.c
597
struct ntb_transport_qp *qp;
sys/dev/ntb/ntb_transport.c
607
qp = &nt->qp_vec[qp_num];
sys/dev/ntb/ntb_transport.c
608
qp->qp_num = qp_num;
sys/dev/ntb/ntb_transport.c
609
qp->transport = nt;
sys/dev/ntb/ntb_transport.c
610
qp->dev = nt->dev;
sys/dev/ntb/ntb_transport.c
611
qp->client_ready = false;
sys/dev/ntb/ntb_transport.c
612
qp->event_handler = NULL;
sys/dev/ntb/ntb_transport.c
613
ntb_qp_link_down_reset(qp);
sys/dev/ntb/ntb_transport.c
625
qp->tx_mw = mw->vbase + qp_offset;
sys/dev/ntb/ntb_transport.c
626
KASSERT(qp->tx_mw != NULL, ("uh oh?"));
sys/dev/ntb/ntb_transport.c
629
qp->tx_mw_phys = mw_base + qp_offset;
sys/dev/ntb/ntb_transport.c
630
KASSERT(qp->tx_mw_phys != 0, ("uh oh?"));
sys/dev/ntb/ntb_transport.c
633
qp->rx_info = (void *)(qp->tx_mw + tx_size);
sys/dev/ntb/ntb_transport.c
636
qp->tx_max_frame = qmin(transport_mtu, tx_size / 2);
sys/dev/ntb/ntb_transport.c
637
qp->tx_max_entry = tx_size / qp->tx_max_frame;
sys/dev/ntb/ntb_transport.c
639
callout_init(&qp->link_work, 1);
sys/dev/ntb/ntb_transport.c
640
callout_init(&qp->rx_full, 1);
sys/dev/ntb/ntb_transport.c
642
mtx_init(&qp->ntb_rx_q_lock, "ntb rx q", NULL, MTX_SPIN);
sys/dev/ntb/ntb_transport.c
643
mtx_init(&qp->ntb_tx_free_q_lock, "ntb tx free q", NULL, MTX_SPIN);
sys/dev/ntb/ntb_transport.c
644
mtx_init(&qp->tx_lock, "ntb transport tx", NULL, MTX_DEF);
sys/dev/ntb/ntb_transport.c
645
TASK_INIT(&qp->rxc_db_work, 0, ntb_transport_rxc_db, qp);
sys/dev/ntb/ntb_transport.c
646
qp->rxc_tq = taskqueue_create("ntbt_rx", M_WAITOK,
sys/dev/ntb/ntb_transport.c
647
taskqueue_thread_enqueue, &qp->rxc_tq);
sys/dev/ntb/ntb_transport.c
648
taskqueue_start_threads(&qp->rxc_tq, 1, PI_NET, "%s rx%d",
sys/dev/ntb/ntb_transport.c
651
STAILQ_INIT(&qp->rx_post_q);
sys/dev/ntb/ntb_transport.c
652
STAILQ_INIT(&qp->rx_pend_q);
sys/dev/ntb/ntb_transport.c
653
STAILQ_INIT(&qp->tx_free_q);
sys/dev/ntb/ntb_transport.c
657
ntb_transport_free_queue(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
659
struct ntb_transport_ctx *nt = qp->transport;
sys/dev/ntb/ntb_transport.c
662
callout_drain(&qp->link_work);
sys/dev/ntb/ntb_transport.c
664
ntb_db_set_mask(qp->dev, 1ull << qp->qp_num);
sys/dev/ntb/ntb_transport.c
665
taskqueue_drain_all(qp->rxc_tq);
sys/dev/ntb/ntb_transport.c
666
taskqueue_free(qp->rxc_tq);
sys/dev/ntb/ntb_transport.c
668
qp->cb_data = NULL;
sys/dev/ntb/ntb_transport.c
669
qp->rx_handler = NULL;
sys/dev/ntb/ntb_transport.c
670
qp->tx_handler = NULL;
sys/dev/ntb/ntb_transport.c
671
qp->event_handler = NULL;
sys/dev/ntb/ntb_transport.c
673
while ((entry = ntb_list_rm(&qp->ntb_rx_q_lock, &qp->rx_pend_q)))
sys/dev/ntb/ntb_transport.c
676
while ((entry = ntb_list_rm(&qp->ntb_rx_q_lock, &qp->rx_post_q)))
sys/dev/ntb/ntb_transport.c
679
while ((entry = ntb_list_rm(&qp->ntb_tx_free_q_lock, &qp->tx_free_q)))
sys/dev/ntb/ntb_transport.c
682
nt->qp_bitmap &= ~(1 << qp->qp_num);
sys/dev/ntb/ntb_transport.c
706
struct ntb_transport_qp *qp;
sys/dev/ntb/ntb_transport.c
712
qp = &nt->qp_vec[nc->qpoff + q];
sys/dev/ntb/ntb_transport.c
713
nt->qp_bitmap |= (1 << qp->qp_num);
sys/dev/ntb/ntb_transport.c
714
qp->cb_data = data;
sys/dev/ntb/ntb_transport.c
715
qp->rx_handler = handlers->rx_handler;
sys/dev/ntb/ntb_transport.c
716
qp->tx_handler = handlers->tx_handler;
sys/dev/ntb/ntb_transport.c
717
qp->event_handler = handlers->event_handler;
sys/dev/ntb/ntb_transport.c
724
entry->qp = qp;
sys/dev/ntb/ntb_transport.c
725
ntb_list_add(&qp->ntb_rx_q_lock, entry, &qp->rx_pend_q);
sys/dev/ntb/ntb_transport.c
730
entry->qp = qp;
sys/dev/ntb/ntb_transport.c
731
ntb_list_add(&qp->ntb_tx_free_q_lock, entry, &qp->tx_free_q);
sys/dev/ntb/ntb_transport.c
734
ntb_db_clear(dev, 1ull << qp->qp_num);
sys/dev/ntb/ntb_transport.c
735
return (qp);
sys/dev/ntb/ntb_transport.c
745
ntb_transport_link_up(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
747
struct ntb_transport_ctx *nt = qp->transport;
sys/dev/ntb/ntb_transport.c
749
qp->client_ready = true;
sys/dev/ntb/ntb_transport.c
751
ntb_printf(2, "qp %d client ready\n", qp->qp_num);
sys/dev/ntb/ntb_transport.c
754
callout_reset(&qp->link_work, 0, ntb_qp_link_work, qp);
sys/dev/ntb/ntb_transport.c
773
ntb_transport_tx_enqueue(struct ntb_transport_qp *qp, void *cb, void *data,
sys/dev/ntb/ntb_transport.c
779
if (!qp->link_is_up || len == 0) {
sys/dev/ntb/ntb_transport.c
784
entry = ntb_list_rm(&qp->ntb_tx_free_q_lock, &qp->tx_free_q);
sys/dev/ntb/ntb_transport.c
787
qp->tx_err_no_buf++;
sys/dev/ntb/ntb_transport.c
797
mtx_lock(&qp->tx_lock);
sys/dev/ntb/ntb_transport.c
798
rc = ntb_process_tx(qp, entry);
sys/dev/ntb/ntb_transport.c
799
mtx_unlock(&qp->tx_lock);
sys/dev/ntb/ntb_transport.c
801
ntb_list_add(&qp->ntb_tx_free_q_lock, entry, &qp->tx_free_q);
sys/dev/ntb/ntb_transport.c
813
struct ntb_transport_qp *qp = entry->qp;
sys/dev/ntb/ntb_transport.c
819
ntb_peer_db_set(qp->dev, 1ull << qp->qp_num);
sys/dev/ntb/ntb_transport.c
827
qp->tx_bytes += entry->len;
sys/dev/ntb/ntb_transport.c
829
if (qp->tx_handler)
sys/dev/ntb/ntb_transport.c
830
qp->tx_handler(qp, qp->cb_data, entry->buf,
sys/dev/ntb/ntb_transport.c
840
ntb_list_add(&qp->ntb_tx_free_q_lock, entry, &qp->tx_free_q);
sys/dev/ntb/ntb_transport.c
862
ntb_async_tx(struct ntb_transport_qp *qp, struct ntb_queue_entry *entry)
sys/dev/ntb/ntb_transport.c
867
offset = qp->tx_mw + qp->tx_max_frame * qp->tx_index;
sys/dev/ntb/ntb_transport.c
868
hdr = (struct ntb_payload_header *)((char *)offset + qp->tx_max_frame -
sys/dev/ntb/ntb_transport.c
873
iowrite32(qp->tx_pkts, &hdr->ver);
sys/dev/ntb/ntb_transport.c
879
ntb_process_tx(struct ntb_transport_qp *qp, struct ntb_queue_entry *entry)
sys/dev/ntb/ntb_transport.c
884
qp->tx_pkts, qp->tx_index, qp->remote_rx_info->entry);
sys/dev/ntb/ntb_transport.c
885
if (qp->tx_index == qp->remote_rx_info->entry) {
sys/dev/ntb/ntb_transport.c
887
qp->tx_ring_full++;
sys/dev/ntb/ntb_transport.c
891
if (entry->len > qp->tx_max_frame - sizeof(struct ntb_payload_header)) {
sys/dev/ntb/ntb_transport.c
892
if (qp->tx_handler != NULL)
sys/dev/ntb/ntb_transport.c
893
qp->tx_handler(qp, qp->cb_data, entry->buf,
sys/dev/ntb/ntb_transport.c
899
ntb_list_add(&qp->ntb_tx_free_q_lock, entry, &qp->tx_free_q);
sys/dev/ntb/ntb_transport.c
905
CTR2(KTR_NTB, "TX: copying entry %p to index %u", entry, qp->tx_index);
sys/dev/ntb/ntb_transport.c
906
ntb_async_tx(qp, entry);
sys/dev/ntb/ntb_transport.c
908
qp->tx_index++;
sys/dev/ntb/ntb_transport.c
909
qp->tx_index %= qp->tx_max_entry;
sys/dev/ntb/ntb_transport.c
911
qp->tx_pkts++;
sys/dev/ntb/ntb_transport.c
920
struct ntb_transport_qp *qp = arg;
sys/dev/ntb/ntb_transport.c
921
uint64_t qp_mask = 1ull << qp->qp_num;
sys/dev/ntb/ntb_transport.c
926
while ((rc = ntb_process_rxc(qp)) == 0)
sys/dev/ntb/ntb_transport.c
930
if ((ntb_db_read(qp->dev) & qp_mask) != 0) {
sys/dev/ntb/ntb_transport.c
932
ntb_db_clear(qp->dev, qp_mask);
sys/dev/ntb/ntb_transport.c
935
if (qp->link_is_up)
sys/dev/ntb/ntb_transport.c
936
ntb_db_clear_mask(qp->dev, qp_mask);
sys/dev/ntb/ntb_transport.c
940
ntb_process_rxc(struct ntb_transport_qp *qp)
sys/dev/ntb/ntb_transport.c
946
offset = qp->rx_buff + qp->rx_max_frame * qp->rx_index;
sys/dev/ntb/ntb_transport.c
947
hdr = (void *)(offset + qp->rx_max_frame -
sys/dev/ntb/ntb_transport.c
950
CTR1(KTR_NTB, "RX: process_rxc rx_index = %u", qp->rx_index);
sys/dev/ntb/ntb_transport.c
953
qp->rx_ring_empty++;
sys/dev/ntb/ntb_transport.c
959
ntb_qp_link_down(qp);
sys/dev/ntb/ntb_transport.c
964
if (hdr->ver != (uint32_t)qp->rx_pkts) {
sys/dev/ntb/ntb_transport.c
966
"Returning entry to rx_pend_q", hdr->ver, qp->rx_pkts);
sys/dev/ntb/ntb_transport.c
967
qp->rx_err_ver++;
sys/dev/ntb/ntb_transport.c
971
entry = ntb_list_mv(&qp->ntb_rx_q_lock, &qp->rx_pend_q, &qp->rx_post_q);
sys/dev/ntb/ntb_transport.c
973
qp->rx_err_no_buf++;
sys/dev/ntb/ntb_transport.c
977
callout_stop(&qp->rx_full);
sys/dev/ntb/ntb_transport.c
981
entry->index = qp->rx_index;
sys/dev/ntb/ntb_transport.c
986
qp->rx_err_oflow++;
sys/dev/ntb/ntb_transport.c
991
ntb_complete_rxc(qp);
sys/dev/ntb/ntb_transport.c
993
qp->rx_bytes += hdr->len;
sys/dev/ntb/ntb_transport.c
994
qp->rx_pkts++;
sys/dev/ntb/ntb_transport.c
996
CTR1(KTR_NTB, "RX: received %ld rx_pkts", qp->rx_pkts);
sys/dev/ntb/ntb_transport.h
35
void (*rx_handler)(struct ntb_transport_qp *qp, void *qp_data,
sys/dev/ntb/ntb_transport.h
37
void (*tx_handler)(struct ntb_transport_qp *qp, void *qp_data,
sys/dev/ntb/ntb_transport.h
46
void ntb_transport_free_queue(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.h
47
unsigned char ntb_transport_qp_num(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.h
48
unsigned int ntb_transport_max_size(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.h
49
int ntb_transport_rx_enqueue(struct ntb_transport_qp *qp, void *cb, void *data,
sys/dev/ntb/ntb_transport.h
51
int ntb_transport_tx_enqueue(struct ntb_transport_qp *qp, void *cb, void *data,
sys/dev/ntb/ntb_transport.h
53
void *ntb_transport_rx_remove(struct ntb_transport_qp *qp, unsigned int *len);
sys/dev/ntb/ntb_transport.h
54
void ntb_transport_link_up(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.h
55
void ntb_transport_link_down(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.h
56
bool ntb_transport_link_query(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.h
57
uint64_t ntb_transport_link_speed(struct ntb_transport_qp *qp);
sys/dev/ntb/ntb_transport.h
58
unsigned int ntb_transport_tx_free_entry(struct ntb_transport_qp *qp);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
245
nvmft_dispatch_command(struct nvmft_qpair *qp, struct nvmf_capsule *nc,
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
248
struct nvmft_controller *ctrlr = nvmft_qpair_ctrlr(qp);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
255
nvmft_send_generic_error(qp, nc,
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
269
NVMFT_QP(io) = qp;
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
278
nvmft_qpair_name(qp), error);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
283
nvmft_controller_error(ctrlr, qp, ENXIO);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
339
nvmft_datamove_out(struct ctl_nvmeio *ctnio, struct nvmft_qpair *qp,
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
367
nvmft_printf(nvmft_qpair_ctrlr(qp),
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
471
nvmft_datamove_in(struct ctl_nvmeio *ctnio, struct nvmft_qpair *qp,
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
486
nvmft_command_completed(qp, nc);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
502
struct nvmft_qpair *qp;
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
510
qp = NVMFT_QP(io);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
513
nvmft_datamove_in(&io->nvmeio, qp, nc);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
515
nvmft_datamove_out(&io->nvmeio, qp, nc);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
529
struct nvmft_qpair *qp;
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
531
qp = NVMFT_QP(io);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
532
nvmft_qpair_datamove(qp, io);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
564
struct nvmft_qpair *qp;
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
573
qp = NVMFT_QP(io);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
574
ctrlr = nvmft_qpair_ctrlr(qp);
sys/dev/nvmf/controller/ctl_frontend_nvmf.c
615
nvmft_send_response(qp, &io->nvmeio.cpl);
sys/dev/nvmf/controller/nvmft_controller.c
1032
nvmft_handle_io_command(struct nvmft_qpair *qp, uint16_t qid,
sys/dev/nvmf/controller/nvmft_controller.c
1035
struct nvmft_controller *ctrlr = nvmft_qpair_ctrlr(qp);
sys/dev/nvmf/controller/nvmft_controller.c
1043
nvmft_send_generic_error(qp, nc,
sys/dev/nvmf/controller/nvmft_controller.c
1056
nvmft_dispatch_command(qp, nc, false);
sys/dev/nvmf/controller/nvmft_controller.c
1060
nvmft_send_generic_error(qp, nc,
sys/dev/nvmf/controller/nvmft_controller.c
125
struct nvmft_qpair *qp;
sys/dev/nvmf/controller/nvmft_controller.c
132
qp = nvmft_qpair_init(trtype, params, 0, "admin queue");
sys/dev/nvmf/controller/nvmft_controller.c
133
if (qp == NULL) {
sys/dev/nvmf/controller/nvmft_controller.c
145
nvmft_connect_error(qp, cmd, NVME_SCT_COMMAND_SPECIFIC,
sys/dev/nvmf/controller/nvmft_controller.c
147
nvmft_qpair_destroy(qp);
sys/dev/nvmf/controller/nvmft_controller.c
166
nvmft_qpair_destroy(qp);
sys/dev/nvmf/controller/nvmft_controller.c
174
ctrlr->admin = qp;
sys/dev/nvmf/controller/nvmft_controller.c
194
nvmft_finish_accept(qp, cmd, ctrlr);
sys/dev/nvmf/controller/nvmft_controller.c
205
struct nvmft_qpair *qp;
sys/dev/nvmf/controller/nvmft_controller.c
215
qp = nvmft_qpair_init(trtype, params, qid, name);
sys/dev/nvmf/controller/nvmft_controller.c
216
if (qp == NULL) {
sys/dev/nvmf/controller/nvmft_controller.c
232
nvmft_connect_invalid_parameters(qp, cmd, true,
sys/dev/nvmf/controller/nvmft_controller.c
234
nvmft_qpair_destroy(qp);
sys/dev/nvmf/controller/nvmft_controller.c
243
nvmft_connect_invalid_parameters(qp, cmd, true,
sys/dev/nvmf/controller/nvmft_controller.c
245
nvmft_qpair_destroy(qp);
sys/dev/nvmf/controller/nvmft_controller.c
253
nvmft_connect_invalid_parameters(qp, cmd, true,
sys/dev/nvmf/controller/nvmft_controller.c
255
nvmft_qpair_destroy(qp);
sys/dev/nvmf/controller/nvmft_controller.c
268
nvmft_connect_invalid_parameters(qp, cmd, true,
sys/dev/nvmf/controller/nvmft_controller.c
270
nvmft_qpair_destroy(qp);
sys/dev/nvmf/controller/nvmft_controller.c
279
nvmft_connect_error(qp, cmd, NVME_SCT_GENERIC,
sys/dev/nvmf/controller/nvmft_controller.c
281
nvmft_qpair_destroy(qp);
sys/dev/nvmf/controller/nvmft_controller.c
290
nvmft_connect_invalid_parameters(qp, cmd, false,
sys/dev/nvmf/controller/nvmft_controller.c
292
nvmft_qpair_destroy(qp);
sys/dev/nvmf/controller/nvmft_controller.c
295
if (ctrlr->io_qpairs[qid - 1].qp != NULL) {
sys/dev/nvmf/controller/nvmft_controller.c
301
nvmft_connect_error(qp, cmd, NVME_SCT_GENERIC,
sys/dev/nvmf/controller/nvmft_controller.c
303
nvmft_qpair_destroy(qp);
sys/dev/nvmf/controller/nvmft_controller.c
307
ctrlr->io_qpairs[qid - 1].qp = qp;
sys/dev/nvmf/controller/nvmft_controller.c
310
nvmft_finish_accept(qp, cmd, ctrlr);
sys/dev/nvmf/controller/nvmft_controller.c
328
if (ctrlr->io_qpairs[i].qp != NULL) {
sys/dev/nvmf/controller/nvmft_controller.c
331
nvmft_qpair_shutdown(ctrlr->io_qpairs[i].qp);
sys/dev/nvmf/controller/nvmft_controller.c
349
if (ctrlr->io_qpairs[i].qp != NULL)
sys/dev/nvmf/controller/nvmft_controller.c
350
nvmft_qpair_destroy(ctrlr->io_qpairs[i].qp);
sys/dev/nvmf/controller/nvmft_controller.c
425
nvmft_controller_error(struct nvmft_controller *ctrlr, struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_controller.c
439
if (qp != ctrlr->admin)
sys/dev/nvmf/controller/nvmft_qpair.c
100
nvmft_handle_io_command(qp, qp->qid, nc);
sys/dev/nvmf/controller/nvmft_qpair.c
107
struct nvmft_qpair *qp;
sys/dev/nvmf/controller/nvmft_qpair.c
109
qp = malloc(sizeof(*qp), M_NVMFT, M_WAITOK | M_ZERO);
sys/dev/nvmf/controller/nvmft_qpair.c
110
qp->admin = nvlist_get_bool(params, "admin");
sys/dev/nvmf/controller/nvmft_qpair.c
111
qp->sq_flow_control = nvlist_get_bool(params, "sq_flow_control");
sys/dev/nvmf/controller/nvmft_qpair.c
112
qp->qsize = nvlist_get_number(params, "qsize");
sys/dev/nvmf/controller/nvmft_qpair.c
113
qp->qid = qid;
sys/dev/nvmf/controller/nvmft_qpair.c
114
qp->sqhd = nvlist_get_number(params, "sqhd");
sys/dev/nvmf/controller/nvmft_qpair.c
115
strlcpy(qp->name, name, sizeof(qp->name));
sys/dev/nvmf/controller/nvmft_qpair.c
116
mtx_init(&qp->lock, "nvmft qp", NULL, MTX_DEF);
sys/dev/nvmf/controller/nvmft_qpair.c
117
qp->cids = BITSET_ALLOC(NUM_CIDS, M_NVMFT, M_WAITOK | M_ZERO);
sys/dev/nvmf/controller/nvmft_qpair.c
118
STAILQ_INIT(&qp->datamove_queue);
sys/dev/nvmf/controller/nvmft_qpair.c
119
TASK_INIT(&qp->datamove_task, 0, nvmft_datamove_task, qp);
sys/dev/nvmf/controller/nvmft_qpair.c
121
qp->qp = nvmf_allocate_qpair(trtype, true, params, nvmft_qpair_error,
sys/dev/nvmf/controller/nvmft_qpair.c
122
qp, nvmft_receive_capsule, qp);
sys/dev/nvmf/controller/nvmft_qpair.c
123
if (qp->qp == NULL) {
sys/dev/nvmf/controller/nvmft_qpair.c
124
mtx_destroy(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
125
free(qp->cids, M_NVMFT);
sys/dev/nvmf/controller/nvmft_qpair.c
126
free(qp, M_NVMFT);
sys/dev/nvmf/controller/nvmft_qpair.c
130
refcount_init(&qp->qp_refs, 1);
sys/dev/nvmf/controller/nvmft_qpair.c
131
return (qp);
sys/dev/nvmf/controller/nvmft_qpair.c
135
nvmft_qpair_shutdown(struct nvmft_qpair *qp)
sys/dev/nvmf/controller/nvmft_qpair.c
142
mtx_lock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
143
nq = qp->qp;
sys/dev/nvmf/controller/nvmft_qpair.c
144
qp->qp = NULL;
sys/dev/nvmf/controller/nvmft_qpair.c
145
STAILQ_CONCAT(&datamove_queue, &qp->datamove_queue);
sys/dev/nvmf/controller/nvmft_qpair.c
146
mtx_unlock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
147
if (nq != NULL && refcount_release(&qp->qp_refs))
sys/dev/nvmf/controller/nvmft_qpair.c
155
nvmft_drain_task(&qp->datamove_task);
sys/dev/nvmf/controller/nvmft_qpair.c
159
nvmft_qpair_destroy(struct nvmft_qpair *qp)
sys/dev/nvmf/controller/nvmft_qpair.c
161
nvmft_qpair_shutdown(qp);
sys/dev/nvmf/controller/nvmft_qpair.c
162
mtx_destroy(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
163
free(qp->cids, M_NVMFT);
sys/dev/nvmf/controller/nvmft_qpair.c
164
free(qp, M_NVMFT);
sys/dev/nvmf/controller/nvmft_qpair.c
168
nvmft_qpair_ctrlr(struct nvmft_qpair *qp)
sys/dev/nvmf/controller/nvmft_qpair.c
170
return (qp->ctrlr);
sys/dev/nvmf/controller/nvmft_qpair.c
174
nvmft_qpair_id(struct nvmft_qpair *qp)
sys/dev/nvmf/controller/nvmft_qpair.c
176
return (qp->qid);
sys/dev/nvmf/controller/nvmft_qpair.c
180
nvmft_qpair_name(struct nvmft_qpair *qp)
sys/dev/nvmf/controller/nvmft_qpair.c
182
return (qp->name);
sys/dev/nvmf/controller/nvmft_qpair.c
186
nvmft_max_ioccsz(struct nvmft_qpair *qp)
sys/dev/nvmf/controller/nvmft_qpair.c
188
return (nvmf_max_ioccsz(qp->qp));
sys/dev/nvmf/controller/nvmft_qpair.c
192
_nvmft_send_response(struct nvmft_qpair *qp, const void *cqe)
sys/dev/nvmf/controller/nvmft_qpair.c
200
mtx_lock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
201
nq = qp->qp;
sys/dev/nvmf/controller/nvmft_qpair.c
203
mtx_unlock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
206
refcount_acquire(&qp->qp_refs);
sys/dev/nvmf/controller/nvmft_qpair.c
209
if (qp->sq_flow_control) {
sys/dev/nvmf/controller/nvmft_qpair.c
210
qp->sqhd = (qp->sqhd + 1) % qp->qsize;
sys/dev/nvmf/controller/nvmft_qpair.c
211
cpl.sqhd = htole16(qp->sqhd);
sys/dev/nvmf/controller/nvmft_qpair.c
214
mtx_unlock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
220
if (refcount_release(&qp->qp_refs))
sys/dev/nvmf/controller/nvmft_qpair.c
226
nvmft_command_completed(struct nvmft_qpair *qp, struct nvmf_capsule *nc)
sys/dev/nvmf/controller/nvmft_qpair.c
231
KASSERT(BIT_ISSET(NUM_CIDS, cmd->cid, qp->cids),
sys/dev/nvmf/controller/nvmft_qpair.c
234
BIT_CLR_ATOMIC(NUM_CIDS, cmd->cid, qp->cids);
sys/dev/nvmf/controller/nvmft_qpair.c
238
nvmft_send_response(struct nvmft_qpair *qp, const void *cqe)
sys/dev/nvmf/controller/nvmft_qpair.c
243
KASSERT(BIT_ISSET(NUM_CIDS, cpl->cid, qp->cids),
sys/dev/nvmf/controller/nvmft_qpair.c
246
BIT_CLR_ATOMIC(NUM_CIDS, cpl->cid, qp->cids);
sys/dev/nvmf/controller/nvmft_qpair.c
247
return (_nvmft_send_response(qp, cqe));
sys/dev/nvmf/controller/nvmft_qpair.c
26
struct nvmf_qpair *qp;
sys/dev/nvmf/controller/nvmft_qpair.c
262
nvmft_send_error(struct nvmft_qpair *qp, struct nvmf_capsule *nc,
sys/dev/nvmf/controller/nvmft_qpair.c
271
return (nvmft_send_response(qp, &cpl));
sys/dev/nvmf/controller/nvmft_qpair.c
275
nvmft_send_generic_error(struct nvmft_qpair *qp, struct nvmf_capsule *nc,
sys/dev/nvmf/controller/nvmft_qpair.c
278
return (nvmft_send_error(qp, nc, NVME_SCT_GENERIC, sc_status));
sys/dev/nvmf/controller/nvmft_qpair.c
286
_nvmft_send_generic_error(struct nvmft_qpair *qp, struct nvmf_capsule *nc,
sys/dev/nvmf/controller/nvmft_qpair.c
295
return (_nvmft_send_response(qp, &cpl));
sys/dev/nvmf/controller/nvmft_qpair.c
299
nvmft_send_success(struct nvmft_qpair *qp, struct nvmf_capsule *nc)
sys/dev/nvmf/controller/nvmft_qpair.c
301
return (nvmft_send_generic_error(qp, nc, NVME_SC_SUCCESS));
sys/dev/nvmf/controller/nvmft_qpair.c
314
nvmft_send_connect_response(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_qpair.c
321
mtx_lock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
322
nq = qp->qp;
sys/dev/nvmf/controller/nvmft_qpair.c
324
mtx_unlock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
327
refcount_acquire(&qp->qp_refs);
sys/dev/nvmf/controller/nvmft_qpair.c
328
mtx_unlock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
330
rc = nvmf_allocate_response(qp->qp, rsp, M_WAITOK);
sys/dev/nvmf/controller/nvmft_qpair.c
334
if (refcount_release(&qp->qp_refs))
sys/dev/nvmf/controller/nvmft_qpair.c
340
nvmft_connect_error(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_qpair.c
350
nvmft_send_connect_response(qp, &rsp);
sys/dev/nvmf/controller/nvmft_qpair.c
354
nvmft_connect_invalid_parameters(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_qpair.c
364
nvmft_send_connect_response(qp, &rsp);
sys/dev/nvmf/controller/nvmft_qpair.c
368
nvmft_finish_accept(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_qpair.c
373
qp->ctrlr = ctrlr;
sys/dev/nvmf/controller/nvmft_qpair.c
375
if (qp->sq_flow_control)
sys/dev/nvmf/controller/nvmft_qpair.c
376
rsp.sqhd = htole16(qp->sqhd);
sys/dev/nvmf/controller/nvmft_qpair.c
380
return (nvmft_send_connect_response(qp, &rsp));
sys/dev/nvmf/controller/nvmft_qpair.c
384
nvmft_qpair_datamove(struct nvmft_qpair *qp, union ctl_io *io)
sys/dev/nvmf/controller/nvmft_qpair.c
388
mtx_lock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
389
if (qp->qp == NULL) {
sys/dev/nvmf/controller/nvmft_qpair.c
390
mtx_unlock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
394
enqueue_task = STAILQ_EMPTY(&qp->datamove_queue);
sys/dev/nvmf/controller/nvmft_qpair.c
395
STAILQ_INSERT_TAIL(&qp->datamove_queue, &io->io_hdr, links);
sys/dev/nvmf/controller/nvmft_qpair.c
396
mtx_unlock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
398
nvmft_enqueue_task(&qp->datamove_task);
sys/dev/nvmf/controller/nvmft_qpair.c
404
struct nvmft_qpair *qp = context;
sys/dev/nvmf/controller/nvmft_qpair.c
408
mtx_lock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
409
while (!STAILQ_EMPTY(&qp->datamove_queue)) {
sys/dev/nvmf/controller/nvmft_qpair.c
410
io = (union ctl_io *)STAILQ_FIRST(&qp->datamove_queue);
sys/dev/nvmf/controller/nvmft_qpair.c
411
STAILQ_REMOVE_HEAD(&qp->datamove_queue, links);
sys/dev/nvmf/controller/nvmft_qpair.c
412
abort = (qp->qp == NULL);
sys/dev/nvmf/controller/nvmft_qpair.c
413
mtx_unlock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
418
mtx_lock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
420
mtx_unlock(&qp->lock);
sys/dev/nvmf/controller/nvmft_qpair.c
44
static int _nvmft_send_generic_error(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_qpair.c
51
struct nvmft_qpair *qp = arg;
sys/dev/nvmf/controller/nvmft_qpair.c
52
struct nvmft_controller *ctrlr = qp->ctrlr;
sys/dev/nvmf/controller/nvmft_qpair.c
63
nvmft_printf(ctrlr, "error %d on %s\n", error, qp->name);
sys/dev/nvmf/controller/nvmft_qpair.c
64
nvmft_controller_error(ctrlr, qp, error);
sys/dev/nvmf/controller/nvmft_qpair.c
70
struct nvmft_qpair *qp = arg;
sys/dev/nvmf/controller/nvmft_qpair.c
71
struct nvmft_controller *ctrlr = qp->ctrlr;
sys/dev/nvmf/controller/nvmft_qpair.c
78
qp->name, le16toh(cmd->cid), cmd->opc);
sys/dev/nvmf/controller/nvmft_qpair.c
85
_nvmft_send_generic_error(qp, nc, sc_status);
sys/dev/nvmf/controller/nvmft_qpair.c
91
if (BIT_TEST_SET_ATOMIC(NUM_CIDS, cmd->cid, qp->cids)) {
sys/dev/nvmf/controller/nvmft_qpair.c
92
_nvmft_send_generic_error(qp, nc, NVME_SC_COMMAND_ID_CONFLICT);
sys/dev/nvmf/controller/nvmft_qpair.c
97
if (qp->admin)
sys/dev/nvmf/controller/nvmft_var.h
112
void nvmft_dispatch_command(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_var.h
122
struct nvmft_qpair *qp, int error);
sys/dev/nvmf/controller/nvmft_var.h
127
void nvmft_handle_io_command(struct nvmft_qpair *qp, uint16_t qid,
sys/dev/nvmf/controller/nvmft_var.h
142
void nvmft_qpair_shutdown(struct nvmft_qpair *qp);
sys/dev/nvmf/controller/nvmft_var.h
143
void nvmft_qpair_destroy(struct nvmft_qpair *qp);
sys/dev/nvmf/controller/nvmft_var.h
144
struct nvmft_controller *nvmft_qpair_ctrlr(struct nvmft_qpair *qp);
sys/dev/nvmf/controller/nvmft_var.h
145
void nvmft_qpair_datamove(struct nvmft_qpair *qp, union ctl_io *io);
sys/dev/nvmf/controller/nvmft_var.h
146
uint16_t nvmft_qpair_id(struct nvmft_qpair *qp);
sys/dev/nvmf/controller/nvmft_var.h
147
const char *nvmft_qpair_name(struct nvmft_qpair *qp);
sys/dev/nvmf/controller/nvmft_var.h
148
uint32_t nvmft_max_ioccsz(struct nvmft_qpair *qp);
sys/dev/nvmf/controller/nvmft_var.h
149
void nvmft_command_completed(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_var.h
151
int nvmft_send_response(struct nvmft_qpair *qp, const void *cqe);
sys/dev/nvmf/controller/nvmft_var.h
153
int nvmft_send_error(struct nvmft_qpair *qp, struct nvmf_capsule *nc,
sys/dev/nvmf/controller/nvmft_var.h
155
int nvmft_send_generic_error(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_var.h
157
int nvmft_send_success(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_var.h
159
void nvmft_connect_error(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_var.h
162
void nvmft_connect_invalid_parameters(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_var.h
164
int nvmft_finish_accept(struct nvmft_qpair *qp,
sys/dev/nvmf/controller/nvmft_var.h
49
struct nvmft_qpair *qp;
sys/dev/nvmf/host/nvmf.c
1100
struct nvmf_host_qpair *qp;
sys/dev/nvmf/host/nvmf.c
1148
qp = sc->admin;
sys/dev/nvmf/host/nvmf.c
1150
qp = nvmf_select_io_queue(sc);
sys/dev/nvmf/host/nvmf.c
1152
req = nvmf_allocate_request(qp, &cmd, nvmf_complete, &status, M_WAITOK);
sys/dev/nvmf/host/nvmf_qpair.c
114
nvmf_dispatch_command(struct nvmf_host_qpair *qp, struct nvmf_host_command *cmd)
sys/dev/nvmf/host/nvmf_qpair.c
116
struct nvmf_softc *sc = qp->sc;
sys/dev/nvmf/host/nvmf_qpair.c
122
mtx_assert(&qp->lock, MA_OWNED);
sys/dev/nvmf/host/nvmf_qpair.c
124
qp->submitted++;
sys/dev/nvmf/host/nvmf_qpair.c
131
new_sqtail = (qp->sqtail + 1) % (qp->num_commands + 1);
sys/dev/nvmf/host/nvmf_qpair.c
132
KASSERT(new_sqtail != qp->sqhd, ("%s: qp %p is full", __func__, qp));
sys/dev/nvmf/host/nvmf_qpair.c
133
qp->sqtail = new_sqtail;
sys/dev/nvmf/host/nvmf_qpair.c
134
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
160
struct nvmf_host_qpair *qp = arg;
sys/dev/nvmf/host/nvmf_qpair.c
161
struct nvmf_softc *sc = qp->sc;
sys/dev/nvmf/host/nvmf_qpair.c
166
qp->name);
sys/dev/nvmf/host/nvmf_qpair.c
173
struct nvmf_host_qpair *qp = arg;
sys/dev/nvmf/host/nvmf_qpair.c
174
struct nvmf_softc *sc = qp->sc;
sys/dev/nvmf/host/nvmf_qpair.c
191
if (cid > qp->num_commands) {
sys/dev/nvmf/host/nvmf_qpair.c
200
mtx_lock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
201
if (qp->sq_flow_control) {
sys/dev/nvmf/host/nvmf_qpair.c
203
qp->sqhd = le16toh(cqe->sqhd);
sys/dev/nvmf/host/nvmf_qpair.c
209
qp->sqhd = (qp->sqhd + 1) % (qp->num_commands + 1);
sys/dev/nvmf/host/nvmf_qpair.c
216
if (qp->qp == NULL) {
sys/dev/nvmf/host/nvmf_qpair.c
219
qp->name);
sys/dev/nvmf/host/nvmf_qpair.c
220
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
225
cmd = qp->active_commands[cid];
sys/dev/nvmf/host/nvmf_qpair.c
227
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
239
if (STAILQ_EMPTY(&qp->pending_requests)) {
sys/dev/nvmf/host/nvmf_qpair.c
240
qp->active_commands[cid] = NULL;
sys/dev/nvmf/host/nvmf_qpair.c
241
TAILQ_INSERT_TAIL(&qp->free_commands, cmd, link);
sys/dev/nvmf/host/nvmf_qpair.c
242
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
244
cmd->req = STAILQ_FIRST(&qp->pending_requests);
sys/dev/nvmf/host/nvmf_qpair.c
245
STAILQ_REMOVE_HEAD(&qp->pending_requests, link);
sys/dev/nvmf/host/nvmf_qpair.c
246
nvmf_dispatch_command(qp, cmd);
sys/dev/nvmf/host/nvmf_qpair.c
255
nvmf_sysctls_qp(struct nvmf_softc *sc, struct nvmf_host_qpair *qp,
sys/dev/nvmf/host/nvmf_qpair.c
258
struct sysctl_ctx_list *ctx = &qp->sysctl_ctx;
sys/dev/nvmf/host/nvmf_qpair.c
275
NULL, qp->num_commands + 1, "Number of entries in queue");
sys/dev/nvmf/host/nvmf_qpair.c
276
SYSCTL_ADD_U16(ctx, list, OID_AUTO, "sq_head", CTLFLAG_RD, &qp->sqhd,
sys/dev/nvmf/host/nvmf_qpair.c
278
SYSCTL_ADD_U16(ctx, list, OID_AUTO, "sq_tail", CTLFLAG_RD, &qp->sqtail,
sys/dev/nvmf/host/nvmf_qpair.c
28
struct nvmf_qpair *qp;
sys/dev/nvmf/host/nvmf_qpair.c
281
&qp->submitted, 0, "Number of commands submitted");
sys/dev/nvmf/host/nvmf_qpair.c
289
struct nvmf_host_qpair *qp;
sys/dev/nvmf/host/nvmf_qpair.c
294
qp = malloc(sizeof(*qp), M_NVMF, M_WAITOK | M_ZERO);
sys/dev/nvmf/host/nvmf_qpair.c
295
qp->sc = sc;
sys/dev/nvmf/host/nvmf_qpair.c
296
qp->sq_flow_control = nvlist_get_bool(nvl, "sq_flow_control");
sys/dev/nvmf/host/nvmf_qpair.c
297
qp->sqhd = nvlist_get_number(nvl, "sqhd");
sys/dev/nvmf/host/nvmf_qpair.c
298
qp->sqtail = nvlist_get_number(nvl, "sqtail");
sys/dev/nvmf/host/nvmf_qpair.c
299
strlcpy(qp->name, name, sizeof(qp->name));
sys/dev/nvmf/host/nvmf_qpair.c
300
mtx_init(&qp->lock, "nvmf qp", NULL, MTX_DEF);
sys/dev/nvmf/host/nvmf_qpair.c
301
(void)sysctl_ctx_init(&qp->sysctl_ctx);
sys/dev/nvmf/host/nvmf_qpair.c
307
qp->num_commands = nvlist_get_number(nvl, "qsize") - 1;
sys/dev/nvmf/host/nvmf_qpair.c
309
qp->num_commands += sc->num_aer;
sys/dev/nvmf/host/nvmf_qpair.c
311
qp->active_commands = malloc(sizeof(*qp->active_commands) *
sys/dev/nvmf/host/nvmf_qpair.c
312
qp->num_commands, M_NVMF, M_WAITOK | M_ZERO);
sys/dev/nvmf/host/nvmf_qpair.c
313
TAILQ_INIT(&qp->free_commands);
sys/dev/nvmf/host/nvmf_qpair.c
314
for (i = 0; i < qp->num_commands; i++) {
sys/dev/nvmf/host/nvmf_qpair.c
317
TAILQ_INSERT_TAIL(&qp->free_commands, cmd, link);
sys/dev/nvmf/host/nvmf_qpair.c
319
STAILQ_INIT(&qp->pending_requests);
sys/dev/nvmf/host/nvmf_qpair.c
321
qp->qp = nvmf_allocate_qpair(trtype, false, nvl, nvmf_qp_error, qp,
sys/dev/nvmf/host/nvmf_qpair.c
322
nvmf_receive_capsule, qp);
sys/dev/nvmf/host/nvmf_qpair.c
323
if (qp->qp == NULL) {
sys/dev/nvmf/host/nvmf_qpair.c
324
(void)sysctl_ctx_free(&qp->sysctl_ctx);
sys/dev/nvmf/host/nvmf_qpair.c
325
TAILQ_FOREACH_SAFE(cmd, &qp->free_commands, link, ncmd) {
sys/dev/nvmf/host/nvmf_qpair.c
326
TAILQ_REMOVE(&qp->free_commands, cmd, link);
sys/dev/nvmf/host/nvmf_qpair.c
329
free(qp->active_commands, M_NVMF);
sys/dev/nvmf/host/nvmf_qpair.c
330
mtx_destroy(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
331
free(qp, M_NVMF);
sys/dev/nvmf/host/nvmf_qpair.c
335
nvmf_sysctls_qp(sc, qp, admin, qid);
sys/dev/nvmf/host/nvmf_qpair.c
337
return (qp);
sys/dev/nvmf/host/nvmf_qpair.c
341
nvmf_shutdown_qp(struct nvmf_host_qpair *qp)
sys/dev/nvmf/host/nvmf_qpair.c
347
mtx_lock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
348
nq = qp->qp;
sys/dev/nvmf/host/nvmf_qpair.c
349
qp->qp = NULL;
sys/dev/nvmf/host/nvmf_qpair.c
352
while (qp->shutting_down)
sys/dev/nvmf/host/nvmf_qpair.c
353
mtx_sleep(qp, &qp->lock, 0, "nvmfqpsh", 0);
sys/dev/nvmf/host/nvmf_qpair.c
354
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
357
qp->shutting_down = true;
sys/dev/nvmf/host/nvmf_qpair.c
358
while (qp->allocating != 0)
sys/dev/nvmf/host/nvmf_qpair.c
359
mtx_sleep(qp, &qp->lock, 0, "nvmfqpqu", 0);
sys/dev/nvmf/host/nvmf_qpair.c
360
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
371
for (u_int i = 0; i < qp->num_commands; i++) {
sys/dev/nvmf/host/nvmf_qpair.c
372
cmd = qp->active_commands[i];
sys/dev/nvmf/host/nvmf_qpair.c
385
while (!STAILQ_EMPTY(&qp->pending_requests)) {
sys/dev/nvmf/host/nvmf_qpair.c
386
req = STAILQ_FIRST(&qp->pending_requests);
sys/dev/nvmf/host/nvmf_qpair.c
387
STAILQ_REMOVE_HEAD(&qp->pending_requests, link);
sys/dev/nvmf/host/nvmf_qpair.c
396
mtx_lock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
397
qp->shutting_down = false;
sys/dev/nvmf/host/nvmf_qpair.c
398
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
399
wakeup(qp);
sys/dev/nvmf/host/nvmf_qpair.c
403
nvmf_destroy_qp(struct nvmf_host_qpair *qp)
sys/dev/nvmf/host/nvmf_qpair.c
407
nvmf_shutdown_qp(qp);
sys/dev/nvmf/host/nvmf_qpair.c
408
(void)sysctl_ctx_free(&qp->sysctl_ctx);
sys/dev/nvmf/host/nvmf_qpair.c
410
TAILQ_FOREACH_SAFE(cmd, &qp->free_commands, link, ncmd) {
sys/dev/nvmf/host/nvmf_qpair.c
411
TAILQ_REMOVE(&qp->free_commands, cmd, link);
sys/dev/nvmf/host/nvmf_qpair.c
414
free(qp->active_commands, M_NVMF);
sys/dev/nvmf/host/nvmf_qpair.c
415
mtx_destroy(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
416
free(qp, M_NVMF);
sys/dev/nvmf/host/nvmf_qpair.c
420
nvmf_max_xfer_size_qp(struct nvmf_host_qpair *qp)
sys/dev/nvmf/host/nvmf_qpair.c
422
return (nvmf_max_xfer_size(qp->qp));
sys/dev/nvmf/host/nvmf_qpair.c
428
struct nvmf_host_qpair *qp;
sys/dev/nvmf/host/nvmf_qpair.c
431
qp = req->qp;
sys/dev/nvmf/host/nvmf_qpair.c
432
mtx_lock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
433
if (qp->qp == NULL) {
sys/dev/nvmf/host/nvmf_qpair.c
434
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
441
cmd = TAILQ_FIRST(&qp->free_commands);
sys/dev/nvmf/host/nvmf_qpair.c
447
STAILQ_INSERT_TAIL(&qp->pending_requests, req, link);
sys/dev/nvmf/host/nvmf_qpair.c
448
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
452
TAILQ_REMOVE(&qp->free_commands, cmd, link);
sys/dev/nvmf/host/nvmf_qpair.c
453
KASSERT(qp->active_commands[cmd->cid] == NULL,
sys/dev/nvmf/host/nvmf_qpair.c
455
qp->active_commands[cmd->cid] = cmd;
sys/dev/nvmf/host/nvmf_qpair.c
457
nvmf_dispatch_command(qp, cmd);
sys/dev/nvmf/host/nvmf_qpair.c
51
nvmf_allocate_request(struct nvmf_host_qpair *qp, void *sqe,
sys/dev/nvmf/host/nvmf_qpair.c
64
mtx_lock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
65
nq = qp->qp;
sys/dev/nvmf/host/nvmf_qpair.c
67
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
71
qp->allocating++;
sys/dev/nvmf/host/nvmf_qpair.c
72
MPASS(qp->allocating != 0);
sys/dev/nvmf/host/nvmf_qpair.c
73
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
75
req->qp = qp;
sys/dev/nvmf/host/nvmf_qpair.c
84
mtx_lock(&qp->lock);
sys/dev/nvmf/host/nvmf_qpair.c
85
qp->allocating--;
sys/dev/nvmf/host/nvmf_qpair.c
86
if (qp->allocating == 0 && qp->shutting_down)
sys/dev/nvmf/host/nvmf_qpair.c
87
wakeup(qp);
sys/dev/nvmf/host/nvmf_qpair.c
88
mtx_unlock(&qp->lock);
sys/dev/nvmf/host/nvmf_sim.c
110
struct nvmf_host_qpair *qp;
sys/dev/nvmf/host/nvmf_sim.c
123
qp = nvmf_select_io_queue(sc);
sys/dev/nvmf/host/nvmf_sim.c
125
qp = sc->admin;
sys/dev/nvmf/host/nvmf_sim.c
126
req = nvmf_allocate_request(qp, &nvmeio->cmd, nvmf_ccb_complete,
sys/dev/nvmf/host/nvmf_var.h
102
struct nvmf_host_qpair *qp;
sys/dev/nvmf/host/nvmf_var.h
211
void nvmf_shutdown_qp(struct nvmf_host_qpair *qp);
sys/dev/nvmf/host/nvmf_var.h
212
void nvmf_destroy_qp(struct nvmf_host_qpair *qp);
sys/dev/nvmf/host/nvmf_var.h
213
uint64_t nvmf_max_xfer_size_qp(struct nvmf_host_qpair *qp);
sys/dev/nvmf/host/nvmf_var.h
214
struct nvmf_request *nvmf_allocate_request(struct nvmf_host_qpair *qp,
sys/dev/nvmf/nvmf_tcp.c
1001
todo = min(data_len, qp->max_tx_data);
sys/dev/nvmf/nvmf_tcp.c
1004
tcp_send_h2c_pdu(qp, r2t->cccid, r2t->ttag, data_offset, m,
sys/dev/nvmf/nvmf_tcp.c
1049
nvmf_tcp_dispatch_pdu(struct nvmf_tcp_qpair *qp,
sys/dev/nvmf/nvmf_tcp.c
1064
return (nvmf_tcp_save_command_capsule(qp, pdu));
sys/dev/nvmf/nvmf_tcp.c
1066
return (nvmf_tcp_save_response_capsule(qp, pdu));
sys/dev/nvmf/nvmf_tcp.c
1068
return (nvmf_tcp_handle_h2c_data(qp, pdu));
sys/dev/nvmf/nvmf_tcp.c
1070
return (nvmf_tcp_handle_c2h_data(qp, pdu));
sys/dev/nvmf/nvmf_tcp.c
1072
return (nvmf_tcp_handle_r2t(qp, pdu));
sys/dev/nvmf/nvmf_tcp.c
1079
struct nvmf_tcp_qpair *qp = arg;
sys/dev/nvmf/nvmf_tcp.c
1080
struct socket *so = qp->so;
sys/dev/nvmf/nvmf_tcp.c
1093
while (!qp->rx_shutdown) {
sys/dev/nvmf/nvmf_tcp.c
1103
nvmf_qpair_error(&qp->qp, error);
sys/dev/nvmf/nvmf_tcp.c
1105
while (!qp->rx_shutdown)
sys/dev/nvmf/nvmf_tcp.c
1106
cv_wait(&qp->rx_cv, SOCKBUF_MTX(&so->so_rcv));
sys/dev/nvmf/nvmf_tcp.c
1119
cv_wait(&qp->rx_cv, SOCKBUF_MTX(&so->so_rcv));
sys/dev/nvmf/nvmf_tcp.c
1183
error = nvmf_tcp_validate_pdu(qp, &pdu);
sys/dev/nvmf/nvmf_tcp.c
1187
error = nvmf_tcp_dispatch_pdu(qp, &ch, &pdu);
sys/dev/nvmf/nvmf_tcp.c
1202
terror = cv_timedwait(&qp->rx_cv,
sys/dev/nvmf/nvmf_tcp.c
1219
tcp_command_pdu(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_capsule *tc)
sys/dev/nvmf/nvmf_tcp.c
1233
cb = tcp_alloc_command_buffer(qp, &nc->nc_data, 0,
sys/dev/nvmf/nvmf_tcp.c
1236
if (nc->nc_send_data && nc->nc_data.io_len <= qp->max_icd) {
sys/dev/nvmf/nvmf_tcp.c
1243
mtx_lock(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1244
tcp_add_command_buffer(&qp->tx_buffers, cb);
sys/dev/nvmf/nvmf_tcp.c
1245
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1247
mtx_lock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1248
tcp_add_command_buffer(&qp->rx_buffers, cb);
sys/dev/nvmf/nvmf_tcp.c
1249
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1270
top = nvmf_tcp_construct_pdu(qp, &cmd, sizeof(cmd), m, m != NULL ?
sys/dev/nvmf/nvmf_tcp.c
1276
tcp_response_pdu(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_capsule *tc)
sys/dev/nvmf/nvmf_tcp.c
1285
return (nvmf_tcp_construct_pdu(qp, &rsp, sizeof(rsp), NULL, 0));
sys/dev/nvmf/nvmf_tcp.c
1289
capsule_to_pdu(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_capsule *tc)
sys/dev/nvmf/nvmf_tcp.c
1292
return (tcp_command_pdu(qp, tc));
sys/dev/nvmf/nvmf_tcp.c
1294
return (tcp_response_pdu(qp, tc));
sys/dev/nvmf/nvmf_tcp.c
1300
struct nvmf_tcp_qpair *qp = arg;
sys/dev/nvmf/nvmf_tcp.c
1302
struct socket *so = qp->so;
sys/dev/nvmf/nvmf_tcp.c
1309
while (!qp->tx_shutdown) {
sys/dev/nvmf/nvmf_tcp.c
1315
nvmf_qpair_error(&qp->qp, error);
sys/dev/nvmf/nvmf_tcp.c
1317
while (!qp->tx_shutdown)
sys/dev/nvmf/nvmf_tcp.c
1318
cv_wait(&qp->tx_cv, SOCKBUF_MTX(&so->so_snd));
sys/dev/nvmf/nvmf_tcp.c
1324
m = mbufq_dequeue(&qp->tx_pdus);
sys/dev/nvmf/nvmf_tcp.c
1327
if (STAILQ_EMPTY(&qp->tx_capsules)) {
sys/dev/nvmf/nvmf_tcp.c
1328
cv_wait(&qp->tx_cv, SOCKBUF_MTX(&so->so_snd));
sys/dev/nvmf/nvmf_tcp.c
1333
tc = STAILQ_FIRST(&qp->tx_capsules);
sys/dev/nvmf/nvmf_tcp.c
1334
STAILQ_REMOVE_HEAD(&qp->tx_capsules, link);
sys/dev/nvmf/nvmf_tcp.c
1337
n = capsule_to_pdu(qp, tc);
sys/dev/nvmf/nvmf_tcp.c
134
#define TQP(qp) ((struct nvmf_tcp_qpair *)(qp))
sys/dev/nvmf/nvmf_tcp.c
1341
mbufq_enqueue(&qp->tx_pdus, n);
sys/dev/nvmf/nvmf_tcp.c
1352
cv_wait(&qp->tx_cv, SOCKBUF_MTX(&so->so_snd));
sys/dev/nvmf/nvmf_tcp.c
1399
struct nvmf_tcp_qpair *qp = arg;
sys/dev/nvmf/nvmf_tcp.c
1402
cv_signal(&qp->rx_cv);
sys/dev/nvmf/nvmf_tcp.c
1409
struct nvmf_tcp_qpair *qp = arg;
sys/dev/nvmf/nvmf_tcp.c
1412
cv_signal(&qp->tx_cv);
sys/dev/nvmf/nvmf_tcp.c
1419
struct nvmf_tcp_qpair *qp;
sys/dev/nvmf/nvmf_tcp.c
1455
qp = malloc(sizeof(*qp), M_NVMF_TCP, M_WAITOK | M_ZERO);
sys/dev/nvmf/nvmf_tcp.c
1456
qp->so = so;
sys/dev/nvmf/nvmf_tcp.c
1457
refcount_init(&qp->refs, 1);
sys/dev/nvmf/nvmf_tcp.c
1458
qp->txpda = nvlist_get_number(nvl, "txpda");
sys/dev/nvmf/nvmf_tcp.c
1459
qp->rxpda = nvlist_get_number(nvl, "rxpda");
sys/dev/nvmf/nvmf_tcp.c
1460
qp->header_digests = nvlist_get_bool(nvl, "header_digests");
sys/dev/nvmf/nvmf_tcp.c
1461
qp->data_digests = nvlist_get_bool(nvl, "data_digests");
sys/dev/nvmf/nvmf_tcp.c
1462
qp->maxr2t = nvlist_get_number(nvl, "maxr2t");
sys/dev/nvmf/nvmf_tcp.c
1464
qp->maxh2cdata = nvlist_get_number(nvl, "maxh2cdata");
sys/dev/nvmf/nvmf_tcp.c
1465
qp->max_tx_data = tcp_max_transmit_data;
sys/dev/nvmf/nvmf_tcp.c
1467
qp->max_tx_data = min(qp->max_tx_data,
sys/dev/nvmf/nvmf_tcp.c
1469
qp->max_icd = nvlist_get_number(nvl, "max_icd");
sys/dev/nvmf/nvmf_tcp.c
1474
qp->send_success = !nvlist_get_bool(nvl, "sq_flow_control");
sys/dev/nvmf/nvmf_tcp.c
1477
qp->num_ttags = MIN((u_int)UINT16_MAX + 1,
sys/dev/nvmf/nvmf_tcp.c
1479
((uint64_t)qp->maxr2t + 1));
sys/dev/nvmf/nvmf_tcp.c
1480
qp->open_ttags = mallocarray(qp->num_ttags,
sys/dev/nvmf/nvmf_tcp.c
1481
sizeof(*qp->open_ttags), M_NVMF_TCP, M_WAITOK | M_ZERO);
sys/dev/nvmf/nvmf_tcp.c
1484
TAILQ_INIT(&qp->rx_buffers.head);
sys/dev/nvmf/nvmf_tcp.c
1485
TAILQ_INIT(&qp->tx_buffers.head);
sys/dev/nvmf/nvmf_tcp.c
1486
mtx_init(&qp->rx_buffers.lock, "nvmf/tcp rx buffers", NULL, MTX_DEF);
sys/dev/nvmf/nvmf_tcp.c
1487
mtx_init(&qp->tx_buffers.lock, "nvmf/tcp tx buffers", NULL, MTX_DEF);
sys/dev/nvmf/nvmf_tcp.c
1489
cv_init(&qp->rx_cv, "-");
sys/dev/nvmf/nvmf_tcp.c
1490
cv_init(&qp->tx_cv, "-");
sys/dev/nvmf/nvmf_tcp.c
1491
mbufq_init(&qp->tx_pdus, 0);
sys/dev/nvmf/nvmf_tcp.c
1492
STAILQ_INIT(&qp->tx_capsules);
sys/dev/nvmf/nvmf_tcp.c
1496
soupcall_set(so, SO_RCV, nvmf_soupcall_receive, qp);
sys/dev/nvmf/nvmf_tcp.c
1499
soupcall_set(so, SO_SND, nvmf_soupcall_send, qp);
sys/dev/nvmf/nvmf_tcp.c
1503
error = kthread_add(nvmf_tcp_receive, qp, NULL, &qp->rx_thread, 0, 0,
sys/dev/nvmf/nvmf_tcp.c
1506
tcp_free_qpair(&qp->qp);
sys/dev/nvmf/nvmf_tcp.c
1509
error = kthread_add(nvmf_tcp_send, qp, NULL, &qp->tx_thread, 0, 0,
sys/dev/nvmf/nvmf_tcp.c
1512
tcp_free_qpair(&qp->qp);
sys/dev/nvmf/nvmf_tcp.c
1516
return (&qp->qp);
sys/dev/nvmf/nvmf_tcp.c
1520
tcp_release_qpair(struct nvmf_tcp_qpair *qp)
sys/dev/nvmf/nvmf_tcp.c
1522
if (refcount_release(&qp->refs))
sys/dev/nvmf/nvmf_tcp.c
1523
free(qp, M_NVMF_TCP);
sys/dev/nvmf/nvmf_tcp.c
1529
struct nvmf_tcp_qpair *qp = TQP(nq);
sys/dev/nvmf/nvmf_tcp.c
1532
struct socket *so = qp->so;
sys/dev/nvmf/nvmf_tcp.c
1536
qp->tx_shutdown = true;
sys/dev/nvmf/nvmf_tcp.c
1537
if (qp->tx_thread != NULL) {
sys/dev/nvmf/nvmf_tcp.c
1538
cv_signal(&qp->tx_cv);
sys/dev/nvmf/nvmf_tcp.c
1539
mtx_sleep(qp->tx_thread, SOCKBUF_MTX(&so->so_snd), 0,
sys/dev/nvmf/nvmf_tcp.c
1546
qp->rx_shutdown = true;
sys/dev/nvmf/nvmf_tcp.c
1547
if (qp->rx_thread != NULL) {
sys/dev/nvmf/nvmf_tcp.c
1548
cv_signal(&qp->rx_cv);
sys/dev/nvmf/nvmf_tcp.c
1549
mtx_sleep(qp->rx_thread, SOCKBUF_MTX(&so->so_rcv), 0,
sys/dev/nvmf/nvmf_tcp.c
1555
STAILQ_FOREACH_SAFE(tc, &qp->tx_capsules, link, ntc) {
sys/dev/nvmf/nvmf_tcp.c
1559
mbufq_drain(&qp->tx_pdus);
sys/dev/nvmf/nvmf_tcp.c
1561
cv_destroy(&qp->tx_cv);
sys/dev/nvmf/nvmf_tcp.c
1562
cv_destroy(&qp->rx_cv);
sys/dev/nvmf/nvmf_tcp.c
1564
if (qp->open_ttags != NULL) {
sys/dev/nvmf/nvmf_tcp.c
1565
for (u_int i = 0; i < qp->num_ttags; i++) {
sys/dev/nvmf/nvmf_tcp.c
1566
cb = qp->open_ttags[i];
sys/dev/nvmf/nvmf_tcp.c
1573
free(qp->open_ttags, M_NVMF_TCP);
sys/dev/nvmf/nvmf_tcp.c
1576
mtx_lock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1577
TAILQ_FOREACH_SAFE(cb, &qp->rx_buffers.head, link, ncb) {
sys/dev/nvmf/nvmf_tcp.c
1578
tcp_remove_command_buffer(&qp->rx_buffers, cb);
sys/dev/nvmf/nvmf_tcp.c
1579
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1586
mtx_lock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1588
mtx_destroy(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1590
mtx_lock(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1591
TAILQ_FOREACH_SAFE(cb, &qp->tx_buffers.head, link, ncb) {
sys/dev/nvmf/nvmf_tcp.c
1592
tcp_remove_command_buffer(&qp->tx_buffers, cb);
sys/dev/nvmf/nvmf_tcp.c
1593
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1596
mtx_lock(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1598
mtx_destroy(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1602
tcp_release_qpair(qp);
sys/dev/nvmf/nvmf_tcp.c
1620
struct nvmf_tcp_qpair *qp = TQP(nq);
sys/dev/nvmf/nvmf_tcp.c
1627
refcount_acquire(&qp->refs);
sys/dev/nvmf/nvmf_tcp.c
1634
struct nvmf_tcp_qpair *qp = TQP(tc->nc.nc_qpair);
sys/dev/nvmf/nvmf_tcp.c
1644
tcp_release_qpair(qp);
sys/dev/nvmf/nvmf_tcp.c
1658
struct nvmf_tcp_qpair *qp = TQP(nc->nc_qpair);
sys/dev/nvmf/nvmf_tcp.c
1660
struct socket *so = qp->so;
sys/dev/nvmf/nvmf_tcp.c
1664
STAILQ_INSERT_TAIL(&qp->tx_capsules, tc, link);
sys/dev/nvmf/nvmf_tcp.c
1666
cv_signal(&qp->tx_cv);
sys/dev/nvmf/nvmf_tcp.c
1717
struct nvmf_tcp_qpair *qp = TQP(nc->nc_qpair);
sys/dev/nvmf/nvmf_tcp.c
1721
cb = tcp_alloc_command_buffer(qp, io, data_offset, io->io_len,
sys/dev/nvmf/nvmf_tcp.c
1733
mtx_lock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1734
if (tc->active_r2ts > qp->maxr2t || qp->active_ttags == qp->num_ttags) {
sys/dev/nvmf/nvmf_tcp.c
1738
TAILQ_INSERT_TAIL(&qp->rx_buffers.head, cb, link);
sys/dev/nvmf/nvmf_tcp.c
1739
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1743
nvmf_tcp_allocate_ttag(qp, cb);
sys/dev/nvmf/nvmf_tcp.c
1744
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
1746
tcp_send_r2t(qp, nc->nc_sqe.cid, cb->ttag, data_offset, io->io_len);
sys/dev/nvmf/nvmf_tcp.c
175
tcp_alloc_command_buffer(struct nvmf_tcp_qpair *qp,
sys/dev/nvmf/nvmf_tcp.c
1785
tcp_send_c2h_pdu(struct nvmf_tcp_qpair *qp, uint16_t cid, uint32_t data_offset,
sys/dev/nvmf/nvmf_tcp.c
1801
top = nvmf_tcp_construct_pdu(qp, &c2h, sizeof(c2h), m, len);
sys/dev/nvmf/nvmf_tcp.c
1802
nvmf_tcp_write_pdu(qp, top);
sys/dev/nvmf/nvmf_tcp.c
1809
struct nvmf_tcp_qpair *qp = TQP(nc->nc_qpair);
sys/dev/nvmf/nvmf_tcp.c
1815
!qp->qp.nq_controller) {
sys/dev/nvmf/nvmf_tcp.c
182
cb->qp = qp;
sys/dev/nvmf/nvmf_tcp.c
1842
if (m->m_len > qp->max_tx_data) {
sys/dev/nvmf/nvmf_tcp.c
1843
n = m_split(m, qp->max_tx_data, M_WAITOK);
sys/dev/nvmf/nvmf_tcp.c
1852
if (todo + n->m_len > qp->max_tx_data) {
sys/dev/nvmf/nvmf_tcp.c
1864
tcp_send_c2h_pdu(qp, nc->nc_sqe.cid, data_offset, m, todo,
sys/dev/nvmf/nvmf_tcp.c
1865
last_pdu, last_pdu && qp->send_success);
sys/dev/nvmf/nvmf_tcp.c
1878
else if (qp->send_success)
sys/dev/nvmf/nvmf_tcp.c
265
nvmf_tcp_write_pdu(struct nvmf_tcp_qpair *qp, struct mbuf *m)
sys/dev/nvmf/nvmf_tcp.c
267
struct socket *so = qp->so;
sys/dev/nvmf/nvmf_tcp.c
270
mbufq_enqueue(&qp->tx_pdus, m);
sys/dev/nvmf/nvmf_tcp.c
273
cv_signal(&qp->tx_cv);
sys/dev/nvmf/nvmf_tcp.c
278
nvmf_tcp_report_error(struct nvmf_tcp_qpair *qp, uint16_t fes, uint32_t fei,
sys/dev/nvmf/nvmf_tcp.c
293
hdr->common.pdu_type = qp->qp.nq_controller ?
sys/dev/nvmf/nvmf_tcp.c
302
nvmf_tcp_write_pdu(qp, m);
sys/dev/nvmf/nvmf_tcp.c
306
nvmf_tcp_validate_pdu(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
sys/dev/nvmf/nvmf_tcp.c
323
error = nvmf_tcp_validate_pdu_header(ch, qp->qp.nq_controller,
sys/dev/nvmf/nvmf_tcp.c
324
qp->header_digests, qp->data_digests, qp->rxpda, &data_len, &fes,
sys/dev/nvmf/nvmf_tcp.c
328
nvmf_tcp_report_error(qp, fes, fei, m, hlen);
sys/dev/nvmf/nvmf_tcp.c
338
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
383
nvmf_tcp_save_command_capsule(struct nvmf_tcp_qpair *qp,
sys/dev/nvmf/nvmf_tcp.c
392
nc = nvmf_allocate_command(&qp->qp, &cmd->ccsqe, M_WAITOK);
sys/dev/nvmf/nvmf_tcp.c
397
nvmf_capsule_received(&qp->qp, nc);
sys/dev/nvmf/nvmf_tcp.c
40
struct nvmf_tcp_qpair *qp;
sys/dev/nvmf/nvmf_tcp.c
402
nvmf_tcp_save_response_capsule(struct nvmf_tcp_qpair *qp,
sys/dev/nvmf/nvmf_tcp.c
411
nc = nvmf_allocate_response(&qp->qp, &rsp->rccqe, M_WAITOK);
sys/dev/nvmf/nvmf_tcp.c
421
tcp_purge_command_buffer(&qp->rx_buffers, rsp->rccqe.cid, 0);
sys/dev/nvmf/nvmf_tcp.c
422
tcp_purge_command_buffer(&qp->tx_buffers, rsp->rccqe.cid, 0);
sys/dev/nvmf/nvmf_tcp.c
424
nvmf_capsule_received(&qp->qp, nc);
sys/dev/nvmf/nvmf_tcp.c
434
nvmf_tcp_construct_pdu(struct nvmf_tcp_qpair *qp, void *hdr, size_t hlen,
sys/dev/nvmf/nvmf_tcp.c
442
if (qp->header_digests)
sys/dev/nvmf/nvmf_tcp.c
446
pdo = roundup(plen, qp->txpda);
sys/dev/nvmf/nvmf_tcp.c
449
if (qp->data_digests)
sys/dev/nvmf/nvmf_tcp.c
464
if (qp->header_digests)
sys/dev/nvmf/nvmf_tcp.c
466
if (qp->data_digests && data_len != 0)
sys/dev/nvmf/nvmf_tcp.c
472
if (qp->header_digests) {
sys/dev/nvmf/nvmf_tcp.c
487
if (qp->data_digests) {
sys/dev/nvmf/nvmf_tcp.c
506
nvmf_tcp_next_r2t(struct nvmf_tcp_qpair *qp)
sys/dev/nvmf/nvmf_tcp.c
510
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/nvmf/nvmf_tcp.c
511
MPASS(qp->active_ttags < qp->num_ttags);
sys/dev/nvmf/nvmf_tcp.c
513
TAILQ_FOREACH(cb, &qp->rx_buffers.head, link) {
sys/dev/nvmf/nvmf_tcp.c
515
if (cb->tc->active_r2ts > qp->maxr2t)
sys/dev/nvmf/nvmf_tcp.c
520
TAILQ_REMOVE(&qp->rx_buffers.head, cb, link);
sys/dev/nvmf/nvmf_tcp.c
528
nvmf_tcp_allocate_ttag(struct nvmf_tcp_qpair *qp,
sys/dev/nvmf/nvmf_tcp.c
533
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/nvmf/nvmf_tcp.c
535
ttag = qp->next_ttag;
sys/dev/nvmf/nvmf_tcp.c
537
if (qp->open_ttags[ttag] == NULL)
sys/dev/nvmf/nvmf_tcp.c
539
if (ttag == qp->num_ttags - 1)
sys/dev/nvmf/nvmf_tcp.c
543
MPASS(ttag != qp->next_ttag);
sys/dev/nvmf/nvmf_tcp.c
545
if (ttag == qp->num_ttags - 1)
sys/dev/nvmf/nvmf_tcp.c
546
qp->next_ttag = 0;
sys/dev/nvmf/nvmf_tcp.c
548
qp->next_ttag = ttag + 1;
sys/dev/nvmf/nvmf_tcp.c
551
qp->active_ttags++;
sys/dev/nvmf/nvmf_tcp.c
552
qp->open_ttags[ttag] = cb;
sys/dev/nvmf/nvmf_tcp.c
563
tcp_send_r2t(struct nvmf_tcp_qpair *qp, uint16_t cid, uint16_t ttag,
sys/dev/nvmf/nvmf_tcp.c
576
m = nvmf_tcp_construct_pdu(qp, &r2t, sizeof(r2t), NULL, 0);
sys/dev/nvmf/nvmf_tcp.c
577
nvmf_tcp_write_pdu(qp, m);
sys/dev/nvmf/nvmf_tcp.c
586
nvmf_tcp_send_next_r2t(struct nvmf_tcp_qpair *qp,
sys/dev/nvmf/nvmf_tcp.c
591
mtx_assert(&qp->rx_buffers.lock, MA_OWNED);
sys/dev/nvmf/nvmf_tcp.c
592
MPASS(qp->open_ttags[cb->ttag] == cb);
sys/dev/nvmf/nvmf_tcp.c
595
qp->open_ttags[cb->ttag] = NULL;
sys/dev/nvmf/nvmf_tcp.c
596
qp->active_ttags--;
sys/dev/nvmf/nvmf_tcp.c
600
ncb = nvmf_tcp_next_r2t(qp);
sys/dev/nvmf/nvmf_tcp.c
602
nvmf_tcp_allocate_ttag(qp, ncb);
sys/dev/nvmf/nvmf_tcp.c
603
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
604
tcp_send_r2t(qp, ncb->cid, ncb->ttag, ncb->data_offset,
sys/dev/nvmf/nvmf_tcp.c
607
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
637
nvmf_tcp_handle_h2c_data(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
sys/dev/nvmf/nvmf_tcp.c
645
if (le32toh(h2c->datal) > qp->maxh2cdata) {
sys/dev/nvmf/nvmf_tcp.c
646
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
65
struct nvmf_qpair qp;
sys/dev/nvmf/nvmf_tcp.c
658
if (ttag >= qp->num_ttags) {
sys/dev/nvmf/nvmf_tcp.c
659
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
667
mtx_lock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
668
cb = qp->open_ttags[ttag];
sys/dev/nvmf/nvmf_tcp.c
670
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
671
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
682
nvmf_tcp_send_next_r2t(qp, cb);
sys/dev/nvmf/nvmf_tcp.c
691
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
692
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
703
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
704
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
712
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
713
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
722
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
723
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
733
nvmf_tcp_send_next_r2t(qp, cb);
sys/dev/nvmf/nvmf_tcp.c
736
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
747
nvmf_tcp_handle_c2h_data(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
sys/dev/nvmf/nvmf_tcp.c
755
mtx_lock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
756
cb = tcp_find_command_buffer(&qp->rx_buffers, c2h->cccid, 0);
sys/dev/nvmf/nvmf_tcp.c
758
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
763
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
774
tcp_remove_command_buffer(&qp->rx_buffers, cb);
sys/dev/nvmf/nvmf_tcp.c
775
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
783
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
784
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
795
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
796
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
804
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
805
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
814
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
815
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
825
tcp_remove_command_buffer(&qp->rx_buffers, cb);
sys/dev/nvmf/nvmf_tcp.c
828
mtx_unlock(&qp->rx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
841
nc = nvmf_allocate_response(&qp->qp, &cqe, M_WAITOK);
sys/dev/nvmf/nvmf_tcp.c
844
nvmf_capsule_received(&qp->qp, nc);
sys/dev/nvmf/nvmf_tcp.c
922
tcp_send_h2c_pdu(struct nvmf_tcp_qpair *qp, uint16_t cid, uint16_t ttag,
sys/dev/nvmf/nvmf_tcp.c
937
top = nvmf_tcp_construct_pdu(qp, &h2c, sizeof(h2c), m, len);
sys/dev/nvmf/nvmf_tcp.c
938
nvmf_tcp_write_pdu(qp, top);
sys/dev/nvmf/nvmf_tcp.c
942
nvmf_tcp_handle_r2t(struct nvmf_tcp_qpair *qp, struct nvmf_tcp_rxpdu *pdu)
sys/dev/nvmf/nvmf_tcp.c
950
mtx_lock(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
951
cb = tcp_find_command_buffer(&qp->tx_buffers, r2t->cccid, 0);
sys/dev/nvmf/nvmf_tcp.c
953
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
954
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
964
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
965
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
978
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_tcp.c
979
nvmf_tcp_report_error(qp,
sys/dev/nvmf/nvmf_tcp.c
988
tcp_remove_command_buffer(&qp->tx_buffers, cb);
sys/dev/nvmf/nvmf_tcp.c
991
mtx_unlock(&qp->tx_buffers.lock);
sys/dev/nvmf/nvmf_transport.c
101
nc = qp->nq_ops->allocate_capsule(qp, how);
sys/dev/nvmf/nvmf_transport.c
105
nc->nc_qpair = qp;
sys/dev/nvmf/nvmf_transport.c
116
nvmf_allocate_response(struct nvmf_qpair *qp, const void *cqe, int how)
sys/dev/nvmf/nvmf_transport.c
122
nc = qp->nq_ops->allocate_capsule(qp, how);
sys/dev/nvmf/nvmf_transport.c
126
nc->nc_qpair = qp;
sys/dev/nvmf/nvmf_transport.c
192
nvmf_max_xfer_size(struct nvmf_qpair *qp)
sys/dev/nvmf/nvmf_transport.c
194
return (qp->nq_ops->max_xfer_size(qp));
sys/dev/nvmf/nvmf_transport.c
198
nvmf_max_ioccsz(struct nvmf_qpair *qp)
sys/dev/nvmf/nvmf_transport.c
200
return (qp->nq_ops->max_ioccsz(qp));
sys/dev/nvmf/nvmf_transport.c
55
struct nvmf_qpair *qp;
sys/dev/nvmf/nvmf_transport.c
62
qp = nt->nt_ops->allocate_qpair(controller, params);
sys/dev/nvmf/nvmf_transport.c
63
if (qp != NULL) {
sys/dev/nvmf/nvmf_transport.c
69
if (qp == NULL)
sys/dev/nvmf/nvmf_transport.c
72
qp->nq_transport = nt;
sys/dev/nvmf/nvmf_transport.c
73
qp->nq_ops = nt->nt_ops;
sys/dev/nvmf/nvmf_transport.c
74
qp->nq_controller = controller;
sys/dev/nvmf/nvmf_transport.c
75
qp->nq_error = error_cb;
sys/dev/nvmf/nvmf_transport.c
76
qp->nq_error_arg = error_cb_arg;
sys/dev/nvmf/nvmf_transport.c
77
qp->nq_receive = receive_cb;
sys/dev/nvmf/nvmf_transport.c
78
qp->nq_receive_arg = receive_cb_arg;
sys/dev/nvmf/nvmf_transport.c
79
qp->nq_admin = nvlist_get_bool(params, "admin");
sys/dev/nvmf/nvmf_transport.c
80
return (qp);
sys/dev/nvmf/nvmf_transport.c
84
nvmf_free_qpair(struct nvmf_qpair *qp)
sys/dev/nvmf/nvmf_transport.c
88
nt = qp->nq_transport;
sys/dev/nvmf/nvmf_transport.c
89
qp->nq_ops->free_qpair(qp);
sys/dev/nvmf/nvmf_transport.c
95
nvmf_allocate_command(struct nvmf_qpair *qp, const void *sqe, int how)
sys/dev/nvmf/nvmf_transport.h
61
void nvmf_free_qpair(struct nvmf_qpair *qp);
sys/dev/nvmf/nvmf_transport.h
70
struct nvmf_capsule *nvmf_allocate_command(struct nvmf_qpair *qp,
sys/dev/nvmf/nvmf_transport.h
72
struct nvmf_capsule *nvmf_allocate_response(struct nvmf_qpair *qp,
sys/dev/nvmf/nvmf_transport.h
90
uint64_t nvmf_max_xfer_size(struct nvmf_qpair *qp);
sys/dev/nvmf/nvmf_transport.h
98
uint32_t nvmf_max_ioccsz(struct nvmf_qpair *qp);
sys/dev/nvmf/nvmf_transport_internal.h
26
void (*free_qpair)(struct nvmf_qpair *qp);
sys/dev/nvmf/nvmf_transport_internal.h
29
uint32_t (*max_ioccsz)(struct nvmf_qpair *qp);
sys/dev/nvmf/nvmf_transport_internal.h
32
uint64_t (*max_xfer_size)(struct nvmf_qpair *qp);
sys/dev/nvmf/nvmf_transport_internal.h
35
struct nvmf_capsule *(*allocate_capsule)(struct nvmf_qpair *qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1106
if (ep->qp)
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1107
ep->qp->ep = OSAL_NULL;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1108
ep->qp = OSAL_NULL;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1227
ep->qp->max_rd_atomic_req = ep->cm_info.ord;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1228
ep->qp->max_rd_atomic_resp = ep->cm_info.ird;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1229
ecore_iwarp_modify_qp(p_hwfn, ep->qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1297
(ep->qp == OSAL_NULL)) { /* Rejected */
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1373
iparams->qp->icid, iparams->cm_info.ord,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1386
if (iparams->qp->ep == OSAL_NULL) {
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1391
ep = iparams->qp->ep;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1403
ep->qp = iparams->qp;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1404
ep->qp->ep = ep;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1451
iparams->qp->icid, ep->tcp_cid, rc);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1740
iparams->qp->icid, ep->tcp_cid);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1746
iparams->qp->icid, ep->tcp_cid,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1752
if (iparams->qp->ep == OSAL_NULL) {
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1759
ecore_iwarp_return_ep(p_hwfn, iparams->qp->ep);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1767
ep->qp = iparams->qp;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1768
ep->qp->ep = ep;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1813
iparams->qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
1839
ep->qp = OSAL_NULL;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
252
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
262
qp->shared_queue =
sys/dev/qlnx/qlnxe/ecore_iwarp.c
264
&qp->shared_queue_phys_addr,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
266
if (!qp->shared_queue) {
sys/dev/qlnx/qlnxe/ecore_iwarp.c
271
out_params->sq_pbl_virt = (u8 *)qp->shared_queue +
sys/dev/qlnx/qlnxe/ecore_iwarp.c
273
out_params->sq_pbl_phys = qp->shared_queue_phys_addr +
sys/dev/qlnx/qlnxe/ecore_iwarp.c
275
out_params->rq_pbl_virt = (u8 *)qp->shared_queue +
sys/dev/qlnx/qlnxe/ecore_iwarp.c
277
out_params->rq_pbl_phys = qp->shared_queue_phys_addr +
sys/dev/qlnx/qlnxe/ecore_iwarp.c
285
qp->icid = (u16)cid;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
289
init_data.cid = qp->icid;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
302
qp->fmr_and_reserved_lkey);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
306
qp->signal_all);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
310
qp->incoming_rdma_read_en);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
314
qp->incoming_rdma_write_en);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
318
qp->incoming_atomic_en);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
322
qp->use_srq);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
324
p_ramrod->pd = qp->pd;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
325
p_ramrod->sq_num_pages = qp->sq_num_pages;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
326
p_ramrod->rq_num_pages = qp->rq_num_pages;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
328
p_ramrod->qp_handle_for_cqe.hi = OSAL_CPU_TO_LE32(qp->qp_handle.hi);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
329
p_ramrod->qp_handle_for_cqe.lo = OSAL_CPU_TO_LE32(qp->qp_handle.lo);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
333
qp->sq_cq_id);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
336
qp->rq_cq_id);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
338
p_ramrod->dpi = OSAL_CPU_TO_LE16(qp->dpi);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
3408
ecore_iwarp_modify_qp(p_hwfn, ep->qp, ECORE_IWARP_QP_STATE_ERROR, true);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
354
qp->shared_queue,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
355
qp->shared_queue_phys_addr,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
363
struct ecore_rdma_qp *qp)
sys/dev/qlnx/qlnxe/ecore_iwarp.c
372
init_data.cid = qp->icid;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
386
if (qp->iwarp_state == ECORE_IWARP_QP_STATE_CLOSING)
sys/dev/qlnx/qlnxe/ecore_iwarp.c
3919
struct ecore_rdma_qp *qp;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
3929
qp = ep->qp;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
3932
qp->icid, ep->tcp_cid);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
3935
init_data.cid = qp->icid;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
394
qp->icid, rc);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
3955
ecore_iwarp_query_qp(struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
3958
out_params->state = ecore_iwarp2roce_state(qp->iwarp_state);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
447
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
459
prev_iw_state = qp->iwarp_state;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
470
qp->iwarp_state = ECORE_IWARP_QP_STATE_RTS;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
473
qp->iwarp_state = ECORE_IWARP_QP_STATE_ERROR;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
487
qp->iwarp_state = ECORE_IWARP_QP_STATE_CLOSING;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
492
qp->iwarp_state = ECORE_IWARP_QP_STATE_ERROR;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
502
qp->iwarp_state = new_state;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
513
qp->iwarp_state = new_state;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
520
qp->icid,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
522
iwarp_state_names[qp->iwarp_state],
sys/dev/qlnx/qlnxe/ecore_iwarp.c
528
ecore_iwarp_modify_fw(p_hwfn, qp);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
535
struct ecore_rdma_qp *qp)
sys/dev/qlnx/qlnxe/ecore_iwarp.c
543
init_data.cid = qp->icid;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
556
DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "QP(0x%x) rc = %d\n", qp->icid, rc);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
579
if (ep->qp)
sys/dev/qlnx/qlnxe/ecore_iwarp.c
580
ep->qp->ep = OSAL_NULL;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
587
struct ecore_rdma_qp *qp)
sys/dev/qlnx/qlnxe/ecore_iwarp.c
590
struct ecore_iwarp_ep *ep = qp->ep;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
594
fpdu = ecore_iwarp_get_curr_fpdu(p_hwfn, qp->icid);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
600
if (qp->iwarp_state != ECORE_IWARP_QP_STATE_ERROR) {
sys/dev/qlnx/qlnxe/ecore_iwarp.c
601
rc = ecore_iwarp_modify_qp(p_hwfn, qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
627
rc = ecore_iwarp_fw_destroy(p_hwfn, qp);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
629
if (qp->shared_queue)
sys/dev/qlnx/qlnxe/ecore_iwarp.c
631
qp->shared_queue,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
632
qp->shared_queue_phys_addr,
sys/dev/qlnx/qlnxe/ecore_iwarp.c
891
struct ecore_rdma_qp *qp;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
898
qp = ep->qp;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
899
reject = (qp == OSAL_NULL);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
902
init_data.cid = reject ? ep->tcp_cid : qp->icid;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
953
DMA_HI_LE(qp->shared_queue_phys_addr);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
955
DMA_LO_LE(qp->shared_queue_phys_addr);
sys/dev/qlnx/qlnxe/ecore_iwarp.c
959
qp->stats_queue;
sys/dev/qlnx/qlnxe/ecore_iwarp.c
974
ep->cid = qp->icid; /* Now they're migrated. */
sys/dev/qlnx/qlnxe/ecore_iwarp.c
978
reject ? 0xffff : qp->icid, ep->tcp_cid, rc, ep->cm_info.ird,
sys/dev/qlnx/qlnxe/ecore_iwarp.h
154
struct ecore_rdma_qp *qp;
sys/dev/qlnx/qlnxe/ecore_iwarp.h
235
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.h
240
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.h
246
struct ecore_rdma_qp *qp);
sys/dev/qlnx/qlnxe/ecore_iwarp.h
250
struct ecore_rdma_qp *qp);
sys/dev/qlnx/qlnxe/ecore_iwarp.h
253
ecore_iwarp_query_qp(struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.h
302
struct ecore_rdma_qp OSAL_UNUSED *qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.h
310
struct ecore_rdma_qp OSAL_UNUSED *qp,
sys/dev/qlnx/qlnxe/ecore_iwarp.h
319
struct ecore_rdma_qp OSAL_UNUSED *qp)
sys/dev/qlnx/qlnxe/ecore_iwarp.h
326
struct ecore_rdma_qp OSAL_UNUSED *qp)
sys/dev/qlnx/qlnxe/ecore_iwarp.h
332
ecore_iwarp_query_qp(struct ecore_rdma_qp OSAL_UNUSED *qp,
sys/dev/qlnx/qlnxe/ecore_rdma.c
1451
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_rdma.c
1458
DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1463
out_params->mtu = qp->mtu;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1464
out_params->dest_qp = qp->dest_qp;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1465
out_params->incoming_atomic_en = qp->incoming_atomic_en;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1466
out_params->e2e_flow_control_en = qp->e2e_flow_control_en;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1467
out_params->incoming_rdma_read_en = qp->incoming_rdma_read_en;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1468
out_params->incoming_rdma_write_en = qp->incoming_rdma_write_en;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1469
out_params->dgid = qp->dgid;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1470
out_params->flow_label = qp->flow_label;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1471
out_params->hop_limit_ttl = qp->hop_limit_ttl;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1472
out_params->traffic_class_tos = qp->traffic_class_tos;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1473
out_params->timeout = qp->ack_timeout;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1474
out_params->rnr_retry = qp->rnr_retry_cnt;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1475
out_params->retry_cnt = qp->retry_cnt;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1476
out_params->min_rnr_nak_timer = qp->min_rnr_nak_timer;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1478
out_params->max_rd_atomic = qp->max_rd_atomic_req;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1479
out_params->max_dest_rd_atomic = qp->max_rd_atomic_resp;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1480
out_params->sqd_async = qp->sqd_async;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1483
rc = ecore_iwarp_query_qp(qp, out_params);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1485
rc = ecore_roce_query_qp(p_hwfn, qp, out_params);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1492
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_rdma.c
1498
if (!rdma_cxt || !qp) {
sys/dev/qlnx/qlnxe/ecore_rdma.c
1501
rdma_cxt, qp);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1505
DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "QP(0x%x)\n", qp->icid);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1508
rc = ecore_iwarp_destroy_qp(p_hwfn, qp);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1510
rc = ecore_roce_destroy_qp(p_hwfn, qp, out_params);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1513
OSAL_FREE(p_hwfn->p_dev, qp);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1523
struct ecore_rdma_qp *qp;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1561
qp = OSAL_ZALLOC(p_hwfn->p_dev,
sys/dev/qlnx/qlnxe/ecore_rdma.c
1564
if (!qp)
sys/dev/qlnx/qlnxe/ecore_rdma.c
1570
qp->cur_state = ECORE_ROCE_QP_STATE_RESET;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1572
qp->iwarp_state = ECORE_IWARP_QP_STATE_IDLE;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1574
qp->qp_handle.hi = OSAL_CPU_TO_LE32(in_params->qp_handle_hi);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1575
qp->qp_handle.lo = OSAL_CPU_TO_LE32(in_params->qp_handle_lo);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1576
qp->qp_handle_async.hi = OSAL_CPU_TO_LE32(in_params->qp_handle_async_hi);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1577
qp->qp_handle_async.lo = OSAL_CPU_TO_LE32(in_params->qp_handle_async_lo);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1578
qp->use_srq = in_params->use_srq;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1579
qp->signal_all = in_params->signal_all;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1580
qp->fmr_and_reserved_lkey = in_params->fmr_and_reserved_lkey;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1581
qp->pd = in_params->pd;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1582
qp->dpi = in_params->dpi;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1583
qp->sq_cq_id = in_params->sq_cq_id;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1584
qp->sq_num_pages = in_params->sq_num_pages;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1585
qp->sq_pbl_ptr = in_params->sq_pbl_ptr;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1586
qp->rq_cq_id = in_params->rq_cq_id;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1587
qp->rq_num_pages = in_params->rq_num_pages;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1588
qp->rq_pbl_ptr = in_params->rq_pbl_ptr;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1589
qp->srq_id = in_params->srq_id;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1590
qp->req_offloaded = false;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1591
qp->resp_offloaded = false;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1595
qp->e2e_flow_control_en = qp->use_srq ? false : true;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1596
qp->stats_queue = in_params->stats_queue;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1597
qp->qp_type = in_params->qp_type;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1598
qp->xrcd_id = in_params->xrcd_id;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1601
rc = ecore_iwarp_create_qp(p_hwfn, qp, out_params);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1602
qp->qpid = qp->icid;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1604
rc = ecore_roce_alloc_qp_idx(p_hwfn, &qp->qp_idx);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1605
qp->icid = ECORE_ROCE_QP_TO_ICID(qp->qp_idx);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1606
qp->qpid = ((0xFF << 16) | qp->icid);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1610
OSAL_FREE(p_hwfn->p_dev, qp);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1614
out_params->icid = qp->icid;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1615
out_params->qp_id = qp->qpid;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1620
return qp;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1631
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_rdma.c
1641
qp->incoming_rdma_read_en = params->incoming_rdma_read_en;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1642
qp->incoming_rdma_write_en = params->incoming_rdma_write_en;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1643
qp->incoming_atomic_en = params->incoming_atomic_en;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1650
qp->roce_mode = params->roce_mode;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1654
qp->pkey = params->pkey;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1659
qp->e2e_flow_control_en = params->e2e_flow_control_en;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1664
qp->dest_qp = params->dest_qp;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1673
qp->flow_label = params->flow_label;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1674
qp->hop_limit_ttl = params->hop_limit_ttl;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1676
qp->sgid = params->sgid;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1677
qp->dgid = params->dgid;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1678
qp->udp_src_port = params->udp_src_port;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1679
qp->vlan_id = params->vlan_id;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1680
qp->traffic_class_tos = params->traffic_class_tos;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1684
SET_FIELD(qp->vlan_id, ECORE_RDMA_VLAN_PRIO,
sys/dev/qlnx/qlnxe/ecore_rdma.c
1688
SET_FIELD(qp->traffic_class_tos, ECORE_RDMA_ECN,
sys/dev/qlnx/qlnxe/ecore_rdma.c
1692
SET_FIELD(qp->traffic_class_tos, ECORE_RDMA_DSCP,
sys/dev/qlnx/qlnxe/ecore_rdma.c
1695
qp->mtu = params->mtu;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1697
OSAL_MEMCPY((u8 *)&qp->remote_mac_addr[0],
sys/dev/qlnx/qlnxe/ecore_rdma.c
1700
OSAL_MEMCPY((u8 *)&qp->local_mac_addr[0],
sys/dev/qlnx/qlnxe/ecore_rdma.c
1704
OSAL_MEMCPY((u8 *)&qp->local_mac_addr[0],
sys/dev/qlnx/qlnxe/ecore_rdma.c
1711
qp->rq_psn = params->rq_psn;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1715
qp->sq_psn = params->sq_psn;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1720
qp->max_rd_atomic_req = params->max_rd_atomic_req;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1725
qp->max_rd_atomic_resp = params->max_rd_atomic_resp;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1730
qp->ack_timeout = params->ack_timeout;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1735
qp->retry_cnt = params->retry_cnt;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1740
qp->rnr_retry_cnt = params->rnr_retry_cnt;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1745
qp->min_rnr_nak_timer = params->min_rnr_nak_timer;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1748
qp->sqd_async = params->sqd_async;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1750
prev_state = qp->cur_state;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1754
qp->cur_state = params->new_state;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1756
qp->cur_state);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1759
if (qp->qp_type == ECORE_RDMA_QP_TYPE_XRC_INI) {
sys/dev/qlnx/qlnxe/ecore_rdma.c
1760
qp->has_req = 1;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1761
} else if (qp->qp_type == ECORE_RDMA_QP_TYPE_XRC_TGT)
sys/dev/qlnx/qlnxe/ecore_rdma.c
1763
qp->has_resp = 1;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1765
qp->has_req = 1;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1766
qp->has_resp = 1;
sys/dev/qlnx/qlnxe/ecore_rdma.c
1771
ecore_roce2iwarp_state(qp->cur_state);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1773
rc = ecore_iwarp_modify_qp(p_hwfn, qp, new_state, 0);
sys/dev/qlnx/qlnxe/ecore_rdma.c
1775
rc = ecore_roce_modify_qp(p_hwfn, qp, prev_state, params);
sys/dev/qlnx/qlnxe/ecore_rdma.h
225
static OSAL_INLINE bool ecore_rdma_is_xrc_qp(struct ecore_rdma_qp *qp)
sys/dev/qlnx/qlnxe/ecore_rdma.h
227
if ((qp->qp_type == ECORE_RDMA_QP_TYPE_XRC_TGT) ||
sys/dev/qlnx/qlnxe/ecore_rdma.h
228
(qp->qp_type == ECORE_RDMA_QP_TYPE_XRC_INI))
sys/dev/qlnx/qlnxe/ecore_rdma_api.h
710
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_rdma_api.h
732
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_rdma_api.h
743
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_rdma_api.h
875
struct ecore_rdma_qp *qp;
sys/dev/qlnx/qlnxe/ecore_rdma_api.h
915
struct ecore_rdma_qp *qp;
sys/dev/qlnx/qlnxe/ecore_roce.c
1008
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
1019
if (!qp->has_req) {
sys/dev/qlnx/qlnxe/ecore_roce.c
1025
DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
sys/dev/qlnx/qlnxe/ecore_roce.c
1027
if (!qp->req_offloaded) {
sys/dev/qlnx/qlnxe/ecore_roce.c
1028
*cq_prod = qp->cq_prod.req;
sys/dev/qlnx/qlnxe/ecore_roce.c
1044
init_data.cid = qp->icid + 1;
sys/dev/qlnx/qlnxe/ecore_roce.c
1062
qp->cq_prod.req = *cq_prod;
sys/dev/qlnx/qlnxe/ecore_roce.c
1066
qp->orq,
sys/dev/qlnx/qlnxe/ecore_roce.c
1067
qp->orq_phys_addr,
sys/dev/qlnx/qlnxe/ecore_roce.c
1068
qp->orq_num_pages *
sys/dev/qlnx/qlnxe/ecore_roce.c
1071
qp->req_offloaded = false;
sys/dev/qlnx/qlnxe/ecore_roce.c
1086
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
1097
if (!qp->resp_offloaded) {
sys/dev/qlnx/qlnxe/ecore_roce.c
1099
out_params->rq_psn = qp->rq_psn;
sys/dev/qlnx/qlnxe/ecore_roce.c
1117
init_data.cid = qp->icid;
sys/dev/qlnx/qlnxe/ecore_roce.c
1137
qp->cur_state = ECORE_ROCE_QP_STATE_ERR;
sys/dev/qlnx/qlnxe/ecore_roce.c
1149
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
1161
if (!qp->req_offloaded)
sys/dev/qlnx/qlnxe/ecore_roce.c
1164
out_params->sq_psn = qp->sq_psn;
sys/dev/qlnx/qlnxe/ecore_roce.c
1185
init_data.cid = qp->icid + 1;
sys/dev/qlnx/qlnxe/ecore_roce.c
1202
qp->cur_state = ECORE_ROCE_QP_STATE_ERR;
sys/dev/qlnx/qlnxe/ecore_roce.c
1217
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
1222
rc = ecore_roce_sp_query_responder(p_hwfn, qp, out_params);
sys/dev/qlnx/qlnxe/ecore_roce.c
1226
rc = ecore_roce_sp_query_requester(p_hwfn, qp, out_params,
sys/dev/qlnx/qlnxe/ecore_roce.c
1231
out_params->state = qp->cur_state;
sys/dev/qlnx/qlnxe/ecore_roce.c
1237
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
1240
u32 cq_prod_resp = qp->cq_prod.resp, cq_prod_req = qp->cq_prod.req;
sys/dev/qlnx/qlnxe/ecore_roce.c
1249
if ((qp->cur_state != ECORE_ROCE_QP_STATE_RESET) &&
sys/dev/qlnx/qlnxe/ecore_roce.c
1250
(qp->cur_state != ECORE_ROCE_QP_STATE_ERR) &&
sys/dev/qlnx/qlnxe/ecore_roce.c
1251
(qp->cur_state != ECORE_ROCE_QP_STATE_INIT))
sys/dev/qlnx/qlnxe/ecore_roce.c
1259
if (qp->cur_state != ECORE_ROCE_QP_STATE_RESET) {
sys/dev/qlnx/qlnxe/ecore_roce.c
1261
qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
1268
rc = ecore_roce_sp_destroy_qp_requester(p_hwfn, qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
1283
ecore_roce_free_qp(p_hwfn, qp->qp_idx);
sys/dev/qlnx/qlnxe/ecore_roce.c
1385
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
1397
(qp->cur_state == ECORE_ROCE_QP_STATE_RTR))
sys/dev/qlnx/qlnxe/ecore_roce.c
1402
rc = ecore_roce_wait_free_cids(p_hwfn, qp->qp_idx);
sys/dev/qlnx/qlnxe/ecore_roce.c
1406
rc = ecore_roce_sp_create_responder(p_hwfn, qp);
sys/dev/qlnx/qlnxe/ecore_roce.c
1410
(qp->cur_state == ECORE_ROCE_QP_STATE_RTS))
sys/dev/qlnx/qlnxe/ecore_roce.c
1413
rc = ecore_roce_sp_create_requester(p_hwfn, qp);
sys/dev/qlnx/qlnxe/ecore_roce.c
1418
rc = ecore_roce_sp_modify_responder(p_hwfn, qp, false,
sys/dev/qlnx/qlnxe/ecore_roce.c
1423
(qp->cur_state == ECORE_ROCE_QP_STATE_RTS))
sys/dev/qlnx/qlnxe/ecore_roce.c
1426
rc = ecore_roce_sp_modify_responder(p_hwfn, qp, false,
sys/dev/qlnx/qlnxe/ecore_roce.c
1431
rc = ecore_roce_sp_modify_requester(p_hwfn, qp, false, false,
sys/dev/qlnx/qlnxe/ecore_roce.c
1436
(qp->cur_state == ECORE_ROCE_QP_STATE_SQD))
sys/dev/qlnx/qlnxe/ecore_roce.c
1439
rc = ecore_roce_sp_modify_requester(p_hwfn, qp, true, false,
sys/dev/qlnx/qlnxe/ecore_roce.c
1444
(qp->cur_state == ECORE_ROCE_QP_STATE_SQD))
sys/dev/qlnx/qlnxe/ecore_roce.c
1447
rc = ecore_roce_sp_modify_responder(p_hwfn, qp, false,
sys/dev/qlnx/qlnxe/ecore_roce.c
1452
rc = ecore_roce_sp_modify_requester(p_hwfn, qp, false, false,
sys/dev/qlnx/qlnxe/ecore_roce.c
1457
(qp->cur_state == ECORE_ROCE_QP_STATE_RTS))
sys/dev/qlnx/qlnxe/ecore_roce.c
1460
rc = ecore_roce_sp_modify_responder(p_hwfn, qp, false,
sys/dev/qlnx/qlnxe/ecore_roce.c
1465
rc = ecore_roce_sp_modify_requester(p_hwfn, qp, false, false,
sys/dev/qlnx/qlnxe/ecore_roce.c
1469
} else if (qp->cur_state == ECORE_ROCE_QP_STATE_ERR) {
sys/dev/qlnx/qlnxe/ecore_roce.c
1471
rc = ecore_roce_sp_modify_responder(p_hwfn, qp, true,
sys/dev/qlnx/qlnxe/ecore_roce.c
1476
rc = ecore_roce_sp_modify_requester(p_hwfn, qp, false, true,
sys/dev/qlnx/qlnxe/ecore_roce.c
1480
} else if (qp->cur_state == ECORE_ROCE_QP_STATE_RESET) {
sys/dev/qlnx/qlnxe/ecore_roce.c
1484
rc = ecore_roce_sp_destroy_qp_responder(p_hwfn, qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
1486
&qp->cq_prod.resp);
sys/dev/qlnx/qlnxe/ecore_roce.c
1491
rc = ecore_roce_sp_destroy_qp_requester(p_hwfn, qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
1493
&qp->cq_prod.req);
sys/dev/qlnx/qlnxe/ecore_roce.c
218
static void ecore_rdma_copy_gids(struct ecore_rdma_qp *qp, __le32 *src_gid,
sys/dev/qlnx/qlnxe/ecore_roce.c
222
if (qp->roce_mode == ROCE_V2_IPV4) {
sys/dev/qlnx/qlnxe/ecore_roce.c
228
src_gid[3] = OSAL_CPU_TO_LE32(qp->sgid.ipv4_addr);
sys/dev/qlnx/qlnxe/ecore_roce.c
229
dst_gid[3] = OSAL_CPU_TO_LE32(qp->dgid.ipv4_addr);
sys/dev/qlnx/qlnxe/ecore_roce.c
234
for (i = 0; i < OSAL_ARRAY_SIZE(qp->sgid.dwords); i++) {
sys/dev/qlnx/qlnxe/ecore_roce.c
235
src_gid[i] = OSAL_CPU_TO_LE32(qp->sgid.dwords[i]);
sys/dev/qlnx/qlnxe/ecore_roce.c
236
dst_gid[i] = OSAL_CPU_TO_LE32(qp->dgid.dwords[i]);
sys/dev/qlnx/qlnxe/ecore_roce.c
391
struct ecore_rdma_qp *qp)
sys/dev/qlnx/qlnxe/ecore_roce.c
403
if (!qp->has_resp)
sys/dev/qlnx/qlnxe/ecore_roce.c
406
DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "qp_idx = %08x\n", qp->qp_idx);
sys/dev/qlnx/qlnxe/ecore_roce.c
409
qp->irq_num_pages = 1;
sys/dev/qlnx/qlnxe/ecore_roce.c
410
qp->irq = OSAL_DMA_ALLOC_COHERENT(p_hwfn->p_dev,
sys/dev/qlnx/qlnxe/ecore_roce.c
411
&qp->irq_phys_addr,
sys/dev/qlnx/qlnxe/ecore_roce.c
413
if (!qp->irq) {
sys/dev/qlnx/qlnxe/ecore_roce.c
423
init_data.cid = qp->icid;
sys/dev/qlnx/qlnxe/ecore_roce.c
436
roce_flavor = ecore_roce_mode_to_flavor(qp->roce_mode);
sys/dev/qlnx/qlnxe/ecore_roce.c
443
qp->incoming_rdma_read_en);
sys/dev/qlnx/qlnxe/ecore_roce.c
447
qp->incoming_rdma_write_en);
sys/dev/qlnx/qlnxe/ecore_roce.c
451
qp->incoming_atomic_en);
sys/dev/qlnx/qlnxe/ecore_roce.c
455
qp->e2e_flow_control_en);
sys/dev/qlnx/qlnxe/ecore_roce.c
459
qp->use_srq);
sys/dev/qlnx/qlnxe/ecore_roce.c
463
qp->fmr_and_reserved_lkey);
sys/dev/qlnx/qlnxe/ecore_roce.c
467
ecore_rdma_is_xrc_qp(qp));
sys/dev/qlnx/qlnxe/ecore_roce.c
475
qp->min_rnr_nak_timer);
sys/dev/qlnx/qlnxe/ecore_roce.c
478
qp->max_rd_atomic_resp;
sys/dev/qlnx/qlnxe/ecore_roce.c
479
p_ramrod->traffic_class = qp->traffic_class_tos;
sys/dev/qlnx/qlnxe/ecore_roce.c
480
p_ramrod->hop_limit = qp->hop_limit_ttl;
sys/dev/qlnx/qlnxe/ecore_roce.c
481
p_ramrod->irq_num_pages = qp->irq_num_pages;
sys/dev/qlnx/qlnxe/ecore_roce.c
482
p_ramrod->p_key = OSAL_CPU_TO_LE16(qp->pkey);
sys/dev/qlnx/qlnxe/ecore_roce.c
483
p_ramrod->flow_label = OSAL_CPU_TO_LE32(qp->flow_label);
sys/dev/qlnx/qlnxe/ecore_roce.c
484
p_ramrod->dst_qp_id = OSAL_CPU_TO_LE32(qp->dest_qp);
sys/dev/qlnx/qlnxe/ecore_roce.c
485
p_ramrod->mtu = OSAL_CPU_TO_LE16(qp->mtu);
sys/dev/qlnx/qlnxe/ecore_roce.c
486
p_ramrod->initial_psn = OSAL_CPU_TO_LE32(qp->rq_psn);
sys/dev/qlnx/qlnxe/ecore_roce.c
487
p_ramrod->pd = OSAL_CPU_TO_LE16(qp->pd);
sys/dev/qlnx/qlnxe/ecore_roce.c
488
p_ramrod->rq_num_pages = OSAL_CPU_TO_LE16(qp->rq_num_pages);
sys/dev/qlnx/qlnxe/ecore_roce.c
489
DMA_REGPAIR_LE(p_ramrod->rq_pbl_addr, qp->rq_pbl_ptr);
sys/dev/qlnx/qlnxe/ecore_roce.c
490
DMA_REGPAIR_LE(p_ramrod->irq_pbl_addr, qp->irq_phys_addr);
sys/dev/qlnx/qlnxe/ecore_roce.c
491
ecore_rdma_copy_gids(qp, p_ramrod->src_gid, p_ramrod->dst_gid);
sys/dev/qlnx/qlnxe/ecore_roce.c
493
OSAL_CPU_TO_LE32(qp->qp_handle_async.hi);
sys/dev/qlnx/qlnxe/ecore_roce.c
495
OSAL_CPU_TO_LE32(qp->qp_handle_async.lo);
sys/dev/qlnx/qlnxe/ecore_roce.c
496
p_ramrod->qp_handle_for_cqe.hi = OSAL_CPU_TO_LE32(qp->qp_handle.hi);
sys/dev/qlnx/qlnxe/ecore_roce.c
497
p_ramrod->qp_handle_for_cqe.lo = OSAL_CPU_TO_LE32(qp->qp_handle.lo);
sys/dev/qlnx/qlnxe/ecore_roce.c
498
p_ramrod->cq_cid = OSAL_CPU_TO_LE32((p_hwfn->hw_info.opaque_fid << 16) | qp->rq_cq_id);
sys/dev/qlnx/qlnxe/ecore_roce.c
499
p_ramrod->xrc_domain = OSAL_CPU_TO_LE16(qp->xrcd_id);
sys/dev/qlnx/qlnxe/ecore_roce.c
506
(qp->icid >> 1) %
sys/dev/qlnx/qlnxe/ecore_roce.c
515
p_ramrod->dpi = OSAL_CPU_TO_LE16(qp->dpi);
sys/dev/qlnx/qlnxe/ecore_roce.c
517
ecore_rdma_set_fw_mac(p_ramrod->remote_mac_addr, qp->remote_mac_addr);
sys/dev/qlnx/qlnxe/ecore_roce.c
518
ecore_rdma_set_fw_mac(p_ramrod->local_mac_addr, qp->local_mac_addr);
sys/dev/qlnx/qlnxe/ecore_roce.c
520
p_ramrod->udp_src_port = qp->udp_src_port;
sys/dev/qlnx/qlnxe/ecore_roce.c
521
p_ramrod->vlan_id = OSAL_CPU_TO_LE16(qp->vlan_id);
sys/dev/qlnx/qlnxe/ecore_roce.c
522
is_xrc = ecore_rdma_is_xrc_qp(qp);
sys/dev/qlnx/qlnxe/ecore_roce.c
523
fw_srq_id = ecore_rdma_get_fw_srq_id(p_hwfn, qp->srq_id, is_xrc);
sys/dev/qlnx/qlnxe/ecore_roce.c
528
qp->stats_queue;
sys/dev/qlnx/qlnxe/ecore_roce.c
538
qp->resp_offloaded = true;
sys/dev/qlnx/qlnxe/ecore_roce.c
539
qp->cq_prod.resp = 0;
sys/dev/qlnx/qlnxe/ecore_roce.c
543
ecore_roce_set_cid(p_hwfn, qp->icid - cid_start);
sys/dev/qlnx/qlnxe/ecore_roce.c
550
qp->irq,
sys/dev/qlnx/qlnxe/ecore_roce.c
551
qp->irq_phys_addr,
sys/dev/qlnx/qlnxe/ecore_roce.c
552
qp->irq_num_pages *
sys/dev/qlnx/qlnxe/ecore_roce.c
560
struct ecore_rdma_qp *qp)
sys/dev/qlnx/qlnxe/ecore_roce.c
570
if (!qp->has_req)
sys/dev/qlnx/qlnxe/ecore_roce.c
573
DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
sys/dev/qlnx/qlnxe/ecore_roce.c
576
qp->orq_num_pages = 1;
sys/dev/qlnx/qlnxe/ecore_roce.c
577
qp->orq = OSAL_DMA_ALLOC_COHERENT(p_hwfn->p_dev,
sys/dev/qlnx/qlnxe/ecore_roce.c
578
&qp->orq_phys_addr,
sys/dev/qlnx/qlnxe/ecore_roce.c
580
if (!qp->orq)
sys/dev/qlnx/qlnxe/ecore_roce.c
591
init_data.cid = qp->icid + 1;
sys/dev/qlnx/qlnxe/ecore_roce.c
605
roce_flavor = ecore_roce_mode_to_flavor(qp->roce_mode);
sys/dev/qlnx/qlnxe/ecore_roce.c
612
qp->fmr_and_reserved_lkey);
sys/dev/qlnx/qlnxe/ecore_roce.c
616
qp->signal_all);
sys/dev/qlnx/qlnxe/ecore_roce.c
625
qp->retry_cnt);
sys/dev/qlnx/qlnxe/ecore_roce.c
629
qp->rnr_retry_cnt);
sys/dev/qlnx/qlnxe/ecore_roce.c
633
ecore_rdma_is_xrc_qp(qp));
sys/dev/qlnx/qlnxe/ecore_roce.c
635
p_ramrod->max_ord = qp->max_rd_atomic_req;
sys/dev/qlnx/qlnxe/ecore_roce.c
636
p_ramrod->traffic_class = qp->traffic_class_tos;
sys/dev/qlnx/qlnxe/ecore_roce.c
637
p_ramrod->hop_limit = qp->hop_limit_ttl;
sys/dev/qlnx/qlnxe/ecore_roce.c
638
p_ramrod->orq_num_pages = qp->orq_num_pages;
sys/dev/qlnx/qlnxe/ecore_roce.c
639
p_ramrod->p_key = OSAL_CPU_TO_LE16(qp->pkey);
sys/dev/qlnx/qlnxe/ecore_roce.c
640
p_ramrod->flow_label = OSAL_CPU_TO_LE32(qp->flow_label);
sys/dev/qlnx/qlnxe/ecore_roce.c
641
p_ramrod->dst_qp_id = OSAL_CPU_TO_LE32(qp->dest_qp);
sys/dev/qlnx/qlnxe/ecore_roce.c
642
p_ramrod->ack_timeout_val = OSAL_CPU_TO_LE32(qp->ack_timeout);
sys/dev/qlnx/qlnxe/ecore_roce.c
643
p_ramrod->mtu = OSAL_CPU_TO_LE16(qp->mtu);
sys/dev/qlnx/qlnxe/ecore_roce.c
644
p_ramrod->initial_psn = OSAL_CPU_TO_LE32(qp->sq_psn);
sys/dev/qlnx/qlnxe/ecore_roce.c
645
p_ramrod->pd = OSAL_CPU_TO_LE16(qp->pd);
sys/dev/qlnx/qlnxe/ecore_roce.c
646
p_ramrod->sq_num_pages = OSAL_CPU_TO_LE16(qp->sq_num_pages);
sys/dev/qlnx/qlnxe/ecore_roce.c
647
DMA_REGPAIR_LE(p_ramrod->sq_pbl_addr, qp->sq_pbl_ptr);
sys/dev/qlnx/qlnxe/ecore_roce.c
648
DMA_REGPAIR_LE(p_ramrod->orq_pbl_addr, qp->orq_phys_addr);
sys/dev/qlnx/qlnxe/ecore_roce.c
649
ecore_rdma_copy_gids(qp, p_ramrod->src_gid, p_ramrod->dst_gid);
sys/dev/qlnx/qlnxe/ecore_roce.c
651
OSAL_CPU_TO_LE32(qp->qp_handle_async.hi);
sys/dev/qlnx/qlnxe/ecore_roce.c
653
OSAL_CPU_TO_LE32(qp->qp_handle_async.lo);
sys/dev/qlnx/qlnxe/ecore_roce.c
654
p_ramrod->qp_handle_for_cqe.hi = OSAL_CPU_TO_LE32(qp->qp_handle.hi);
sys/dev/qlnx/qlnxe/ecore_roce.c
655
p_ramrod->qp_handle_for_cqe.lo = OSAL_CPU_TO_LE32(qp->qp_handle.lo);
sys/dev/qlnx/qlnxe/ecore_roce.c
657
qp->sq_cq_id);
sys/dev/qlnx/qlnxe/ecore_roce.c
664
(qp->icid >> 1) %
sys/dev/qlnx/qlnxe/ecore_roce.c
673
p_ramrod->dpi = OSAL_CPU_TO_LE16(qp->dpi);
sys/dev/qlnx/qlnxe/ecore_roce.c
675
ecore_rdma_set_fw_mac(p_ramrod->remote_mac_addr, qp->remote_mac_addr);
sys/dev/qlnx/qlnxe/ecore_roce.c
676
ecore_rdma_set_fw_mac(p_ramrod->local_mac_addr, qp->local_mac_addr);
sys/dev/qlnx/qlnxe/ecore_roce.c
678
p_ramrod->udp_src_port = qp->udp_src_port;
sys/dev/qlnx/qlnxe/ecore_roce.c
679
p_ramrod->vlan_id = OSAL_CPU_TO_LE16(qp->vlan_id);
sys/dev/qlnx/qlnxe/ecore_roce.c
681
qp->stats_queue;
sys/dev/qlnx/qlnxe/ecore_roce.c
690
qp->req_offloaded = true;
sys/dev/qlnx/qlnxe/ecore_roce.c
691
qp->cq_prod.req = 0;
sys/dev/qlnx/qlnxe/ecore_roce.c
695
ecore_roce_set_cid(p_hwfn, qp->icid + 1 - cid_start);
sys/dev/qlnx/qlnxe/ecore_roce.c
702
qp->orq,
sys/dev/qlnx/qlnxe/ecore_roce.c
703
qp->orq_phys_addr,
sys/dev/qlnx/qlnxe/ecore_roce.c
704
qp->orq_num_pages *
sys/dev/qlnx/qlnxe/ecore_roce.c
711
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
720
if (!qp->has_resp)
sys/dev/qlnx/qlnxe/ecore_roce.c
723
DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
sys/dev/qlnx/qlnxe/ecore_roce.c
725
if (move_to_err && !qp->resp_offloaded)
sys/dev/qlnx/qlnxe/ecore_roce.c
730
init_data.cid = qp->icid;
sys/dev/qlnx/qlnxe/ecore_roce.c
753
qp->incoming_rdma_read_en);
sys/dev/qlnx/qlnxe/ecore_roce.c
757
qp->incoming_rdma_write_en);
sys/dev/qlnx/qlnxe/ecore_roce.c
761
qp->incoming_atomic_en);
sys/dev/qlnx/qlnxe/ecore_roce.c
765
qp->e2e_flow_control_en);
sys/dev/qlnx/qlnxe/ecore_roce.c
799
qp->min_rnr_nak_timer);
sys/dev/qlnx/qlnxe/ecore_roce.c
801
p_ramrod->max_ird = qp->max_rd_atomic_resp;
sys/dev/qlnx/qlnxe/ecore_roce.c
802
p_ramrod->traffic_class = qp->traffic_class_tos;
sys/dev/qlnx/qlnxe/ecore_roce.c
803
p_ramrod->hop_limit = qp->hop_limit_ttl;
sys/dev/qlnx/qlnxe/ecore_roce.c
804
p_ramrod->p_key = OSAL_CPU_TO_LE16(qp->pkey);
sys/dev/qlnx/qlnxe/ecore_roce.c
805
p_ramrod->flow_label = OSAL_CPU_TO_LE32(qp->flow_label);
sys/dev/qlnx/qlnxe/ecore_roce.c
806
p_ramrod->mtu = OSAL_CPU_TO_LE16(qp->mtu);
sys/dev/qlnx/qlnxe/ecore_roce.c
807
ecore_rdma_copy_gids(qp, p_ramrod->src_gid, p_ramrod->dst_gid);
sys/dev/qlnx/qlnxe/ecore_roce.c
816
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
826
if (!qp->has_req)
sys/dev/qlnx/qlnxe/ecore_roce.c
829
DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
sys/dev/qlnx/qlnxe/ecore_roce.c
831
if (move_to_err && !(qp->req_offloaded))
sys/dev/qlnx/qlnxe/ecore_roce.c
836
init_data.cid = qp->icid + 1;
sys/dev/qlnx/qlnxe/ecore_roce.c
862
qp->sqd_async);
sys/dev/qlnx/qlnxe/ecore_roce.c
901
qp->retry_cnt);
sys/dev/qlnx/qlnxe/ecore_roce.c
905
qp->rnr_retry_cnt);
sys/dev/qlnx/qlnxe/ecore_roce.c
907
p_ramrod->max_ord = qp->max_rd_atomic_req;
sys/dev/qlnx/qlnxe/ecore_roce.c
908
p_ramrod->traffic_class = qp->traffic_class_tos;
sys/dev/qlnx/qlnxe/ecore_roce.c
909
p_ramrod->hop_limit = qp->hop_limit_ttl;
sys/dev/qlnx/qlnxe/ecore_roce.c
910
p_ramrod->p_key = OSAL_CPU_TO_LE16(qp->pkey);
sys/dev/qlnx/qlnxe/ecore_roce.c
911
p_ramrod->flow_label = OSAL_CPU_TO_LE32(qp->flow_label);
sys/dev/qlnx/qlnxe/ecore_roce.c
912
p_ramrod->ack_timeout_val = OSAL_CPU_TO_LE32(qp->ack_timeout);
sys/dev/qlnx/qlnxe/ecore_roce.c
913
p_ramrod->mtu = OSAL_CPU_TO_LE16(qp->mtu);
sys/dev/qlnx/qlnxe/ecore_roce.c
914
ecore_rdma_copy_gids(qp, p_ramrod->src_gid, p_ramrod->dst_gid);
sys/dev/qlnx/qlnxe/ecore_roce.c
923
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.c
934
if (!qp->has_resp) {
sys/dev/qlnx/qlnxe/ecore_roce.c
940
DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
sys/dev/qlnx/qlnxe/ecore_roce.c
944
if (!qp->resp_offloaded) {
sys/dev/qlnx/qlnxe/ecore_roce.c
945
*cq_prod = qp->cq_prod.resp;
sys/dev/qlnx/qlnxe/ecore_roce.c
951
init_data.cid = qp->icid;
sys/dev/qlnx/qlnxe/ecore_roce.c
984
qp->cq_prod.resp = *cq_prod;
sys/dev/qlnx/qlnxe/ecore_roce.c
988
qp->irq,
sys/dev/qlnx/qlnxe/ecore_roce.c
989
qp->irq_phys_addr,
sys/dev/qlnx/qlnxe/ecore_roce.c
990
qp->irq_num_pages *
sys/dev/qlnx/qlnxe/ecore_roce.c
993
qp->resp_offloaded = false;
sys/dev/qlnx/qlnxe/ecore_roce.h
63
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.h
68
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce.h
89
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce_api.h
633
struct ecore_rdma_qp *qp);
sys/dev/qlnx/qlnxe/ecore_roce_api.h
648
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce_api.h
659
struct ecore_rdma_qp *qp,
sys/dev/qlnx/qlnxe/ecore_roce_api.h
769
struct ecore_rdma_qp *qp;
sys/dev/qlnx/qlnxe/ecore_roce_api.h
809
struct ecore_rdma_qp *qp;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
113
qp = dev->gsi_qp;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
123
spin_lock_irqsave(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
125
qp->rqe_wr_id[qp->rq.gsi_cons].rc =
sys/dev/qlnx/qlnxr/qlnxr_cm.c
127
qp->rqe_wr_id[qp->rq.gsi_cons].vlan_id = data->vlan;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
129
qp->rqe_wr_id[qp->rq.gsi_cons].sg_list[0].length =
sys/dev/qlnx/qlnxr/qlnxr_cm.c
131
*((u32 *)&qp->rqe_wr_id[qp->rq.gsi_cons].smac[0]) =
sys/dev/qlnx/qlnxr/qlnxr_cm.c
133
*((u16 *)&qp->rqe_wr_id[qp->rq.gsi_cons].smac[4]) =
sys/dev/qlnx/qlnxr/qlnxr_cm.c
136
qlnxr_inc_sw_gsi_cons(&qp->rq);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
138
spin_unlock_irqrestore(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
315
struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_cm.c
390
struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_cm.c
403
rc = qlnxr_ll2_start(dev, attrs, qp);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
41
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_cm.c
410
qp->ibqp.qp_num = 1;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
411
qp->rq.max_wr = attrs->cap.max_recv_wr;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
412
qp->sq.max_wr = attrs->cap.max_send_wr;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
414
qp->rqe_wr_id = kzalloc(qp->rq.max_wr * sizeof(*qp->rqe_wr_id),
sys/dev/qlnx/qlnxr/qlnxr_cm.c
416
if (!qp->rqe_wr_id) {
sys/dev/qlnx/qlnxr/qlnxr_cm.c
421
qp->wqe_wr_id = kzalloc(qp->sq.max_wr * sizeof(*qp->wqe_wr_id),
sys/dev/qlnx/qlnxr/qlnxr_cm.c
423
if (!qp->wqe_wr_id) {
sys/dev/qlnx/qlnxr/qlnxr_cm.c
428
qlnxr_store_gsi_qp_cq(dev, qp, attrs);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
436
QL_DPRINT12(dev->ha, "exit &qp->ibqp = %p\n", &qp->ibqp);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
438
return &qp->ibqp;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
440
kfree(qp->rqe_wr_id);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
482
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_cm.c
49
dev->gsi_qp = qp;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
544
qp, swr->opcode, swr->wr_id, *roce_mode, grh->hop_limit,
sys/dev/qlnx/qlnxr/qlnxr_cm.c
591
udh->bth.psn = OSAL_CPU_TO_BE32((qp->sq_psn++) & ((1 << 24) - 1));
sys/dev/qlnx/qlnxr/qlnxr_cm.c
605
struct qlnxr_qp *qp, const struct ib_send_wr *swr,
sys/dev/qlnx/qlnxr/qlnxr_cm.c
618
rc = qlnxr_gsi_build_header(dev, qp, swr, &udh, &roce_mode);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
651
qp->wqe_wr_id[qp->sq.prod].bytes_len = IB_GRH_BYTES; //RDMA_GRH_BYTES
sys/dev/qlnx/qlnxr/qlnxr_cm.c
655
qp->wqe_wr_id[qp->sq.prod].bytes_len +=
sys/dev/qlnx/qlnxr/qlnxr_cm.c
67
struct qlnxr_qp *qp = dev->gsi_qp;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
674
struct qlnxr_qp *qp = get_qlnxr_qp(ibqp);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
675
struct qlnxr_dev *dev = qp->dev;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
681
if (qp->state != ECORE_ROCE_QP_STATE_RTS) {
sys/dev/qlnx/qlnxr/qlnxr_cm.c
701
spin_lock_irqsave(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
703
rc = qlnxr_gsi_build_packet(dev, qp, wr, &pkt);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
705
spin_unlock_irqrestore(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
713
qp->wqe_wr_id[qp->sq.prod].wr_id = wr->wr_id;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
714
qp->wqe_wr_id[qp->sq.prod].signaled =
sys/dev/qlnx/qlnxr/qlnxr_cm.c
716
qp->wqe_wr_id[qp->sq.prod].opcode = IB_WC_SEND;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
717
qlnxr_inc_sw_prod(&qp->sq);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
725
spin_unlock_irqrestore(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
748
struct qlnxr_qp *qp = get_qlnxr_qp(ibqp);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
754
if ((qp->state != ECORE_ROCE_QP_STATE_RTR) &&
sys/dev/qlnx/qlnxr/qlnxr_cm.c
755
(qp->state != ECORE_ROCE_QP_STATE_RTS)) {
sys/dev/qlnx/qlnxr/qlnxr_cm.c
76
spin_lock_irqsave(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
761
spin_lock_irqsave(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
78
qlnxr_inc_sw_gsi_cons(&qp->sq);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
780
memset(&qp->rqe_wr_id[qp->rq.prod], 0,
sys/dev/qlnx/qlnxr/qlnxr_cm.c
781
sizeof(qp->rqe_wr_id[qp->rq.prod]));
sys/dev/qlnx/qlnxr/qlnxr_cm.c
782
qp->rqe_wr_id[qp->rq.prod].sg_list[0] = wr->sg_list[0];
sys/dev/qlnx/qlnxr/qlnxr_cm.c
783
qp->rqe_wr_id[qp->rq.prod].wr_id = wr->wr_id;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
785
qlnxr_inc_sw_prod(&qp->rq);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
790
spin_unlock_irqrestore(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
796
spin_unlock_irqrestore(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
80
spin_unlock_irqrestore(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
808
struct qlnxr_qp *qp = dev->gsi_qp;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
816
while (i < num_entries && qp->rq.cons != qp->rq.gsi_cons) {
sys/dev/qlnx/qlnxr/qlnxr_cm.c
819
wc[i].qp = &qp->ibqp;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
820
wc[i].wr_id = qp->rqe_wr_id[qp->rq.cons].wr_id;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
823
wc[i].status = (qp->rqe_wr_id[qp->rq.cons].rc)?
sys/dev/qlnx/qlnxr/qlnxr_cm.c
826
wc[i].byte_len = qp->rqe_wr_id[qp->rq.cons].sg_list[0].length;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
829
memcpy(&wc[i].smac, qp->rqe_wr_id[qp->rq.cons].smac, ETH_ALEN);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
832
if (qp->rqe_wr_id[qp->rq.cons].vlan_id) {
sys/dev/qlnx/qlnxr/qlnxr_cm.c
834
wc[i].vlan_id = qp->rqe_wr_id[qp->rq.cons].vlan_id;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
837
qlnxr_inc_sw_cons(&qp->rq);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
841
while (i < num_entries && qp->sq.cons != qp->sq.gsi_cons) {
sys/dev/qlnx/qlnxr/qlnxr_cm.c
844
wc[i].qp = &qp->ibqp;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
845
wc[i].wr_id = qp->wqe_wr_id[qp->sq.cons].wr_id;
sys/dev/qlnx/qlnxr/qlnxr_cm.c
849
qlnxr_inc_sw_cons(&qp->sq);
sys/dev/qlnx/qlnxr/qlnxr_cm.c
97
struct qlnxr_qp *qp = NULL;
sys/dev/qlnx/qlnxr/qlnxr_cm.h
87
struct qlnxr_qp *qp);
sys/dev/qlnx/qlnxr/qlnxr_cm.h
90
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_def.h
730
struct qlnxr_qp *qp;
sys/dev/qlnx/qlnxr/qlnxr_def.h
796
static inline bool qlnxr_qp_has_srq(struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_def.h
798
return !!qp->srq;
sys/dev/qlnx/qlnxr/qlnxr_def.h
801
static inline bool qlnxr_qp_has_sq(struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_def.h
803
if (qp->qp_type == IB_QPT_GSI)
sys/dev/qlnx/qlnxr/qlnxr_def.h
809
static inline bool qlnxr_qp_has_rq(struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_def.h
811
if (qp->qp_type == IB_QPT_GSI || qlnxr_qp_has_srq(qp))
sys/dev/qlnx/qlnxr/qlnxr_os.c
549
struct qlnxr_qp *qp = (struct qlnxr_qp *)(uintptr_t)roceHandle64;
sys/dev/qlnx/qlnxr/qlnxr_os.c
636
if (qp && qp->sig == QLNXR_QP_MAGIC_NUMBER) {
sys/dev/qlnx/qlnxr/qlnxr_os.c
637
struct ib_qp *ibqp = &qp->ibqp;
sys/dev/qlnx/qlnxr/qlnxr_os.c
641
event.element.qp = ibqp;
sys/dev/qlnx/qlnxr/qlnxr_os.c
651
e_code, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2118
struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2125
QL_DPRINT12(ha, "enter qp->srq = %p\n", qp->srq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2127
if (qp->srq)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2144
uresp->rq_icid = qp->icid;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2153
struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2165
uresp->sq_icid = qp->icid;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2168
uresp->sq_icid = qp->icid + 1;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2176
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2185
QL_DPRINT12(ha, "enter qp->icid =0x%x\n", qp->icid);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2188
qlnxr_copy_sq_uresp(dev, &uresp, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2189
qlnxr_copy_rq_uresp(dev, &uresp, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2192
uresp.qp_id = qp->qp_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2202
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2212
spin_lock_init(&qp->q_lock);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2214
atomic_set(&qp->refcnt, 1);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2215
qp->pd = pd;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2216
qp->sig = QLNXR_QP_MAGIC_NUMBER;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2217
qp->qp_type = attrs->qp_type;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2218
qp->max_inline_data = ROCE_REQ_MAX_INLINE_DATA_SIZE;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2219
qp->sq.max_sges = attrs->cap.max_send_sge;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2220
qp->state = ECORE_ROCE_QP_STATE_RESET;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2221
qp->signaled = (attrs->sq_sig_type == IB_SIGNAL_ALL_WR) ? true : false;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2222
qp->sq_cq = get_qlnxr_cq(attrs->send_cq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2223
qp->rq_cq = get_qlnxr_cq(attrs->recv_cq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2224
qp->dev = dev;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2228
qp->rq.max_sges = attrs->cap.max_recv_sge;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2230
qp->rq.max_sges, qp->rq_cq->icid);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2232
qp->srq = get_qlnxr_srq(attrs->srq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2238
pd->pd_id, qp->qp_type, qp->max_inline_data,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2239
qp->state, qp->signaled, ((attrs->srq) ? 1 : 0));
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2241
qp->sq.max_sges, qp->sq_cq->icid);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2426
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2438
params->qp_handle_async_lo = lower_32_bits((uintptr_t)qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2439
params->qp_handle_async_hi = upper_32_bits((uintptr_t)qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2450
if (qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2452
params->srq_id = qp->srq->srq_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2468
struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2472
qp, qp->usq.buf_addr, qp->usq.buf_len, qp->urq.buf_addr,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2473
qp->urq.buf_len);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2533
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2542
qp->usq.pbl_tbl->va = out_params->sq_pbl_virt;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2543
qp->usq.pbl_tbl->pa = out_params->sq_pbl_phys;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2545
qlnxr_populate_pbls(dev, qp->usq.umem, qp->usq.pbl_tbl,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2546
&qp->usq.pbl_info);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2548
if (qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2549
QL_DPRINT11(ha, "qp->srq = %p\n", qp->srq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2553
qp->urq.pbl_tbl->va = out_params->rq_pbl_virt;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2554
qp->urq.pbl_tbl->pa = out_params->rq_pbl_phys;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2556
qlnxr_populate_pbls(dev, qp->urq.umem, qp->urq.pbl_tbl,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2557
&qp->urq.pbl_info);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2565
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2595
rc = qlnxr_init_user_queue(ib_ctx, dev, &qp->usq, ureq.sq_addr,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2603
if (!qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2605
rc = qlnxr_init_user_queue(ib_ctx, dev, &qp->urq, ureq.rq_addr,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2616
qlnxr_init_common_qp_in_params(dev, pd, qp, attrs, false, &in_params);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2619
in_params.sq_num_pages = qp->usq.pbl_info.num_pbes;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2620
in_params.sq_pbl_ptr = qp->usq.pbl_tbl->pa;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2622
if (!qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2623
in_params.rq_num_pages = qp->urq.pbl_info.num_pbes;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2624
in_params.rq_pbl_ptr = qp->urq.pbl_tbl->pa;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2627
qp->ecore_qp = ecore_rdma_create_qp(dev->rdma_ctx, &in_params, &out_params);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2629
if (!qp->ecore_qp) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2636
qlnxr_iwarp_populate_user_qp(dev, qp, &out_params);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2638
qp->qp_id = out_params.qp_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2639
qp->icid = out_params.icid;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2641
rc = qlnxr_copy_qp_uresp(dev, qp, udata);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2648
qlnxr_qp_user_print(dev, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2653
rc = ecore_rdma_destroy_qp(dev->rdma_ctx, qp->ecore_qp, &d_out_params);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2659
qlnxr_cleanup_user(dev, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2667
struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2673
QL_DPRINT12(ha, "enter qp = %p qp->srq %p\n", qp, qp->srq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2675
qp->sq.db = dev->db_addr +
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2677
qp->sq.db_data.data.icid = qp->icid + 1;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2679
if (!qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2680
qp->rq.db = dev->db_addr +
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2682
qp->rq.db_data.data.icid = qp->icid;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2691
struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2698
QL_DPRINT12(ha, "enter qp = %p qp->srq %p\n", qp, qp->srq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2700
qp->sq.db = dev->db_addr +
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2702
qp->sq.db_data.data.icid = qp->icid;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2704
if (!qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2705
qp->rq.db = dev->db_addr +
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2707
qp->rq.db_data.data.icid = qp->icid;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2709
qp->rq.iwarp_db2 = dev->db_addr +
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2711
qp->rq.iwarp_db2_data.data.icid = qp->icid;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2712
qp->rq.iwarp_db2_data.data.value = DQ_TCM_IWARP_POST_RQ_CF_CMD;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2720
qp->sq.db, qp->sq.db_data.data.icid,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2721
qp->rq.db, qp->rq.db_data.data.icid,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2722
qp->rq.iwarp_db2, qp->rq.iwarp_db2_data.data.icid,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2723
qp->rq.iwarp_db2_data.data.value);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2731
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2751
&qp->sq.pbl,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2759
in_params->sq_num_pages = ecore_chain_get_page_cnt(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2760
in_params->sq_pbl_ptr = ecore_chain_get_pbl_phys(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2762
if (!qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2770
&qp->rq.pbl,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2779
in_params->rq_num_pages = ecore_chain_get_page_cnt(&qp->rq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2780
in_params->rq_pbl_ptr = ecore_chain_get_pbl_phys(&qp->rq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2783
qp->ecore_qp = ecore_rdma_create_qp(dev->rdma_ctx, in_params, &out_params);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2785
if (!qp->ecore_qp) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2790
qp->qp_id = out_params.qp_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2791
qp->icid = out_params.icid;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2793
qlnxr_set_roce_db_info(dev, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2801
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2866
qp->ecore_qp = ecore_rdma_create_qp(dev->rdma_ctx, in_params, &out_params);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2868
if (!qp->ecore_qp) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2888
&qp->sq.pbl,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2904
if (!qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2912
&qp->rq.pbl,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2925
qp->qp_id = out_params.qp_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2926
qp->icid = out_params.icid;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2928
qlnxr_set_iwarp_db_info(dev, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2934
ecore_rdma_destroy_qp(dev->rdma_ctx, qp->ecore_qp, &d_out_params);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2942
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2971
qp->sq.max_wr = min_t(u32, attrs->cap.max_send_wr * dev->wq_multiplier,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2974
qp->wqe_wr_id = kzalloc(qp->sq.max_wr * sizeof(*qp->wqe_wr_id),
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2976
if (!qp->wqe_wr_id) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2982
in_params.qp_handle_lo = lower_32_bits((uintptr_t)qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2983
in_params.qp_handle_hi = upper_32_bits((uintptr_t)qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2989
qp->rq.max_wr = (u16)max_t(u32, attrs->cap.max_recv_wr, 1);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2992
if (!qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2993
qp->rqe_wr_id = kzalloc(qp->rq.max_wr * sizeof(*qp->rqe_wr_id),
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2995
if (!qp->rqe_wr_id) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
2997
kfree(qp->wqe_wr_id);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3004
in_params.qp_handle_async_lo = lower_32_bits((uintptr_t)qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3005
in_params.qp_handle_async_hi = upper_32_bits((uintptr_t)qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3016
if (qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3018
in_params.srq_id = qp->srq->srq_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3032
n_rq_elems = qp->rq.max_wr * QLNXR_MAX_RQE_ELEMENTS_PER_RQE;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3035
rc = qlnxr_roce_create_kernel_qp(dev, qp, &in_params,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3038
rc = qlnxr_iwarp_create_kernel_qp(dev, qp, &in_params,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3043
qlnxr_cleanup_kernel(dev, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3056
struct qlnxr_qp *qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3079
qp = qlnx_zalloc(sizeof(struct qlnxr_qp));
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3081
if (!qp) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3086
qlnxr_set_common_qp_params(dev, qp, pd, attrs);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3090
return qlnxr_create_gsi_qp(dev, attrs, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3094
rc = qlnxr_create_user_qp(dev, qp, ibpd, udata, attrs);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3101
rc = qlnxr_create_kernel_qp(dev, qp, ibpd, attrs);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3109
qp->ibqp.qp_num = qp->qp_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3111
rc = qlnxr_idr_add(dev, qp, qp->qp_id);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3118
QL_DPRINT12(ha, "exit [%p]\n", &qp->ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3120
return &qp->ibqp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3216
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3228
qp, new_state, qp->state);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3230
if (new_state == qp->state) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3234
switch (qp->state) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3238
qp->prev_wqe_size = 0;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3239
qlnxr_reset_qp_hwq_info(&qp->sq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3240
if (!(qp->srq))
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3241
qlnxr_reset_qp_hwq_info(&qp->rq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3253
if (qp->srq)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3261
reg_addr = (uint32_t)((uint8_t *)qp->rq.db -
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3264
bus_write_4(ha->pci_dbells, reg_addr, qp->rq.db_data.raw);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3268
reg_addr = (uint32_t)((uint8_t *)qp->rq.iwarp_db2 -
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3271
qp->rq.iwarp_db2_data.raw);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3330
if ((qp->rq.prod != qp->rq.cons) ||
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3331
(qp->sq.prod != qp->sq.cons)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3336
qp->rq.prod, qp->rq.cons,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3337
qp->sq.prod, qp->sq.cons);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3362
struct qlnxr_qp *qp = get_qlnxr_qp(ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3363
struct qlnxr_dev *dev = get_qlnxr_dev(&qp->dev->ibdev);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3373
qp, attr_mask, attr->qp_state, udata);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3375
old_qp_state = qlnxr_get_ibqp_state(qp->state);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3390
attr_mask, qp->qp_id, ibqp->qp_type,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3420
qp->qkey = attr->qkey;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3448
qp->mtu = min(ib_mtu_enum_to_int(attr->path_mtu),
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3453
if (qp->mtu == 0) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3454
qp->mtu = ib_mtu_enum_to_int(
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3457
qp->mtu);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3468
qp->sgid_idx = attr->ah_attr.grh.sgid_index;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3470
get_gid_info(ibqp, attr, attr_mask, dev, qp, &qp_params);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3494
qp_params.mtu = qp->mtu;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3499
if (qp->mtu) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3500
qp_params.mtu = qp->mtu;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3547
qp->rq_psn = attr->rq_psn;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3578
qp->sq_psn = attr->sq_psn;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3606
qp->dest_qp_num = attr->dest_qp_num;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3615
if ((attr_mask & IB_QP_STATE) && (qp->qp_type != IB_QPT_GSI) &&
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3617
qp->state = ECORE_ROCE_QP_STATE_ERR;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3619
if (qp->qp_type != IB_QPT_GSI)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3620
rc = ecore_rdma_modify_qp(dev->rdma_ctx, qp->ecore_qp, &qp_params);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3623
if ((qp->qp_type != IB_QPT_GSI) && (!udata))
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3624
rc = qlnxr_update_qp_state(dev, qp, qp_params.new_state);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3625
qp->state = qp_params.new_state;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3691
struct qlnxr_qp *qp = get_qlnxr_qp(ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3692
struct qlnxr_dev *dev = qp->dev;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3701
rc = ecore_rdma_query_qp(dev->rdma_ctx, qp->ecore_qp, ¶ms);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3730
qp_attr->cap.max_send_wr = qp->sq.max_wr;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3731
qp_attr->cap.max_recv_wr = qp->rq.max_wr;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3732
qp_attr->cap.max_send_sge = qp->sq.max_sges;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3733
qp_attr->cap.max_recv_sge = qp->rq.max_sges;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3734
qp_attr->cap.max_inline_data = qp->max_inline_data;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3741
qp_attr->ah_attr.grh.sgid_index = qp->sgid_idx;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3775
qlnxr_cleanup_user(struct qlnxr_dev *dev, struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3783
if (qp->usq.umem)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3784
ib_umem_release(qp->usq.umem);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3786
qp->usq.umem = NULL;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3788
if (qp->urq.umem)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3789
ib_umem_release(qp->urq.umem);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3791
qp->urq.umem = NULL;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3798
qlnxr_cleanup_kernel(struct qlnxr_dev *dev, struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3806
if (qlnxr_qp_has_sq(qp)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3811
kfree(qp->wqe_wr_id);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3814
if (qlnxr_qp_has_rq(qp)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3819
kfree(qp->rqe_wr_id);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3828
struct qlnxr_qp *qp, struct ib_udata *udata)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3839
if (qp->qp_type != IB_QPT_GSI) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3840
rc = ecore_rdma_destroy_qp(dev->rdma_ctx, qp->ecore_qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3847
qlnxr_cleanup_user(dev, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3849
qlnxr_cleanup_kernel(dev, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3853
qlnxr_cleanup_user(dev, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3855
qlnxr_cleanup_kernel(dev, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3857
if (qp->qp_type != IB_QPT_GSI) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3858
rc = ecore_rdma_destroy_qp(dev->rdma_ctx, qp->ecore_qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3871
struct qlnxr_qp *qp = get_qlnxr_qp(ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3872
struct qlnxr_dev *dev = qp->dev;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3880
QL_DPRINT12(ha, "enter qp = %p, qp_type=%d\n", qp, qp->qp_type);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3882
qp->destroyed = 1;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3884
if (QLNX_IS_ROCE(dev) && (qp->state != (ECORE_ROCE_QP_STATE_RESET |
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3894
if (qp->qp_type == IB_QPT_GSI)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3897
qp->sig = ~qp->sig;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3899
qlnxr_free_qp_resources(dev, qp, udata);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3901
if (atomic_dec_and_test(&qp->refcnt)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3903
qlnxr_idr_remove(dev, qp->qp_id);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3936
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
3979
wqe = (char *)ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4012
qlnxr_prepare_sq_sges(struct qlnxr_dev *dev, struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4024
struct rdma_sq_sge *sge = ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4041
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4060
return qlnxr_prepare_sq_inline_data(dev, qp, &rwqe->wqe_size,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4064
ret = qlnxr_prepare_sq_sges(dev, qp, &rwqe->wqe_size, wr);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4073
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4091
return qlnxr_prepare_sq_inline_data(dev, qp, &swqe->wqe_size,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4095
ret = qlnxr_prepare_sq_sges(dev, qp, &swqe->wqe_size, wr);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4133
static int qlnxr_prepare_reg(struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4140
fwqe2 = (struct rdma_sq_fmr_wqe_2nd *)ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4166
qp->wqe_wr_id[qp->sq.prod].mr = mr;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4197
qlnxr_can_post_send(struct qlnxr_qp *qp, const struct ib_send_wr *wr)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4200
struct qlnxr_dev *dev = qp->dev;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4205
QL_DPRINT12(ha, "enter[qp, wr] = [%p,%p]\n", qp, wr);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4208
err_wr = wr->num_sge > qp->sq.max_sges;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4209
wq_is_full = qlnxr_wq_is_full(&qp->sq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4210
pbl_is_full = ecore_chain_get_elem_left_u32(&qp->sq.pbl) <
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4214
!(qp->err_bitmap & QLNXR_QP_ERR_SQ_FULL)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4215
qp->err_bitmap |= QLNXR_QP_ERR_SQ_FULL;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4221
qp, wr, qp->err_bitmap);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4225
!(qp->err_bitmap & QLNXR_QP_ERR_BAD_SR)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4226
qp->err_bitmap |= QLNXR_QP_ERR_BAD_SR;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4232
qp, wr, qp->err_bitmap);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4236
!(qp->err_bitmap & QLNXR_QP_ERR_SQ_PBL_FULL)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4237
qp->err_bitmap |= QLNXR_QP_ERR_SQ_PBL_FULL;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4243
qp, wr, qp->err_bitmap);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4247
QL_DPRINT12(ha, "exit[qp, wr] = [%p,%p]\n", qp, wr);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4257
struct qlnxr_qp *qp = get_qlnxr_qp(ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4273
if (qp->qp_type == IB_QPT_GSI)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4276
spin_lock_irqsave(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4278
if (QLNX_IS_ROCE(dev) && (qp->state != ECORE_ROCE_QP_STATE_RTS) &&
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4279
(qp->state != ECORE_ROCE_QP_STATE_ERR) &&
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4280
(qp->state != ECORE_ROCE_QP_STATE_SQD)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4281
spin_unlock_irqrestore(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4284
qp->icid, qp->state);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4304
if (!qlnxr_can_post_send(qp, wr)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4310
wqe = ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4312
qp->wqe_wr_id[qp->sq.prod].signaled =
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4313
!!(wr->send_flags & IB_SEND_SIGNALED) || qp->signaled;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4324
(qp->signaled);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4330
wqe->prev_wqe_size = qp->prev_wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4332
qp->wqe_wr_id[qp->sq.prod].opcode = qlnxr_ib_to_wc_opcode(wr->opcode);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4341
ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4346
qp, swqe, swqe2, wr,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4349
qp->wqe_wr_id[qp->sq.prod].wqe_size = swqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4350
qp->prev_wqe_size = swqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4351
qp->wqe_wr_id[qp->sq.prod].bytes_len = swqe->length;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4365
ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4368
qp, swqe, swqe2, wr,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4370
qp->wqe_wr_id[qp->sq.prod].wqe_size = swqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4371
qp->prev_wqe_size = swqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4372
qp->wqe_wr_id[qp->sq.prod].bytes_len = swqe->length;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4384
ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4389
qp, swqe, swqe2, wr, bad_wr));
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4390
qp->wqe_wr_id[qp->sq.prod].wqe_size = swqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4391
qp->prev_wqe_size = swqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4392
qp->wqe_wr_id[qp->sq.prod].bytes_len = swqe->length;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4406
ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4408
qp, rwqe, rwqe2, wr, bad_wr));
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4409
qp->wqe_wr_id[qp->sq.prod].wqe_size = rwqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4410
qp->prev_wqe_size = rwqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4411
qp->wqe_wr_id[qp->sq.prod].bytes_len = rwqe->length;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4426
ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4428
qp, rwqe, rwqe2, wr, bad_wr));
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4429
qp->wqe_wr_id[qp->sq.prod].wqe_size = rwqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4430
qp->prev_wqe_size = rwqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4431
qp->wqe_wr_id[qp->sq.prod].bytes_len = rwqe->length;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4456
ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4458
qp, rwqe, rwqe2, wr, bad_wr));
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4460
qp->wqe_wr_id[qp->sq.prod].wqe_size = rwqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4461
qp->prev_wqe_size = rwqe->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4462
qp->wqe_wr_id[qp->sq.prod].bytes_len = rwqe->length;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4482
ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4490
ecore_chain_produce(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4504
qlnxr_prepare_sq_sges(dev, qp, NULL, wr);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4506
qp->wqe_wr_id[qp->sq.prod].wqe_size = awqe1->prev_wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4507
qp->prev_wqe_size = awqe1->prev_wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4521
qp->wqe_wr_id[qp->sq.prod].wqe_size = iwqe->prev_wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4522
qp->prev_wqe_size = iwqe->prev_wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4534
rc = qlnxr_prepare_reg(qp, fwqe1, reg_wr(wr));
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4541
qp->wqe_wr_id[qp->sq.prod].wqe_size = fwqe1->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4542
qp->prev_wqe_size = fwqe1->wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4559
ecore_chain_set_prod(&qp->sq.pbl,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4560
le16_to_cpu(qp->sq.db_data.data.value),
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4563
qp->prev_wqe_size = wqe->prev_wqe_size;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4570
qp->wqe_wr_id[qp->sq.prod].wr_id = wr->wr_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4572
qlnxr_inc_sw_prod(&qp->sq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4574
qp->sq.db_data.data.value++;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4588
reg_addr = (uint32_t)((uint8_t *)qp->sq.db - (uint8_t *)ha->cdev.doorbells);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4589
bus_write_4(ha->pci_dbells, reg_addr, qp->sq.db_data.raw);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4594
spin_unlock_irqrestore(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4621
struct qlnxr_qp *qp = get_qlnxr_qp(ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4622
struct qlnxr_dev *dev = qp->dev;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4635
if (qp->qp_type == IB_QPT_GSI) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4640
if (qp->srq) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4643
qp->srq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4647
spin_lock_irqsave(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4649
if (qp->state == ECORE_ROCE_QP_STATE_RESET) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4650
spin_unlock_irqrestore(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4661
if ((ecore_chain_get_elem_left_u32(&qp->rq.pbl) <
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4663
(wr->num_sge > qp->rq.max_sges)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4670
struct rdma_rq_sge *rqe = ecore_chain_produce(&qp->rq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4686
struct rdma_rq_sge *rqe = ecore_chain_produce(&qp->rq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4702
qp->rqe_wr_id[qp->rq.prod].wr_id = wr->wr_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4703
qp->rqe_wr_id[qp->rq.prod].wqe_size = i;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4705
qlnxr_inc_sw_prod(&qp->rq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4709
qp->rq.db_data.data.value++;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4718
reg_addr = (uint32_t)((uint8_t *)qp->rq.db -
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4721
bus_write_4(ha->pci_dbells, reg_addr, qp->rq.db_data.raw);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4725
reg_addr = (uint32_t)((uint8_t *)qp->rq.iwarp_db2 -
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4728
qp->rq.iwarp_db2_data.raw);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4736
spin_unlock_irqrestore(&qp->q_lock, flags);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4751
qlnxr_chk_if_fmr(struct qlnxr_qp *qp)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4754
if (qp->wqe_wr_id[qp->sq.cons].opcode == IB_WC_REG_MR)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4755
qp->wqe_wr_id[qp->sq.cons].mr->info.completed++;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4760
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4773
while (num_entries && qp->sq.wqe_cons != hw_cons) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4774
if (!qp->wqe_wr_id[qp->sq.cons].signaled && !force) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4775
qlnxr_chk_if_fmr(qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4784
wc->src_qp = qp->id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4785
wc->qp = &qp->ibqp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4788
wc->wr_id = qp->wqe_wr_id[qp->sq.cons].wr_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4789
wc->opcode = qp->wqe_wr_id[qp->sq.cons].opcode;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4794
wc->byte_len = qp->wqe_wr_id[qp->sq.cons].bytes_len;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4798
qp->wqe_wr_id[qp->sq.cons].bytes_len);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4807
qp->wqe_wr_id[qp->sq.cons].mr->info.completed++;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4823
while (qp->wqe_wr_id[qp->sq.cons].wqe_size--)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4824
ecore_chain_consume(&qp->sq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4825
qlnxr_inc_sw_cons(&qp->sq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4834
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4848
cnt = process_req(dev, qp, cq, num_entries, wc, req->sq_cons,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4854
if (qp->state != ECORE_ROCE_QP_STATE_ERR)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4855
cnt = process_req(dev, qp, cq, num_entries, wc, req->sq_cons,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4862
qp->state = ECORE_ROCE_QP_STATE_ERR;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4863
cnt = process_req(dev, qp, cq, num_entries, wc,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4906
cnt += process_req(dev, qp, cq, 1, wc, req->sq_cons,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4917
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4927
qp, resp->status);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4971
resp->flags, qp, qp->id, cq, cq->icid );
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4983
resp->flags, qp, qp->id, cq, cq->icid );
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4988
resp->flags, qp, qp->id, cq, cq->icid );
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
4999
wc->src_qp = qp->id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5000
wc->qp = &qp->ibqp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5010
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5015
struct qlnxr_srq *srq = qp->srq;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5028
wc->src_qp = qp->id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5029
wc->qp = &qp->ibqp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5032
__process_resp_one(dev, qp, cq, wc, resp, wr_id);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5046
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5052
u64 wr_id = qp->rqe_wr_id[qp->rq.cons].wr_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5056
__process_resp_one(dev, qp, cq, wc, resp, wr_id);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5058
while (qp->rqe_wr_id[qp->rq.cons].wqe_size--)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5059
ecore_chain_consume(&qp->rq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5060
qlnxr_inc_sw_cons(&qp->rq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5067
process_resp_flush(struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5073
qlnx_host_t *ha = qp->dev->ha;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5077
while (num_entries && qp->rq.wqe_cons != hw_cons) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5082
wc->src_qp = qp->id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5084
wc->wr_id = qp->rqe_wr_id[qp->rq.cons].wr_id;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5085
wc->qp = &qp->ibqp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5089
while (qp->rqe_wr_id[qp->rq.cons].wqe_size--)
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5090
ecore_chain_consume(&qp->rq.pbl);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5091
qlnxr_inc_sw_cons(&qp->rq);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5100
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5104
if (le16_to_cpu(resp->rq_cons) == qp->rq.wqe_cons) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5112
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5124
cnt = process_resp_one_srq(dev, qp, cq, wc, resp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5134
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5147
cnt = process_resp_flush(qp, num_entries, wc,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5149
try_consume_resp_cqe(cq, qp, resp, update);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5151
cnt = process_resp_one(dev, qp, cq, wc, resp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5161
try_consume_req_cqe(struct qlnxr_cq *cq, struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5164
if (le16_to_cpu(req->sq_cons) == qp->sq.wqe_cons) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5243
struct qlnxr_qp *qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5251
qp = (struct qlnxr_qp *)(uintptr_t)HILO_U64(resp_cqe->qp_handle.hi,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5254
if (!qp) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5259
wc->qp = &qp->ibqp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5265
cnt = qlnxr_poll_cq_req(dev, qp, cq, num_entries,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5267
try_consume_req_cqe(cq, qp, &cqe->req, &update);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5270
cnt = qlnxr_poll_cq_resp(dev, qp, cq, num_entries,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5274
cnt = qlnxr_poll_cq_resp_srq(dev, qp, cq, num_entries,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5789
if ((params->status == -ECONNREFUSED) && (ep->qp == NULL)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5826
struct qlnxr_qp *qp = ep->qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5829
if (qp->destroyed) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5831
qlnxr_iw_qp_rem_ref(&qp->ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5855
ecore_rdma_modify_qp(dev->rdma_ctx, qp->ecore_qp, &qp_params);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5857
qlnxr_iw_qp_rem_ref(&qp->ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5869
struct qlnxr_qp *qp = ep->qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5875
qlnxr_iw_qp_add_ref(&qp->ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5920
struct ib_qp *ibqp = &(ep->qp->ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
5933
event.element.qp = ibqp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6078
struct qlnxr_qp *qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6093
qp = idr_find(&dev->qpidr, conn_param->qpn);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6111
ep->qp = qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6148
conn_param->private_data_len, qp->rq_psn);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6154
in_params.qp = qp->ecore_qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6276
struct qlnxr_qp *qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6288
qp = idr_find(&dev->qpidr, conn_param->qpn);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6289
if (!qp) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6294
ep->qp = qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6295
qp->ep = ep;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6301
params.qp = ep->qp->ecore_qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6333
ep->qp = NULL;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6343
struct qlnxr_qp *qp = get_qlnxr_qp(ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6346
ha = qp->dev->ha;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6350
atomic_inc(&qp->refcnt);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6359
struct qlnxr_qp *qp = get_qlnxr_qp(ibqp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6362
ha = qp->dev->ha;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6364
QL_DPRINT12(ha, "enter ibqp = %p qp = %p\n", ibqp, qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6366
if (atomic_dec_and_test(&qp->refcnt)) {
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6367
qlnxr_idr_remove(qp->dev, qp->qp_id);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6378
struct ib_qp *qp;
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6385
qp = idr_find(&dev->qpidr, qpn);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6387
QL_DPRINT12(ha, "exit qp = %p\n", qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
6389
return (qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
839
struct qlnxr_qp *qp,
sys/dev/qlnx/qlnxr/qlnxr_verbs.c
850
&dev->sgid_tbl[qp->sgid_idx].raw[0],
sys/dev/qlnx/qlnxr/qlnxr_verbs.h
188
extern void qlnxr_iw_qp_add_ref(struct ib_qp *qp);
sys/dev/qlnx/qlnxr/qlnxr_verbs.h
190
extern void qlnxr_iw_qp_rem_ref(struct ib_qp *qp);
sys/dev/sym/sym_hipd.c
213
#define FOR_EACH_QUEUED_ELEMENT(head, qp) \
sys/dev/sym/sym_hipd.c
214
for (qp = (head)->flink; qp != (head); qp = qp->flink)
sys/dev/sym/sym_hipd.c
3533
SYM_QUEHEAD *qp;
sys/dev/sym/sym_hipd.c
3630
FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
sys/dev/sym/sym_hipd.c
3631
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
sys/dev/sym/sym_hipd.c
4602
SYM_QUEHEAD *qp;
sys/dev/sym/sym_hipd.c
4605
while ((qp = sym_remque_head(&np->comp_ccbq)) != NULL) {
sys/dev/sym/sym_hipd.c
4607
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
sys/dev/sym/sym_hipd.c
4814
SYM_QUEHEAD qtmp, *qp;
sys/dev/sym/sym_hipd.c
4830
while ((qp = sym_remque_head(&qtmp)) != NULL) {
sys/dev/sym/sym_hipd.c
4832
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
sys/dev/sym/sym_hipd.c
4897
SYM_QUEHEAD *qp;
sys/dev/sym/sym_hipd.c
4937
FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
sys/dev/sym/sym_hipd.c
4938
cp = sym_que_entry(qp,struct sym_ccb,link_ccbq);
sys/dev/sym/sym_hipd.c
4969
FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
sys/dev/sym/sym_hipd.c
4970
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
sys/dev/sym/sym_hipd.c
5081
FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
sys/dev/sym/sym_hipd.c
5082
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
sys/dev/sym/sym_hipd.c
6252
SYM_QUEHEAD *qp;
sys/dev/sym/sym_hipd.c
6260
qp = sym_remque_head(&np->free_ccbq);
sys/dev/sym/sym_hipd.c
6261
if (!qp)
sys/dev/sym/sym_hipd.c
6263
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
sys/dev/sym/sym_hipd.c
7326
SYM_QUEHEAD *qp;
sys/dev/sym/sym_hipd.c
7334
FOR_EACH_QUEUED_ELEMENT(&np->busy_ccbq, qp) {
sys/dev/sym/sym_hipd.c
7335
ccb_p cp2 = sym_que_entry(qp, struct sym_ccb, link_ccbq);
sys/dev/sym/sym_hipd.c
8749
SYM_QUEHEAD *qp;
sys/dev/sym/sym_hipd.c
8787
while ((qp = sym_remque_head(&np->free_ccbq)) != NULL) {
sys/dev/sym/sym_hipd.c
8788
cp = sym_que_entry(qp, struct sym_ccb, link_ccbq);
sys/dev/tws/tws_user.c
224
struct tws_event_packet eventp, *qp;
sys/dev/tws/tws_user.c
242
qp = (struct tws_event_packet *)sc->aen_q.q;
sys/dev/tws/tws_user.c
256
if ( qp[index].sequence_id ==
sys/dev/tws/tws_user.c
270
if ( qp[index].sequence_id ==
sys/dev/tws/tws_user.c
286
memcpy(ubuf->data_buf, &qp[index],
sys/dev/tws/tws_user.c
288
qp[index].retrieved = TWS_AEN_RETRIEVED;
sys/dev/vmware/vmci/vmci_queue_pair.c
30
struct queue_pair_entry qp;
sys/dev/vmware/vmci/vmci_queue_pair.c
350
if (!(entry->qp.flags & VMCI_QPFLAG_LOCAL))
sys/dev/vmware/vmci/vmci_queue_pair.c
351
vmci_queue_pair_detach_hypercall(entry->qp.handle);
sys/dev/vmware/vmci/vmci_queue_pair.c
355
entry->qp.ref_count = 0;
sys/dev/vmware/vmci/vmci_queue_pair.c
356
queue_pair_list_remove_entry(&qp_guest_endpoints, &entry->qp);
sys/dev/vmware/vmci/vmci_queue_pair.c
462
entry->qp.handle = handle;
sys/dev/vmware/vmci/vmci_queue_pair.c
463
entry->qp.peer = peer;
sys/dev/vmware/vmci/vmci_queue_pair.c
464
entry->qp.flags = flags;
sys/dev/vmware/vmci/vmci_queue_pair.c
465
entry->qp.produce_size = produce_size;
sys/dev/vmware/vmci/vmci_queue_pair.c
466
entry->qp.consume_size = consume_size;
sys/dev/vmware/vmci/vmci_queue_pair.c
467
entry->qp.ref_count = 0;
sys/dev/vmware/vmci/vmci_queue_pair.c
497
ASSERT(entry->qp.ref_count == 0);
sys/dev/vmware/vmci/vmci_queue_pair.c
500
vmci_free_queue(entry->produce_q, entry->qp.produce_size);
sys/dev/vmware/vmci/vmci_queue_pair.c
501
vmci_free_queue(entry->consume_q, entry->qp.consume_size);
sys/dev/vmware/vmci/vmci_queue_pair.c
531
ASSERT(!(entry->qp.flags & VMCI_QPFLAG_LOCAL));
sys/dev/vmware/vmci/vmci_queue_pair.c
542
alloc_msg->handle = entry->qp.handle;
sys/dev/vmware/vmci/vmci_queue_pair.c
543
alloc_msg->peer = entry->qp.peer;
sys/dev/vmware/vmci/vmci_queue_pair.c
544
alloc_msg->flags = entry->qp.flags;
sys/dev/vmware/vmci/vmci_queue_pair.c
545
alloc_msg->produce_size = entry->qp.produce_size;
sys/dev/vmware/vmci/vmci_queue_pair.c
546
alloc_msg->consume_size = entry->qp.consume_size;
sys/dev/vmware/vmci/vmci_queue_pair.c
612
if (queue_pair_entry->qp.flags & VMCI_QPFLAG_LOCAL) {
sys/dev/vmware/vmci/vmci_queue_pair.c
614
if (queue_pair_entry->qp.ref_count > 1) {
sys/dev/vmware/vmci/vmci_queue_pair.c
621
if (queue_pair_entry->qp.produce_size != consume_size ||
sys/dev/vmware/vmci/vmci_queue_pair.c
622
queue_pair_entry->qp.consume_size != produce_size ||
sys/dev/vmware/vmci/vmci_queue_pair.c
623
queue_pair_entry->qp.flags !=
sys/dev/vmware/vmci/vmci_queue_pair.c
682
if (queue_pair_entry->qp.flags & VMCI_QPFLAG_LOCAL) {
sys/dev/vmware/vmci/vmci_queue_pair.c
694
if (queue_pair_entry->qp.handle.context != context_id ||
sys/dev/vmware/vmci/vmci_queue_pair.c
695
(queue_pair_entry->qp.peer != VMCI_INVALID_ID &&
sys/dev/vmware/vmci/vmci_queue_pair.c
696
queue_pair_entry->qp.peer != context_id)) {
sys/dev/vmware/vmci/vmci_queue_pair.c
701
if (queue_pair_entry->qp.flags & VMCI_QPFLAG_ATTACH_ONLY) {
sys/dev/vmware/vmci/vmci_queue_pair.c
715
queue_pair_list_add_entry(&qp_guest_endpoints, &queue_pair_entry->qp);
sys/dev/vmware/vmci/vmci_queue_pair.c
718
queue_pair_entry->qp.ref_count++;
sys/dev/vmware/vmci/vmci_queue_pair.c
719
*handle = queue_pair_entry->qp.handle;
sys/dev/vmware/vmci/vmci_queue_pair.c
728
if ((queue_pair_entry->qp.flags & VMCI_QPFLAG_LOCAL) &&
sys/dev/vmware/vmci/vmci_queue_pair.c
729
queue_pair_entry->qp.ref_count == 1) {
sys/dev/vmware/vmci/vmci_queue_pair.c
753
ASSERT(queue_pair_entry->qp.ref_count > 0);
sys/dev/vmware/vmci/vmci_queue_pair.c
824
ASSERT(entry->qp.ref_count >= 1);
sys/dev/vmware/vmci/vmci_queue_pair.c
826
if (entry->qp.flags & VMCI_QPFLAG_LOCAL) {
sys/dev/vmware/vmci/vmci_queue_pair.c
829
if (entry->qp.ref_count > 1) {
sys/dev/vmware/vmci/vmci_queue_pair.c
854
ASSERT(entry->qp.ref_count == 1);
sys/dev/vmware/vmci/vmci_queue_pair.c
878
entry->qp.ref_count--;
sys/dev/vmware/vmci/vmci_queue_pair.c
879
if (entry->qp.ref_count == 0)
sys/dev/vmware/vmci/vmci_queue_pair.c
880
queue_pair_list_remove_entry(&qp_guest_endpoints, &entry->qp);
sys/dev/vmware/vmci/vmci_queue_pair.c
883
ref_count = entry ? entry->qp.ref_count :
sys/isa/pnp.c
345
struct pnp_quirk *qp;
sys/isa/pnp.c
347
for (qp = &pnp_quirks[0]; qp->vendor_id; qp++) {
sys/isa/pnp.c
348
if (qp->vendor_id == vendor_id
sys/isa/pnp.c
349
&& (qp->logical_id == 0 || qp->logical_id == logical_id)) {
sys/isa/pnp.c
350
switch (qp->type) {
sys/isa/pnp.c
353
pnp_write(qp->arg1, qp->arg2);
sys/isa/pnp.c
358
if (qp->arg1 != 0) {
sys/isa/pnp.c
361
config->ic_port[config->ic_nport - 1].ir_start += qp->arg1;
sys/isa/pnp.c
362
config->ic_port[config->ic_nport - 1].ir_end += qp->arg1;
sys/isa/pnp.c
364
if (qp->arg2 != 0) {
sys/isa/pnp.c
367
config->ic_port[config->ic_nport - 1].ir_start += qp->arg2;
sys/isa/pnp.c
368
config->ic_port[config->ic_nport - 1].ir_end += qp->arg2;
sys/ofed/drivers/infiniband/core/core_priv.h
154
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/core_priv.h
159
qp = dev->create_qp(pd, attr, udata);
sys/ofed/drivers/infiniband/core/core_priv.h
160
if (IS_ERR(qp))
sys/ofed/drivers/infiniband/core/core_priv.h
161
return qp;
sys/ofed/drivers/infiniband/core/core_priv.h
163
qp->device = dev;
sys/ofed/drivers/infiniband/core/core_priv.h
164
qp->pd = pd;
sys/ofed/drivers/infiniband/core/core_priv.h
165
qp->uobject = uobj;
sys/ofed/drivers/infiniband/core/core_priv.h
166
qp->real_qp = qp;
sys/ofed/drivers/infiniband/core/core_priv.h
168
qp->qp_type = attr->qp_type;
sys/ofed/drivers/infiniband/core/core_priv.h
169
qp->rwq_ind_tbl = attr->rwq_ind_tbl;
sys/ofed/drivers/infiniband/core/core_priv.h
170
qp->send_cq = attr->send_cq;
sys/ofed/drivers/infiniband/core/core_priv.h
171
qp->recv_cq = attr->recv_cq;
sys/ofed/drivers/infiniband/core/core_priv.h
172
qp->srq = attr->srq;
sys/ofed/drivers/infiniband/core/core_priv.h
173
qp->rwq_ind_tbl = attr->rwq_ind_tbl;
sys/ofed/drivers/infiniband/core/core_priv.h
174
qp->event_handler = attr->event_handler;
sys/ofed/drivers/infiniband/core/core_priv.h
176
atomic_set(&qp->usecnt, 0);
sys/ofed/drivers/infiniband/core/core_priv.h
177
spin_lock_init(&qp->mr_lock);
sys/ofed/drivers/infiniband/core/core_priv.h
179
return qp;
sys/ofed/drivers/infiniband/core/ib_agent.c
104
ah = ib_create_ah_from_wc(agent->qp->pd, wc, grh, port_num);
sys/ofed/drivers/infiniband/core/ib_cm.c
352
ah = ib_create_ah(mad_agent->qp->pd, &av->ah_attr, 0);
sys/ofed/drivers/infiniband/core/ib_cm.c
397
ah = ib_create_ah_from_wc(port->mad_agent->qp->pd, mad_recv_wc->wc,
sys/ofed/drivers/infiniband/core/ib_cma.c
1996
if (id_priv->id.qp) {
sys/ofed/drivers/infiniband/core/ib_cma.c
3812
iw_param.qpn = id_priv->id.qp ? id_priv->qp_num : conn_param->qp_num;
sys/ofed/drivers/infiniband/core/ib_cma.c
3835
if (!id->qp) {
sys/ofed/drivers/infiniband/core/ib_cma.c
3904
if (id_priv->id.qp) {
sys/ofed/drivers/infiniband/core/ib_cma.c
3946
if (!id->qp && conn_param) {
sys/ofed/drivers/infiniband/core/ib_cma.c
4074
if (!status && id_priv->id.qp)
sys/ofed/drivers/infiniband/core/ib_cma.c
4075
status = ib_attach_mcast(id_priv->id.qp, &multicast->rec.mgid,
sys/ofed/drivers/infiniband/core/ib_cma.c
4444
if (id->qp)
sys/ofed/drivers/infiniband/core/ib_cma.c
4445
ib_detach_mcast(id->qp,
sys/ofed/drivers/infiniband/core/ib_cma.c
797
static int cma_init_ud_qp(struct rdma_id_private *id_priv, struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_cma.c
807
ret = ib_modify_qp(qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/core/ib_cma.c
812
ret = ib_modify_qp(qp, &qp_attr, IB_QP_STATE);
sys/ofed/drivers/infiniband/core/ib_cma.c
818
ret = ib_modify_qp(qp, &qp_attr, IB_QP_STATE | IB_QP_SQ_PSN);
sys/ofed/drivers/infiniband/core/ib_cma.c
823
static int cma_init_conn_qp(struct rdma_id_private *id_priv, struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_cma.c
833
return ib_modify_qp(qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/core/ib_cma.c
840
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_cma.c
848
qp = ib_create_qp(pd, qp_init_attr);
sys/ofed/drivers/infiniband/core/ib_cma.c
849
if (IS_ERR(qp))
sys/ofed/drivers/infiniband/core/ib_cma.c
850
return PTR_ERR(qp);
sys/ofed/drivers/infiniband/core/ib_cma.c
853
ret = cma_init_ud_qp(id_priv, qp);
sys/ofed/drivers/infiniband/core/ib_cma.c
855
ret = cma_init_conn_qp(id_priv, qp);
sys/ofed/drivers/infiniband/core/ib_cma.c
859
id->qp = qp;
sys/ofed/drivers/infiniband/core/ib_cma.c
860
id_priv->qp_num = qp->qp_num;
sys/ofed/drivers/infiniband/core/ib_cma.c
861
id_priv->srq = (qp->srq != NULL);
sys/ofed/drivers/infiniband/core/ib_cma.c
864
ib_destroy_qp(qp);
sys/ofed/drivers/infiniband/core/ib_cma.c
875
ib_destroy_qp(id_priv->id.qp);
sys/ofed/drivers/infiniband/core/ib_cma.c
876
id_priv->id.qp = NULL;
sys/ofed/drivers/infiniband/core/ib_cma.c
889
if (!id_priv->id.qp) {
sys/ofed/drivers/infiniband/core/ib_cma.c
900
ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/core/ib_cma.c
918
ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/core/ib_cma.c
931
if (!id_priv->id.qp) {
sys/ofed/drivers/infiniband/core/ib_cma.c
943
ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/core/ib_cma.c
955
if (!id_priv->id.qp) {
sys/ofed/drivers/infiniband/core/ib_cma.c
961
ret = ib_modify_qp(id_priv->id.qp, &qp_attr, IB_QP_STATE);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
248
static int iwcm_modify_qp_err(struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_iwcm.c
252
if (!qp)
sys/ofed/drivers/infiniband/core/ib_iwcm.c
256
return ib_modify_qp(qp, &qp_attr, IB_QP_STATE);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
263
static int iwcm_modify_qp_sqd(struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_iwcm.c
267
BUG_ON(qp == NULL);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
269
return ib_modify_qp(qp, &qp_attr, IB_QP_STATE);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
289
struct ib_qp *qp = NULL;
sys/ofed/drivers/infiniband/core/ib_iwcm.c
302
if (cm_id_priv->qp)
sys/ofed/drivers/infiniband/core/ib_iwcm.c
303
qp = cm_id_priv->qp;
sys/ofed/drivers/infiniband/core/ib_iwcm.c
328
if (qp) {
sys/ofed/drivers/infiniband/core/ib_iwcm.c
330
(void) iwcm_modify_qp_err(qp);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
332
(void) iwcm_modify_qp_sqd(qp);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
383
(void)iwcm_modify_qp_err(cm_id_priv->qp);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
408
if (cm_id_priv->qp) {
sys/ofed/drivers/infiniband/core/ib_iwcm.c
409
cm_id_priv->id.device->iwcm->rem_ref(cm_id_priv->qp);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
410
cm_id_priv->qp = NULL;
sys/ofed/drivers/infiniband/core/ib_iwcm.c
537
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_iwcm.c
552
qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
553
if (!qp) {
sys/ofed/drivers/infiniband/core/ib_iwcm.c
559
cm_id->device->iwcm->add_ref(qp);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
560
cm_id_priv->qp = qp;
sys/ofed/drivers/infiniband/core/ib_iwcm.c
569
if (cm_id_priv->qp) {
sys/ofed/drivers/infiniband/core/ib_iwcm.c
570
cm_id->device->iwcm->rem_ref(qp);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
571
cm_id_priv->qp = NULL;
sys/ofed/drivers/infiniband/core/ib_iwcm.c
594
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_iwcm.c
611
qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
612
if (!qp) {
sys/ofed/drivers/infiniband/core/ib_iwcm.c
616
cm_id->device->iwcm->add_ref(qp);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
617
cm_id_priv->qp = qp;
sys/ofed/drivers/infiniband/core/ib_iwcm.c
628
if (cm_id_priv->qp) {
sys/ofed/drivers/infiniband/core/ib_iwcm.c
629
cm_id->device->iwcm->rem_ref(qp);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
630
cm_id_priv->qp = NULL;
sys/ofed/drivers/infiniband/core/ib_iwcm.c
780
cm_id_priv->id.device->iwcm->rem_ref(cm_id_priv->qp);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
781
cm_id_priv->qp = NULL;
sys/ofed/drivers/infiniband/core/ib_iwcm.c
830
if (cm_id_priv->qp) {
sys/ofed/drivers/infiniband/core/ib_iwcm.c
831
cm_id_priv->id.device->iwcm->rem_ref(cm_id_priv->qp);
sys/ofed/drivers/infiniband/core/ib_iwcm.c
832
cm_id_priv->qp = NULL;
sys/ofed/drivers/infiniband/core/ib_mad.c
1033
mad_send_wr->sg_list[0].lkey = mad_agent->qp->pd->local_dma_lkey;
sys/ofed/drivers/infiniband/core/ib_mad.c
1042
mad_send_wr->sg_list[1].lkey = mad_agent->qp->pd->local_dma_lkey;
sys/ofed/drivers/infiniband/core/ib_mad.c
1187
ret = ib_post_send(mad_agent->qp, &mad_send_wr->send_wr.wr,
sys/ofed/drivers/infiniband/core/ib_mad.c
1332
struct ib_mad_agent *ib_redirect_mad_qp(struct ib_qp *qp,
sys/ofed/drivers/infiniband/core/ib_mad.c
1793
u32 qp_num = qp_info->qp->qp_num;
sys/ofed/drivers/infiniband/core/ib_mad.c
2054
qp_info->qp->qp_num,
sys/ofed/drivers/infiniband/core/ib_mad.c
2142
qp_info->qp->qp_num,
sys/ofed/drivers/infiniband/core/ib_mad.c
2272
qp_info->qp->qp_num,
sys/ofed/drivers/infiniband/core/ib_mad.c
2291
qp_info->qp->qp_num, mad_size, opa);
sys/ofed/drivers/infiniband/core/ib_mad.c
2477
ret = ib_post_send(qp_info->qp, &queued_send_wr->send_wr.wr,
sys/ofed/drivers/infiniband/core/ib_mad.c
2526
ret = ib_post_send(qp_info->qp, &mad_send_wr->send_wr.wr,
sys/ofed/drivers/infiniband/core/ib_mad.c
2539
ret = ib_modify_qp(qp_info->qp, attr,
sys/ofed/drivers/infiniband/core/ib_mad.c
2692
build_smp_wc(recv_mad_agent->agent.qp,
sys/ofed/drivers/infiniband/core/ib_mad.c
2889
ret = ib_post_recv(qp_info->qp, &recv_wr, &bad_recv_wr);
sys/ofed/drivers/infiniband/core/ib_mad.c
2918
if (!qp_info->qp)
sys/ofed/drivers/infiniband/core/ib_mad.c
2951
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_mad.c
2964
qp = port_priv->qp_info[i].qp;
sys/ofed/drivers/infiniband/core/ib_mad.c
2965
if (!qp)
sys/ofed/drivers/infiniband/core/ib_mad.c
2974
attr->qkey = (qp->qp_num == 0) ? 0 : IB_QP1_QKEY;
sys/ofed/drivers/infiniband/core/ib_mad.c
2975
ret = ib_modify_qp(qp, attr, IB_QP_STATE |
sys/ofed/drivers/infiniband/core/ib_mad.c
2985
ret = ib_modify_qp(qp, attr, IB_QP_STATE);
sys/ofed/drivers/infiniband/core/ib_mad.c
2995
ret = ib_modify_qp(qp, attr, IB_QP_STATE | IB_QP_SQ_PSN);
sys/ofed/drivers/infiniband/core/ib_mad.c
3013
if (!port_priv->qp_info[i].qp)
sys/ofed/drivers/infiniband/core/ib_mad.c
3035
event->event, qp_info->qp->qp_num);
sys/ofed/drivers/infiniband/core/ib_mad.c
3078
qp_info->qp = ib_create_qp(qp_info->port_priv->pd, &qp_init_attr);
sys/ofed/drivers/infiniband/core/ib_mad.c
3079
if (IS_ERR(qp_info->qp)) {
sys/ofed/drivers/infiniband/core/ib_mad.c
3083
ret = PTR_ERR(qp_info->qp);
sys/ofed/drivers/infiniband/core/ib_mad.c
3097
if (!qp_info->qp)
sys/ofed/drivers/infiniband/core/ib_mad.c
3100
ib_destroy_qp(qp_info->qp);
sys/ofed/drivers/infiniband/core/ib_mad.c
335
if (!port_priv->qp_info[qpn].qp) {
sys/ofed/drivers/infiniband/core/ib_mad.c
365
mad_agent_priv->agent.qp = port_priv->qp_info[qpn].qp;
sys/ofed/drivers/infiniband/core/ib_mad.c
531
mad_snoop_priv->agent.qp = port_priv->qp_info[qpn].qp;
sys/ofed/drivers/infiniband/core/ib_mad.c
700
static void build_smp_wc(struct ib_qp *qp, struct ib_cqe *cqe, u16 slid,
sys/ofed/drivers/infiniband/core/ib_mad.c
710
wc->qp = qp;
sys/ofed/drivers/infiniband/core/ib_mad.c
839
build_smp_wc(mad_agent_priv->agent.qp,
sys/ofed/drivers/infiniband/core/ib_mad_rmpp.c
166
ah = ib_create_ah_from_wc(agent->qp->pd, recv_wc->wc,
sys/ofed/drivers/infiniband/core/ib_mad_rmpp.c
297
rmpp_recv->ah = ib_create_ah_from_wc(agent->agent.qp->pd,
sys/ofed/drivers/infiniband/core/ib_sa_query.c
536
new_ah->ah = ib_create_ah(port->agent->qp->pd, &ah_attr, RDMA_CREATE_AH_SLEEPABLE);
sys/ofed/drivers/infiniband/core/ib_user_mad.c
510
ah = ib_create_user_ah(agent->qp->pd, &ah_attr, NULL);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1153
tmp.qp_num = wc->qp->qp_num;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1280
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1418
qp = ib_create_qp(pd, &attr);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1420
qp = _ib_create_qp(device, pd, &attr, &attrs->driver_udata,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1423
if (IS_ERR(qp)) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1424
ret = PTR_ERR(qp);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1440
qp->uobject = obj;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1443
obj->uevent.uobject.object = qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1446
resp.base.qpn = qp->qp_num;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1483
ib_destroy_qp_user(qp, uverbs_get_cleared_udata(attrs));
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1559
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1592
qp = ib_open_qp(xrcd, &attr);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1593
if (IS_ERR(qp)) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1594
ret = PTR_ERR(qp);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1598
obj->uevent.uobject.object = qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1602
resp.qpn = qp->qp_num;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1611
qp->uobject = obj;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1618
ib_destroy_qp_user(qp, uverbs_get_cleared_udata(attrs));
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1650
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1666
qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1667
if (!qp) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1672
ret = ib_query_qp(qp, attr, cmd.attr_mask, init_attr);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1674
rdma_lookup_put_uobject(&qp->uobject->uevent.uobject,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1764
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1771
qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd->base.qp_handle,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1773
if (!qp) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1779
!rdma_is_port_valid(qp->device, cmd->base.port_num)) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1785
if (!rdma_is_port_valid(qp->device, cmd->base.dest.port_num)) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1806
if (cmd->base.dest.port_num != qp->real_qp->port) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1839
(!rdma_is_port_valid(qp->device, cmd->base.alt_port_num) ||
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1840
!rdma_is_port_valid(qp->device, cmd->base.alt_dest.port_num) ||
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1899
copy_ah_attr_from_uverbs(qp->device, &attr->ah_attr,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1903
copy_ah_attr_from_uverbs(qp->device, &attr->alt_ah_attr,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1906
ret = ib_modify_qp_with_udata(qp, attr,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1907
modify_qp_mask(qp->qp_type,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
1912
rdma_lookup_put_uobject(&qp->uobject->uevent.uobject,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2007
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2034
qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2035
if (!qp) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2040
is_ud = qp->qp_type == IB_QPT_UD;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2164
ret = qp->device->post_send(qp->real_qp, wr, &bad_wr);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2177
rdma_lookup_put_uobject(&qp->uobject->uevent.uobject,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2298
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2311
qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2312
if (!qp) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2318
ret = qp->device->post_recv(qp->real_qp, wr, &bad_wr);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2320
rdma_lookup_put_uobject(&qp->uobject->uevent.uobject,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2491
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2500
qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2501
if (!qp)
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2504
obj = qp->uobject;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2523
ret = ib_attach_mcast(qp, &mcast->gid, cmd.mlid);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2531
rdma_lookup_put_uobject(&qp->uobject->uevent.uobject,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2541
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2550
qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2551
if (!qp)
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2554
obj = qp->uobject;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2571
ret = ib_detach_mcast(qp, (union ib_gid *)cmd.gid, cmd.mlid);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
2575
rdma_lookup_put_uobject(&qp->uobject->uevent.uobject,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3192
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3255
qp = uobj_get_obj_read(qp, UVERBS_OBJECT_QP, cmd.qp_handle, attrs);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3256
if (!qp) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3261
if (qp->qp_type != IB_QPT_UD && qp->qp_type != IB_QPT_RAW_PACKET) {
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3310
flow_id = qp->device->create_flow(
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3311
qp, flow_attr, IB_FLOW_DOMAIN_USER, &attrs->driver_udata);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3318
ib_set_flow(uobj, flow_id, qp, qp->device, uflow_res);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3327
rdma_lookup_put_uobject(&qp->uobject->uevent.uobject,
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3335
if (!qp->device->destroy_flow(flow_id))
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3336
atomic_dec(&qp->usecnt);
sys/ofed/drivers/infiniband/core/ib_uverbs_cmd.c
3342
rdma_lookup_put_uobject(&qp->uobject->uevent.uobject,
sys/ofed/drivers/infiniband/core/ib_uverbs_main.c
165
void ib_uverbs_detach_umcast(struct ib_qp *qp,
sys/ofed/drivers/infiniband/core/ib_uverbs_main.c
171
ib_detach_mcast(qp, &mcast->gid, mcast->lid);
sys/ofed/drivers/infiniband/core/ib_uverbs_main.c
441
if (!event->element.qp->uobject)
sys/ofed/drivers/infiniband/core/ib_uverbs_main.c
444
uverbs_uobj_event(&event->element.qp->uobject->uevent, event);
sys/ofed/drivers/infiniband/core/ib_uverbs_std_types.c
56
struct ib_qp *qp = flow->qp;
sys/ofed/drivers/infiniband/core/ib_uverbs_std_types.c
61
if (qp)
sys/ofed/drivers/infiniband/core/ib_uverbs_std_types.c
62
atomic_dec(&qp->usecnt);
sys/ofed/drivers/infiniband/core/ib_uverbs_std_types.c
80
struct ib_qp *qp = uobject->object;
sys/ofed/drivers/infiniband/core/ib_uverbs_std_types.c
95
} else if (qp == qp->real_qp) {
sys/ofed/drivers/infiniband/core/ib_uverbs_std_types.c
96
ib_uverbs_detach_umcast(qp, uqp);
sys/ofed/drivers/infiniband/core/ib_uverbs_std_types.c
99
ret = ib_destroy_qp_user(qp, &attrs->driver_udata);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1321
static bool is_qp_type_connected(const struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1323
return (qp->qp_type == IB_QPT_UC ||
sys/ofed/drivers/infiniband/core/ib_verbs.c
1324
qp->qp_type == IB_QPT_RC ||
sys/ofed/drivers/infiniband/core/ib_verbs.c
1325
qp->qp_type == IB_QPT_XRC_INI ||
sys/ofed/drivers/infiniband/core/ib_verbs.c
1326
qp->qp_type == IB_QPT_XRC_TGT);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1332
static int _ib_modify_qp(struct ib_qp *qp, struct ib_qp_attr *attr,
sys/ofed/drivers/infiniband/core/ib_verbs.c
1335
u8 port = attr_mask & IB_QP_PORT ? attr->port_num : qp->port;
sys/ofed/drivers/infiniband/core/ib_verbs.c
1338
if (port < rdma_start_port(qp->device) ||
sys/ofed/drivers/infiniband/core/ib_verbs.c
1339
port > rdma_end_port(qp->device))
sys/ofed/drivers/infiniband/core/ib_verbs.c
1347
if (!(rdma_protocol_ib(qp->device,
sys/ofed/drivers/infiniband/core/ib_verbs.c
1349
rdma_protocol_ib(qp->device, port))) {
sys/ofed/drivers/infiniband/core/ib_verbs.c
1360
rdma_protocol_roce(qp->device, port) &&
sys/ofed/drivers/infiniband/core/ib_verbs.c
1361
is_qp_type_connected(qp)) {
sys/ofed/drivers/infiniband/core/ib_verbs.c
1362
ret = ib_resolve_eth_dmac(qp->device, &attr->ah_attr);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1367
if (rdma_ib_or_roce(qp->device, port)) {
sys/ofed/drivers/infiniband/core/ib_verbs.c
1369
dev_warn(&qp->device->dev,
sys/ofed/drivers/infiniband/core/ib_verbs.c
1376
dev_warn(&qp->device->dev,
sys/ofed/drivers/infiniband/core/ib_verbs.c
1383
ret = qp->device->modify_qp(qp, attr, attr_mask, udata);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1388
qp->port = attr->port_num;
sys/ofed/drivers/infiniband/core/ib_verbs.c
1411
int ib_modify_qp(struct ib_qp *qp,
sys/ofed/drivers/infiniband/core/ib_verbs.c
1418
ret = ib_resolve_eth_dmac(qp->device, &qp_attr->ah_attr);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1423
return qp->device->modify_qp(qp->real_qp, qp_attr, qp_attr_mask, NULL);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1427
int ib_query_qp(struct ib_qp *qp,
sys/ofed/drivers/infiniband/core/ib_verbs.c
1432
return qp->device->query_qp ?
sys/ofed/drivers/infiniband/core/ib_verbs.c
1433
qp->device->query_qp(qp->real_qp, qp_attr, qp_attr_mask, qp_init_attr) :
sys/ofed/drivers/infiniband/core/ib_verbs.c
1438
int ib_close_qp(struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1443
real_qp = qp->real_qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
1444
if (real_qp == qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1448
list_del(&qp->open_list);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1452
kfree(qp);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1458
static int __ib_destroy_shared_qp(struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1464
real_qp = qp->real_qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
1468
ib_close_qp(qp);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1486
int ib_destroy_qp_user(struct ib_qp *qp, struct ib_udata *udata)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1494
if (atomic_read(&qp->usecnt))
sys/ofed/drivers/infiniband/core/ib_verbs.c
1497
if (qp->real_qp != qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1498
return __ib_destroy_shared_qp(qp);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1500
pd = qp->pd;
sys/ofed/drivers/infiniband/core/ib_verbs.c
1501
scq = qp->send_cq;
sys/ofed/drivers/infiniband/core/ib_verbs.c
1502
rcq = qp->recv_cq;
sys/ofed/drivers/infiniband/core/ib_verbs.c
1503
srq = qp->srq;
sys/ofed/drivers/infiniband/core/ib_verbs.c
1504
ind_tbl = qp->rwq_ind_tbl;
sys/ofed/drivers/infiniband/core/ib_verbs.c
1506
ret = qp->device->destroy_qp(qp, udata);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1699
static bool is_valid_mcast_lid(struct ib_qp *qp, u16 lid)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1709
if (!ib_query_qp(qp, &attr, IB_QP_STATE | IB_QP_PORT, &init_attr)) {
sys/ofed/drivers/infiniband/core/ib_verbs.c
1711
if (rdma_port_get_link_layer(qp->device, attr.port_num) !=
sys/ofed/drivers/infiniband/core/ib_verbs.c
1719
for (port = 0; port < qp->device->phys_port_cnt; port++)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1720
if (rdma_port_get_link_layer(qp->device, port) !=
sys/ofed/drivers/infiniband/core/ib_verbs.c
1737
int ib_attach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1741
if (!qp->device->attach_mcast)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1745
qp->qp_type != IB_QPT_UD || !is_valid_mcast_lid(qp, lid))
sys/ofed/drivers/infiniband/core/ib_verbs.c
1748
ret = qp->device->attach_mcast(qp, gid, lid);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1750
atomic_inc(&qp->usecnt);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1755
int ib_detach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1759
if (!qp->device->detach_mcast)
sys/ofed/drivers/infiniband/core/ib_verbs.c
1763
qp->qp_type != IB_QPT_UD || !is_valid_mcast_lid(qp, lid))
sys/ofed/drivers/infiniband/core/ib_verbs.c
1766
ret = qp->device->detach_mcast(qp, gid, lid);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1768
atomic_dec(&qp->usecnt);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1795
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
1802
qp = list_entry(xrcd->tgt_qp_list.next, struct ib_qp, xrcd_list);
sys/ofed/drivers/infiniband/core/ib_verbs.c
1803
ret = ib_destroy_qp(qp);
sys/ofed/drivers/infiniband/core/ib_verbs.c
2145
static void __ib_drain_sq(struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
2158
if (qp->send_cq->poll_ctx == IB_POLL_DIRECT) {
sys/ofed/drivers/infiniband/core/ib_verbs.c
2159
WARN_ONCE(qp->send_cq->poll_ctx == IB_POLL_DIRECT,
sys/ofed/drivers/infiniband/core/ib_verbs.c
2167
ret = ib_modify_qp(qp, &attr, IB_QP_STATE);
sys/ofed/drivers/infiniband/core/ib_verbs.c
2173
ret = ib_post_send(qp, &swr.wr, &bad_swr);
sys/ofed/drivers/infiniband/core/ib_verbs.c
2185
static void __ib_drain_rq(struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
2193
if (qp->recv_cq->poll_ctx == IB_POLL_DIRECT) {
sys/ofed/drivers/infiniband/core/ib_verbs.c
2194
WARN_ONCE(qp->recv_cq->poll_ctx == IB_POLL_DIRECT,
sys/ofed/drivers/infiniband/core/ib_verbs.c
2203
ret = ib_modify_qp(qp, &attr, IB_QP_STATE);
sys/ofed/drivers/infiniband/core/ib_verbs.c
2209
ret = ib_post_recv(qp, &rwr, &bad_rwr);
sys/ofed/drivers/infiniband/core/ib_verbs.c
2238
void ib_drain_sq(struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
2240
if (qp->device->drain_sq)
sys/ofed/drivers/infiniband/core/ib_verbs.c
2241
qp->device->drain_sq(qp);
sys/ofed/drivers/infiniband/core/ib_verbs.c
2243
__ib_drain_sq(qp);
sys/ofed/drivers/infiniband/core/ib_verbs.c
2267
void ib_drain_rq(struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
2269
if (qp->device->drain_rq)
sys/ofed/drivers/infiniband/core/ib_verbs.c
2270
qp->device->drain_rq(qp);
sys/ofed/drivers/infiniband/core/ib_verbs.c
2272
__ib_drain_rq(qp);
sys/ofed/drivers/infiniband/core/ib_verbs.c
2292
void ib_drain_qp(struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
2294
ib_drain_sq(qp);
sys/ofed/drivers/infiniband/core/ib_verbs.c
2295
if (!qp->srq)
sys/ofed/drivers/infiniband/core/ib_verbs.c
2296
ib_drain_rq(qp);
sys/ofed/drivers/infiniband/core/ib_verbs.c
787
struct ib_qp *qp = context;
sys/ofed/drivers/infiniband/core/ib_verbs.c
790
spin_lock_irqsave(&qp->device->event_handler_lock, flags);
sys/ofed/drivers/infiniband/core/ib_verbs.c
791
list_for_each_entry(event->element.qp, &qp->open_list, open_list)
sys/ofed/drivers/infiniband/core/ib_verbs.c
792
if (event->element.qp->event_handler)
sys/ofed/drivers/infiniband/core/ib_verbs.c
793
event->element.qp->event_handler(event, event->element.qp->qp_context);
sys/ofed/drivers/infiniband/core/ib_verbs.c
794
spin_unlock_irqrestore(&qp->device->event_handler_lock, flags);
sys/ofed/drivers/infiniband/core/ib_verbs.c
797
static void __ib_insert_xrcd_qp(struct ib_xrcd *xrcd, struct ib_qp *qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
800
list_add(&qp->xrcd_list, &xrcd->tgt_qp_list);
sys/ofed/drivers/infiniband/core/ib_verbs.c
808
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
811
qp = kzalloc(sizeof *qp, GFP_KERNEL);
sys/ofed/drivers/infiniband/core/ib_verbs.c
812
if (!qp)
sys/ofed/drivers/infiniband/core/ib_verbs.c
815
qp->real_qp = real_qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
817
qp->device = real_qp->device;
sys/ofed/drivers/infiniband/core/ib_verbs.c
818
qp->event_handler = event_handler;
sys/ofed/drivers/infiniband/core/ib_verbs.c
819
qp->qp_context = qp_context;
sys/ofed/drivers/infiniband/core/ib_verbs.c
820
qp->qp_num = real_qp->qp_num;
sys/ofed/drivers/infiniband/core/ib_verbs.c
821
qp->qp_type = real_qp->qp_type;
sys/ofed/drivers/infiniband/core/ib_verbs.c
824
list_add(&qp->open_list, &real_qp->open_list);
sys/ofed/drivers/infiniband/core/ib_verbs.c
827
return qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
833
struct ib_qp *qp, *real_qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
838
qp = ERR_PTR(-EINVAL);
sys/ofed/drivers/infiniband/core/ib_verbs.c
842
qp = __ib_open_qp(real_qp, qp_open_attr->event_handler,
sys/ofed/drivers/infiniband/core/ib_verbs.c
848
return qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
852
static struct ib_qp *ib_create_xrc_qp(struct ib_qp *qp,
sys/ofed/drivers/infiniband/core/ib_verbs.c
855
struct ib_qp *real_qp = qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
857
qp->event_handler = __ib_shared_qp_event_handler;
sys/ofed/drivers/infiniband/core/ib_verbs.c
858
qp->qp_context = qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
859
qp->pd = NULL;
sys/ofed/drivers/infiniband/core/ib_verbs.c
860
qp->send_cq = qp->recv_cq = NULL;
sys/ofed/drivers/infiniband/core/ib_verbs.c
861
qp->srq = NULL;
sys/ofed/drivers/infiniband/core/ib_verbs.c
862
qp->xrcd = qp_init_attr->xrcd;
sys/ofed/drivers/infiniband/core/ib_verbs.c
864
INIT_LIST_HEAD(&qp->open_list);
sys/ofed/drivers/infiniband/core/ib_verbs.c
866
qp = __ib_open_qp(real_qp, qp_init_attr->event_handler,
sys/ofed/drivers/infiniband/core/ib_verbs.c
868
if (!IS_ERR(qp))
sys/ofed/drivers/infiniband/core/ib_verbs.c
872
return qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
879
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
887
qp = _ib_create_qp(device, pd, qp_init_attr, NULL, NULL);
sys/ofed/drivers/infiniband/core/ib_verbs.c
888
if (IS_ERR(qp))
sys/ofed/drivers/infiniband/core/ib_verbs.c
889
return qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
891
qp->device = device;
sys/ofed/drivers/infiniband/core/ib_verbs.c
892
qp->real_qp = qp;
sys/ofed/drivers/infiniband/core/ib_verbs.c
893
qp->uobject = NULL;
sys/ofed/drivers/infiniband/core/ib_verbs.c
894
qp->qp_type = qp_init_attr->qp_type;
sys/ofed/drivers/infiniband/core/ib_verbs.c
895
qp->rwq_ind_tbl = qp_init_attr->rwq_ind_tbl;
sys/ofed/drivers/infiniband/core/ib_verbs.c
897
atomic_set(&qp->usecnt, 0);
sys/ofed/drivers/infiniband/core/ib_verbs.c
898
spin_lock_init(&qp->mr_lock);
sys/ofed/drivers/infiniband/core/ib_verbs.c
901
return ib_create_xrc_qp(qp, qp_init_attr);
sys/ofed/drivers/infiniband/core/ib_verbs.c
903
qp->event_handler = qp_init_attr->event_handler;
sys/ofed/drivers/infiniband/core/ib_verbs.c
904
qp->qp_context = qp_init_attr->qp_context;
sys/ofed/drivers/infiniband/core/ib_verbs.c
906
qp->recv_cq = NULL;
sys/ofed/drivers/infiniband/core/ib_verbs.c
907
qp->srq = NULL;
sys/ofed/drivers/infiniband/core/ib_verbs.c
909
qp->recv_cq = qp_init_attr->recv_cq;
sys/ofed/drivers/infiniband/core/ib_verbs.c
912
qp->srq = qp_init_attr->srq;
sys/ofed/drivers/infiniband/core/ib_verbs.c
913
if (qp->srq)
sys/ofed/drivers/infiniband/core/ib_verbs.c
917
qp->pd = pd;
sys/ofed/drivers/infiniband/core/ib_verbs.c
918
qp->send_cq = qp_init_attr->send_cq;
sys/ofed/drivers/infiniband/core/ib_verbs.c
919
qp->xrcd = NULL;
sys/ofed/drivers/infiniband/core/ib_verbs.c
925
atomic_inc(&qp->rwq_ind_tbl->usecnt);
sys/ofed/drivers/infiniband/core/ib_verbs.c
932
qp->max_write_sge = qp_init_attr->cap.max_send_sge;
sys/ofed/drivers/infiniband/core/ib_verbs.c
933
qp->max_read_sge = min_t(u32, qp_init_attr->cap.max_send_sge,
sys/ofed/drivers/infiniband/core/ib_verbs.c
936
return qp;
sys/ofed/drivers/infiniband/core/iwcm.h
53
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/mad_priv.h
189
struct ib_qp *qp;
sys/ofed/drivers/infiniband/core/uverbs.h
244
void ib_uverbs_detach_umcast(struct ib_qp *qp,
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h
262
struct ib_qp *qp;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h
273
struct ib_qp *qp;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib.h
356
struct ib_qp *qp;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1018
p->qp = ipoib_cm_create_tx_qp(p->priv, p);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1019
if (IS_ERR(p->qp)) {
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1020
ret = PTR_ERR(p->qp);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1032
ret = ipoib_cm_modify_tx_init(p->priv, p->id, p->qp);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1038
ret = ipoib_cm_send_req(p->priv, p->id, p->qp, qpn, pathrec);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1045
p->qp->qp_num, pathrec->dgid.raw, qpn);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1054
ib_destroy_qp(p->qp);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1056
p->qp = NULL;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1070
p->qp ? p->qp->qp_num : 0, p->tx_head, p->tx_tail);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1105
if (p->qp)
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1106
ib_destroy_qp(p->qp);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
1339
ret = ib_modify_qp(p->qp, &ipoib_cm_err_attr, IB_QP_STATE);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
139
ret = ib_post_recv(rx->qp, wr, &bad_wr);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
187
if (ib_post_send(p->qp, &ipoib_cm_rx_drain_wr, &bad_wr))
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
233
struct ib_cm_id *cm_id, struct ib_qp *qp,
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
245
ret = ib_modify_qp(qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
257
ret = ib_modify_qp(qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
277
ret = ib_modify_qp(qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
373
struct ib_qp *qp, struct ib_cm_req_event_param *req,
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
379
data.qpn = cpu_to_be32(priv->qp->qp_num);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
387
rep.qp_num = qp->qp_num;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
410
p->qp = ipoib_cm_create_rx_qp(priv, p);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
411
if (IS_ERR(p->qp)) {
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
412
ret = PTR_ERR(p->qp);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
417
ret = ipoib_cm_modify_rx_qp(priv, cm_id, p->qp, psn);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
437
ret = ipoib_cm_send_rep(priv, cm_id, p->qp, &event->param.req_rcvd, psn);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
440
if (ib_modify_qp(p->qp, &ipoib_cm_err_attr, IB_QP_STATE))
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
446
ib_destroy_qp(p->qp);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
468
if (ib_modify_qp(p->qp, &ipoib_cm_err_attr, IB_QP_STATE))
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
504
p = wc->qp->qp_context;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
615
return ib_post_send(tx->qp, &priv->tx_wr.wr, &bad_wr);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
638
tx->tx_head, mb->m_pkthdr.len, tx->qp->qp_num);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
668
tx->qp->qp_num);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
679
struct ipoib_cm_tx *tx = wc->qp->qp_context;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
748
ret = ib_cm_listen(priv->cm.id, cpu_to_be64(IPOIB_CM_IETF_ID | priv->qp->qp_num), 0);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
751
IPOIB_CM_IETF_ID | priv->qp->qp_num);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
775
ib_destroy_qp(rx->qp);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
806
ret = ib_modify_qp(p->qp, &ipoib_cm_err_attr, IB_QP_STATE);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
873
ret = ib_modify_qp(p->qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
885
ret = ib_modify_qp(p->qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
943
struct ib_cm_id *id, struct ib_qp *qp,
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
952
data.qpn = cpu_to_be32(priv->qp->qp_num);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
958
req.qp_num = qp->qp_num;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
959
req.qp_type = qp->qp_type;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
981
struct ib_cm_id *cm_id, struct ib_qp *qp)
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c
996
ret = ib_modify_qp(qp, &qp_attr, qp_attr_mask);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
163
ret = ib_post_recv(priv->qp, &priv->rx_wr, &bad_wr);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
238
if (wc->slid == priv->local_lid && wc->src_qp == priv->qp->qp_num)
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
476
return ib_post_send(priv->qp, &priv->tx_wr.wr, &bad_wr);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
718
struct ib_qp *qp,
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
725
ret = ib_query_qp(qp, &qp_attr, IB_QP_STATE, &query_init_attr);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
791
if (ib_modify_qp(priv->qp, &qp_attr, IB_QP_STATE))
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
792
check_qp_movement_and_print(priv, priv->qp, IB_QPS_ERR);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
839
if (ib_modify_qp(priv->qp, &qp_attr, IB_QP_STATE))
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c
861
priv->qp = NULL;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
618
ret = ib_detach_mcast(priv->qp, &mcast->mcmember.mgid,
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
105
ret = ib_modify_qp(priv->qp, &qp_attr, attr_mask);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
115
ret = ib_modify_qp(priv->qp, &qp_attr, attr_mask);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
125
if (ib_modify_qp(priv->qp, &qp_attr, IB_QP_STATE))
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
208
priv->qp = ib_create_qp(priv->pd, &init_attr);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
209
if (IS_ERR(priv->qp)) {
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
215
lla[1] = (priv->qp->qp_num >> 16) & 0xff;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
216
lla[2] = (priv->qp->qp_num >> 8) & 0xff;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
217
lla[3] = (priv->qp->qp_num ) & 0xff;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
249
if (priv->qp) {
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
250
if (ib_destroy_qp(priv->qp))
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
253
priv->qp = NULL;
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
60
ret = ib_modify_qp(priv->qp, qp_attr, IB_QP_QKEY);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
68
ret = ib_attach_mcast(priv->qp, mgid, mlid);
sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
96
ret = ib_modify_qp(priv->qp, &qp_attr, attr_mask);
sys/ofed/drivers/infiniband/ulp/sdp/sdp.h
342
struct ib_qp *qp;
sys/ofed/drivers/infiniband/ulp/sdp/sdp_cma.c
125
ssk->qp = id->qp;
sys/ofed/drivers/infiniband/ulp/sdp/sdp_cma.c
373
id->qp = NULL;
sys/ofed/drivers/infiniband/ulp/sdp/sdp_cma.c
454
id->qp = NULL;
sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
178
if (ssk->qp) {
sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
179
ib_destroy_qp(ssk->qp);
sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
180
ssk->qp = NULL;
sys/ofed/drivers/infiniband/ulp/sdp/sdp_rx.c
144
rc = ib_post_recv(ssk->qp, &rx_wr, &bad_wr);
sys/ofed/drivers/infiniband/ulp/sdp/sdp_rx.c
570
if (unlikely(!ssk->qp)) {
sys/ofed/drivers/infiniband/ulp/sdp/sdp_rx.c
581
if (id && id->qp)
sys/ofed/drivers/infiniband/ulp/sdp/sdp_tx.c
147
rc = ib_post_send(ssk->qp, &tx_wr, &bad_wr);
sys/ofed/drivers/infiniband/ulp/sdp/sdp_tx.c
406
rc = ib_post_send(ssk->qp, &wr, &bad_wr);
sys/ofed/drivers/infiniband/ulp/sdp/sdp_zcopy.c
546
return ib_post_send(ssk->qp, &wr, &bad_wr);
sys/ofed/include/rdma/ib_mad.h
533
struct ib_qp *qp;
sys/ofed/include/rdma/ib_mad.h
751
struct ib_mad_agent *ib_redirect_mad_qp(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
1910
struct ib_qp *qp;
sys/ofed/include/rdma/ib_verbs.h
2254
int (*modify_qp)(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
2258
int (*query_qp)(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
2262
int (*destroy_qp)(struct ib_qp *qp, struct ib_udata *udata);
sys/ofed/include/rdma/ib_verbs.h
2263
int (*post_send)(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
2266
int (*post_recv)(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
2321
int (*attach_mcast)(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
2324
int (*detach_mcast)(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
2340
struct ib_flow * (*create_flow)(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
2364
void (*drain_rq)(struct ib_qp *qp);
sys/ofed/include/rdma/ib_verbs.h
2365
void (*drain_sq)(struct ib_qp *qp);
sys/ofed/include/rdma/ib_verbs.h
3190
int ib_modify_qp_with_udata(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
3204
int ib_modify_qp(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
3219
int ib_query_qp(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
3229
int ib_destroy_qp_user(struct ib_qp *qp, struct ib_udata *udata);
sys/ofed/include/rdma/ib_verbs.h
3237
static inline int ib_destroy_qp(struct ib_qp *qp)
sys/ofed/include/rdma/ib_verbs.h
3239
return ib_destroy_qp_user(qp, NULL);
sys/ofed/include/rdma/ib_verbs.h
3259
int ib_close_qp(struct ib_qp *qp);
sys/ofed/include/rdma/ib_verbs.h
3274
static inline int ib_post_send(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
3278
return qp->device->post_send(qp, send_wr, bad_send_wr);
sys/ofed/include/rdma/ib_verbs.h
3289
static inline int ib_post_recv(struct ib_qp *qp,
sys/ofed/include/rdma/ib_verbs.h
3293
return qp->device->post_recv(qp, recv_wr, bad_recv_wr);
sys/ofed/include/rdma/ib_verbs.h
3863
int ib_attach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid);
sys/ofed/include/rdma/ib_verbs.h
3871
int ib_detach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid);
sys/ofed/include/rdma/ib_verbs.h
3965
void ib_drain_rq(struct ib_qp *qp);
sys/ofed/include/rdma/ib_verbs.h
3966
void ib_drain_sq(struct ib_qp *qp);
sys/ofed/include/rdma/ib_verbs.h
3967
void ib_drain_qp(struct ib_qp *qp);
sys/ofed/include/rdma/ib_verbs.h
670
struct ib_qp *qp;
sys/ofed/include/rdma/ib_verbs.h
898
struct ib_qp *qp;
sys/ofed/include/rdma/iw_cm.h
111
void (*add_ref)(struct ib_qp *qp);
sys/ofed/include/rdma/iw_cm.h
113
void (*rem_ref)(struct ib_qp *qp);
sys/ofed/include/rdma/iw_cm.h
166
void iw_cm_unbind_qp(struct iw_cm_id *cm_id, struct ib_qp *qp);
sys/ofed/include/rdma/rdma_cm.h
154
struct ib_qp *qp;
sys/ofed/include/rdma/rdma_vt.h
212
void * (*qp_priv_alloc)(struct rvt_dev_info *rdi, struct rvt_qp *qp,
sys/ofed/include/rdma/rdma_vt.h
218
void (*qp_priv_free)(struct rvt_dev_info *rdi, struct rvt_qp *qp);
sys/ofed/include/rdma/rdma_vt.h
224
void (*notify_qp_reset)(struct rvt_qp *qp);
sys/ofed/include/rdma/rdma_vt.h
233
void (*schedule_send)(struct rvt_qp *qp);
sys/ofed/include/rdma/rdma_vt.h
234
void (*schedule_send_no_lock)(struct rvt_qp *qp);
sys/ofed/include/rdma/rdma_vt.h
240
void (*do_send)(struct rvt_qp *qp);
sys/ofed/include/rdma/rdma_vt.h
245
int (*get_pmtu_from_attr)(struct rvt_dev_info *rdi, struct rvt_qp *qp,
sys/ofed/include/rdma/rdma_vt.h
252
void (*flush_qp_waiters)(struct rvt_qp *qp);
sys/ofed/include/rdma/rdma_vt.h
258
void (*stop_send_queue)(struct rvt_qp *qp);
sys/ofed/include/rdma/rdma_vt.h
263
void (*quiesce_qp)(struct rvt_qp *qp);
sys/ofed/include/rdma/rdma_vt.h
268
void (*notify_error_qp)(struct rvt_qp *qp);
sys/ofed/include/rdma/rdma_vt.h
273
u32 (*mtu_from_qp)(struct rvt_dev_info *rdi, struct rvt_qp *qp,
sys/ofed/include/rdma/rdma_vt.h
321
int (*check_modify_qp)(struct rvt_qp *qp, struct ib_qp_attr *attr,
sys/ofed/include/rdma/rdma_vt.h
325
void (*modify_qp)(struct rvt_qp *qp, struct ib_qp_attr *attr,
sys/ofed/include/rdma/rdma_vt.h
329
int (*check_send_wqe)(struct rvt_qp *qp, struct rvt_swqe *wqe);
sys/ofed/include/rdma/rdma_vt.h
470
struct rvt_qp *qp = NULL;
sys/ofed/include/rdma/rdma_vt.h
473
qp = rcu_dereference(rvp->qp[qpn]);
sys/ofed/include/rdma/rdma_vt.h
477
for (qp = rcu_dereference(rdi->qp_dev->qp_table[n]); qp;
sys/ofed/include/rdma/rdma_vt.h
478
qp = rcu_dereference(qp->next))
sys/ofed/include/rdma/rdma_vt.h
479
if (qp->ibqp.qp_num == qpn)
sys/ofed/include/rdma/rdma_vt.h
482
return qp;
sys/ofed/include/rdma/rdma_vt.h
492
int rvt_fast_reg_mr(struct rvt_qp *qp, struct ib_mr *ibmr, u32 key,
sys/ofed/include/rdma/rdma_vt.h
494
int rvt_invalidate_rkey(struct rvt_qp *qp, u32 rkey);
sys/ofed/include/rdma/rdma_vt.h
495
int rvt_rkey_ok(struct rvt_qp *qp, struct rvt_sge *sge,
sys/ofed/include/rdma/rdma_vt.h
67
struct rvt_qp __rcu *qp[2];
sys/ofed/include/rdma/rdmavt_qp.h
432
struct rvt_qp *qp;
sys/ofed/include/rdma/rdmavt_qp.h
448
static inline struct rvt_swqe *rvt_get_swqe_ptr(struct rvt_qp *qp,
sys/ofed/include/rdma/rdmavt_qp.h
451
return (struct rvt_swqe *)((char *)qp->s_wq +
sys/ofed/include/rdma/rdmavt_qp.h
453
qp->s_max_sge *
sys/ofed/include/rdma/rdmavt_qp.h
473
static inline void rvt_get_qp(struct rvt_qp *qp)
sys/ofed/include/rdma/rdmavt_qp.h
475
atomic_inc(&qp->refcount);
sys/ofed/include/rdma/rdmavt_qp.h
482
static inline void rvt_put_qp(struct rvt_qp *qp)
sys/ofed/include/rdma/rdmavt_qp.h
484
if (qp && atomic_dec_and_test(&qp->refcount))
sys/ofed/include/rdma/rdmavt_qp.h
485
wake_up(&qp->wait);
sys/ofed/include/rdma/rdmavt_qp.h
497
struct rvt_qp *qp,
sys/ofed/include/rdma/rdmavt_qp.h
501
atomic_inc(&qp->s_reserved_used);
sys/ofed/include/rdma/rdmavt_qp.h
520
struct rvt_qp *qp,
sys/ofed/include/rdma/rdmavt_qp.h
525
atomic_dec(&qp->s_reserved_used);
sys/ofed/include/rdma/rdmavt_qp.h
534
int rvt_error_qp(struct rvt_qp *qp, enum ib_wc_status err);
sys/ofed/include/rdma/uverbs_std_types.h
162
struct ib_qp *qp, struct ib_device *device,
sys/ofed/include/rdma/uverbs_std_types.h
170
if (qp) {
sys/ofed/include/rdma/uverbs_std_types.h
171
atomic_inc(&qp->usecnt);
sys/ofed/include/rdma/uverbs_std_types.h
172
ibflow->qp = qp;
tools/tools/cxgbtool/cxgbtool.c
1101
struct ch_qset_params qp;
tools/tools/cxgbtool/cxgbtool.c
1103
qp.qset_idx = 0;
tools/tools/cxgbtool/cxgbtool.c
1105
while (doit(iff_name, CHELSIO_GET_QSET_PARAMS, &qp) == 0) {
tools/tools/cxgbtool/cxgbtool.c
1106
if (!qp.qset_idx)
tools/tools/cxgbtool/cxgbtool.c
1110
qp.qnum,
tools/tools/cxgbtool/cxgbtool.c
1111
qp.txq_size[0], qp.txq_size[1], qp.txq_size[2],
tools/tools/cxgbtool/cxgbtool.c
1112
qp.rspq_size, qp.fl_size[0], qp.fl_size[1],
tools/tools/cxgbtool/cxgbtool.c
1113
qp.cong_thres, qp.intr_lat, qp.vector);
tools/tools/cxgbtool/cxgbtool.c
1114
qp.qset_idx++;
tools/tools/cxgbtool/cxgbtool.c
1116
if (!qp.qset_idx || (errno && errno != EINVAL))
tools/tools/nvmf/nvmfd/controller.c
16
struct nvmf_qpair *qp;
tools/tools/nvmf/nvmfd/controller.c
174
struct nvmf_qpair *qp = c->qp;
tools/tools/nvmf/nvmfd/controller.c
180
error = nvmf_controller_receive_capsule(qp, &nc);
tools/tools/nvmf/nvmfd/controller.c
226
init_controller(struct nvmf_qpair *qp,
tools/tools/nvmf/nvmfd/controller.c
232
c->qp = qp;
tools/tools/nvmf/nvmfd/controller.c
233
c->cap = nvmf_controller_cap(c->qp);
tools/tools/nvmf/nvmfd/controller.c
35
if (!nvmf_validate_cc(c->qp, c->cap, c->cc, new_cc))
tools/tools/nvmf/nvmfd/ctl.c
120
ctl_handoff_qpair(struct nvmf_qpair *qp,
tools/tools/nvmf/nvmfd/ctl.c
129
error = nvmf_handoff_controller_qpair(qp, cmd, data, &req.data.handoff);
tools/tools/nvmf/nvmfd/discovery.c
273
nvmf_free_qpair(dta->qp);
tools/tools/nvmf/nvmfd/discovery.c
288
struct nvmf_qpair *qp;
tools/tools/nvmf/nvmfd/discovery.c
296
qp = nvmf_accept(discovery_na, &qparams, &nc, &data);
tools/tools/nvmf/nvmfd/discovery.c
297
if (qp == NULL) {
tools/tools/nvmf/nvmfd/discovery.c
318
nvmf_init_discovery_controller_data(qp, &cdata);
tools/tools/nvmf/nvmfd/discovery.c
321
dta->qp = qp;
tools/tools/nvmf/nvmfd/discovery.c
323
dta->c = init_controller(qp, &cdata);
tools/tools/nvmf/nvmfd/discovery.c
339
if (qp != NULL)
tools/tools/nvmf/nvmfd/discovery.c
340
nvmf_free_qpair(qp);
tools/tools/nvmf/nvmfd/discovery.c
35
struct nvmf_qpair *qp;
tools/tools/nvmf/nvmfd/internal.h
32
struct controller *init_controller(struct nvmf_qpair *qp,
tools/tools/nvmf/nvmfd/internal.h
61
void ctl_handoff_qpair(struct nvmf_qpair *qp,
tools/tools/nvmf/nvmfd/io.c
401
handle_io_commands(struct io_controller *ioc, struct nvmf_qpair *qp)
tools/tools/nvmf/nvmfd/io.c
411
error = nvmf_controller_receive_capsule(qp, &nc);
tools/tools/nvmf/nvmfd/io.c
451
handle_io_qpair(struct io_controller *ioc, struct nvmf_qpair *qp, int qid)
tools/tools/nvmf/nvmfd/io.c
459
disconnect = handle_io_commands(ioc, qp);
tools/tools/nvmf/nvmfd/io.c
475
connect_admin_qpair(int s, struct nvmf_qpair *qp, struct nvmf_capsule *nc,
tools/tools/nvmf/nvmfd/io.c
503
nvmf_init_io_controller_data(qp, serial, nqn, device_count(),
tools/tools/nvmf/nvmfd/io.c
511
ioc->c = init_controller(qp, &cdata);
tools/tools/nvmf/nvmfd/io.c
528
connect_io_qpair(int s, struct nvmf_qpair *qp, struct nvmf_capsule *nc,
tools/tools/nvmf/nvmfd/io.c
595
ioc->io_qpairs[qid - 1] = qp;
tools/tools/nvmf/nvmfd/io.c
601
handle_io_qpair(ioc, qp, qid);
tools/tools/nvmf/nvmfd/io.c
616
struct nvmf_qpair *qp;
tools/tools/nvmf/nvmfd/io.c
626
qp = nvmf_accept(io_na, &qparams, &nc, &data);
tools/tools/nvmf/nvmfd/io.c
627
if (qp == NULL) {
tools/tools/nvmf/nvmfd/io.c
634
ctl_handoff_qpair(qp, nvmf_capsule_sqe(nc), &data);
tools/tools/nvmf/nvmfd/io.c
649
connect_admin_qpair(s, qp, nc, &data);
tools/tools/nvmf/nvmfd/io.c
651
connect_io_qpair(s, qp, nc, &data, le16toh(cmd->qid));
tools/tools/nvmf/nvmfd/io.c
652
nvmf_free_qpair(qp);
tools/tools/nvmf/nvmfd/io.c
658
if (qp != NULL)
tools/tools/nvmf/nvmfd/io.c
659
nvmf_free_qpair(qp);
tools/tools/nvmf/nvmfdd/nvmfdd.c
117
error = nvmf_read_property(qp, NVMF_PROP_CC, 4, &cc);
tools/tools/nvmf/nvmfdd/nvmfdd.c
133
error = nvmf_write_property(qp, NVMF_PROP_CC, 4, cc);
tools/tools/nvmf/nvmfdd/nvmfdd.c
140
error = nvmf_read_property(qp, NVMF_PROP_CSTS, 4, &csts);
tools/tools/nvmf/nvmfdd/nvmfdd.c
154
error = nvmf_host_identify_controller(qp, &cdata);
tools/tools/nvmf/nvmfdd/nvmfdd.c
165
return (qp);
tools/tools/nvmf/nvmfdd/nvmfdd.c
169
shutdown_controller(struct nvmf_qpair *qp)
tools/tools/nvmf/nvmfdd/nvmfdd.c
174
error = nvmf_read_property(qp, NVMF_PROP_CC, 4, &cc);
tools/tools/nvmf/nvmfdd/nvmfdd.c
180
error = nvmf_write_property(qp, NVMF_PROP_CC, 4, cc);
tools/tools/nvmf/nvmfdd/nvmfdd.c
184
nvmf_free_qpair(qp);
tools/tools/nvmf/nvmfdd/nvmfdd.c
188
disconnect_queue(struct nvmf_qpair *qp)
tools/tools/nvmf/nvmfdd/nvmfdd.c
190
nvmf_free_qpair(qp);
tools/tools/nvmf/nvmfdd/nvmfdd.c
194
validate_namespace(struct nvmf_qpair *qp, u_int nsid, u_int *block_size)
tools/tools/nvmf/nvmfdd/nvmfdd.c
205
error = nvmf_host_identify_namespace(qp, nsid, &nsdata);
tools/tools/nvmf/nvmfdd/nvmfdd.c
241
nvmf_io_command(struct nvmf_qpair *qp, u_int nsid, enum rw command,
tools/tools/nvmf/nvmfdd/nvmfdd.c
258
cc = nvmf_allocate_command(qp, &cmd);
tools/tools/nvmf/nvmfdd/nvmfdd.c
294
nvmf_io(struct nvmf_qpair *qp, u_int nsid, u_int block_size, enum rw command,
tools/tools/nvmf/nvmfdd/nvmfdd.c
332
error = nvmf_io_command(qp, nsid, command, offset / block_size,
tools/tools/nvmf/nvmfdd/nvmfdd.c
87
struct nvmf_qpair *qp;
tools/tools/nvmf/nvmfdd/nvmfdd.c
92
qp = nvmf_connect(na, params, 0, NVMF_MIN_ADMIN_MAX_SQ_SIZE, hostid,
tools/tools/nvmf/nvmfdd/nvmfdd.c
94
if (qp == NULL)
tools/tools/nvmf/nvmfdd/nvmfdd.c
97
error = nvmf_read_property(qp, NVMF_PROP_CAP, 8, &cap);
usr.bin/bintrans/bintrans.c
75
case qp:
usr.bin/bintrans/bintrans.c
99
DESIGNATE(qp)
usr.bin/bintrans/qp.c
215
qp(fp, fpo, encode, rfc2047);
usr.sbin/ctld/nvmf.cc
437
nvmf_qpair_up qp(nvmf_accept(association(), &qparams, &nc, &data));
usr.sbin/ctld/nvmf.cc
438
if (!qp) {
usr.sbin/ctld/nvmf.cc
450
int error = nvmf_handoff_controller_qpair(qp.get(), cmd, &data,
usr.sbin/ctld/nvmf.hh
31
void operator()(struct nvmf_qpair *qp) const
usr.sbin/ctld/nvmf.hh
33
nvmf_free_qpair(qp);
usr.sbin/ctld/nvmf_discovery.cc
255
if (!nvmf_validate_cc(qp, cap, cc, new_cc))
usr.sbin/ctld/nvmf_discovery.cc
37
discovery_controller(freebsd::fd_up s, struct nvmf_qpair *qp,
usr.sbin/ctld/nvmf_discovery.cc
425
int error = nvmf_controller_receive_capsule(qp, &nc);
usr.sbin/ctld/nvmf_discovery.cc
470
struct nvmf_qpair *qp, const struct discovery_log &discovery_log) :
usr.sbin/ctld/nvmf_discovery.cc
471
qp(qp), discovery_log(discovery_log), s(std::move(fd))
usr.sbin/ctld/nvmf_discovery.cc
473
nvmf_init_discovery_controller_data(qp, &cdata);
usr.sbin/ctld/nvmf_discovery.cc
474
cap = nvmf_controller_cap(qp);
usr.sbin/ctld/nvmf_discovery.cc
488
nvmf_qpair_up qp(nvmf_accept(association(), &qparams, &nc, &data));
usr.sbin/ctld/nvmf_discovery.cc
489
if (!qp) {
usr.sbin/ctld/nvmf_discovery.cc
516
discovery_controller controller(std::move(fd), qp.get(), discovery_log);
usr.sbin/ctld/nvmf_discovery.cc
54
struct nvmf_qpair *qp;
usr.sbin/lpr/lpd/printjob.c
149
register struct jobqueue *q, **qp;
usr.sbin/lpr/lpd/printjob.c
262
for (qp = queue; nitems--; free((char *) q)) {
usr.sbin/lpr/lpd/printjob.c
263
q = *qp++;
usr.sbin/lpr/lpd/printjob.c
289
q = *qp++;
usr.sbin/ypserv/yp_dnslookup.c
466
char buf[MAXHOSTNAMELEN], *qp;
usr.sbin/ypserv/yp_dnslookup.c
498
qp = buf;
usr.sbin/ypserv/yp_dnslookup.c
500
qp += (size_t)sprintf(qp, "%x.%x.", uaddr[n] & 0xf,