Home
last modified time | relevance | path

Searched refs:qp_attr (Results 1 – 25 of 52) sorted by relevance

123

/linux-6.6.21/drivers/infiniband/ulp/ipoib/
Dipoib_verbs.c42 struct ib_qp_attr *qp_attr = NULL; in ipoib_mcast_attach() local
55 qp_attr = kmalloc(sizeof(*qp_attr), GFP_KERNEL); in ipoib_mcast_attach()
56 if (!qp_attr) in ipoib_mcast_attach()
60 qp_attr->qkey = qkey; in ipoib_mcast_attach()
61 ret = ib_modify_qp(priv->qp, qp_attr, IB_QP_QKEY); in ipoib_mcast_attach()
74 kfree(qp_attr); in ipoib_mcast_attach()
93 struct ib_qp_attr qp_attr; in ipoib_init_qp() local
99 qp_attr.qp_state = IB_QPS_INIT; in ipoib_init_qp()
100 qp_attr.qkey = 0; in ipoib_init_qp()
101 qp_attr.port_num = priv->port; in ipoib_init_qp()
[all …]
Dipoib_cm.c278 struct ib_qp_attr qp_attr; in ipoib_cm_modify_rx_qp() local
281 qp_attr.qp_state = IB_QPS_INIT; in ipoib_cm_modify_rx_qp()
282 ret = ib_cm_init_qp_attr(cm_id, &qp_attr, &qp_attr_mask); in ipoib_cm_modify_rx_qp()
287 ret = ib_modify_qp(qp, &qp_attr, qp_attr_mask); in ipoib_cm_modify_rx_qp()
292 qp_attr.qp_state = IB_QPS_RTR; in ipoib_cm_modify_rx_qp()
293 ret = ib_cm_init_qp_attr(cm_id, &qp_attr, &qp_attr_mask); in ipoib_cm_modify_rx_qp()
298 qp_attr.rq_psn = psn; in ipoib_cm_modify_rx_qp()
299 ret = ib_modify_qp(qp, &qp_attr, qp_attr_mask); in ipoib_cm_modify_rx_qp()
313 qp_attr.qp_state = IB_QPS_RTS; in ipoib_cm_modify_rx_qp()
314 ret = ib_cm_init_qp_attr(cm_id, &qp_attr, &qp_attr_mask); in ipoib_cm_modify_rx_qp()
[all …]
Dipoib_ib.c351 struct ib_qp_attr qp_attr; in ipoib_qp_state_validate_work() local
355 ret = ib_query_qp(priv->qp, &qp_attr, IB_QP_STATE, &query_init_attr); in ipoib_qp_state_validate_work()
362 __func__, priv->qp->qp_num, qp_attr.qp_state); in ipoib_qp_state_validate_work()
365 if (qp_attr.qp_state == IB_QPS_SQE) { in ipoib_qp_state_validate_work()
366 qp_attr.qp_state = IB_QPS_RTS; in ipoib_qp_state_validate_work()
368 ret = ib_modify_qp(priv->qp, &qp_attr, IB_QP_STATE); in ipoib_qp_state_validate_work()
378 priv->qp->qp_num, qp_attr.qp_state); in ipoib_qp_state_validate_work()
739 struct ib_qp_attr qp_attr; in check_qp_movement_and_print() local
743 ret = ib_query_qp(qp, &qp_attr, IB_QP_STATE, &query_init_attr); in check_qp_movement_and_print()
749 if (new_state == IB_QPS_ERR && qp_attr.qp_state == IB_QPS_RESET) in check_qp_movement_and_print()
[all …]
/linux-6.6.21/net/smc/
Dsmc_ib.c49 struct ib_qp_attr qp_attr; in smc_ib_modify_qp_init() local
51 memset(&qp_attr, 0, sizeof(qp_attr)); in smc_ib_modify_qp_init()
52 qp_attr.qp_state = IB_QPS_INIT; in smc_ib_modify_qp_init()
53 qp_attr.pkey_index = 0; in smc_ib_modify_qp_init()
54 qp_attr.port_num = lnk->ibport; in smc_ib_modify_qp_init()
55 qp_attr.qp_access_flags = IB_ACCESS_LOCAL_WRITE in smc_ib_modify_qp_init()
57 return ib_modify_qp(lnk->roce_qp, &qp_attr, in smc_ib_modify_qp_init()
67 struct ib_qp_attr qp_attr; in smc_ib_modify_qp_rtr() local
70 memset(&qp_attr, 0, sizeof(qp_attr)); in smc_ib_modify_qp_rtr()
71 qp_attr.qp_state = IB_QPS_RTR; in smc_ib_modify_qp_rtr()
[all …]
/linux-6.6.21/net/sunrpc/xprtrdma/
Dsvc_rdma_transport.c370 struct ib_qp_init_attr qp_attr; in svc_rdma_accept() local
441 memset(&qp_attr, 0, sizeof qp_attr); in svc_rdma_accept()
442 qp_attr.event_handler = qp_event_handler; in svc_rdma_accept()
443 qp_attr.qp_context = &newxprt->sc_xprt; in svc_rdma_accept()
444 qp_attr.port_num = newxprt->sc_port_num; in svc_rdma_accept()
445 qp_attr.cap.max_rdma_ctxs = ctxts; in svc_rdma_accept()
446 qp_attr.cap.max_send_wr = newxprt->sc_sq_depth - ctxts; in svc_rdma_accept()
447 qp_attr.cap.max_recv_wr = rq_depth; in svc_rdma_accept()
448 qp_attr.cap.max_send_sge = newxprt->sc_max_send_sges; in svc_rdma_accept()
449 qp_attr.cap.max_recv_sge = 1; in svc_rdma_accept()
[all …]
/linux-6.6.21/net/9p/
Dtrans_rdma.c641 struct ib_qp_init_attr qp_attr; in rdma_create_trans() local
709 memset(&qp_attr, 0, sizeof qp_attr); in rdma_create_trans()
710 qp_attr.event_handler = qp_event_handler; in rdma_create_trans()
711 qp_attr.qp_context = client; in rdma_create_trans()
712 qp_attr.cap.max_send_wr = opts.sq_depth; in rdma_create_trans()
713 qp_attr.cap.max_recv_wr = opts.rq_depth; in rdma_create_trans()
714 qp_attr.cap.max_send_sge = P9_RDMA_SEND_SGE; in rdma_create_trans()
715 qp_attr.cap.max_recv_sge = P9_RDMA_RECV_SGE; in rdma_create_trans()
716 qp_attr.sq_sig_type = IB_SIGNAL_REQ_WR; in rdma_create_trans()
717 qp_attr.qp_type = IB_QPT_RC; in rdma_create_trans()
[all …]
/linux-6.6.21/drivers/infiniband/hw/mlx5/
Dmem.c209 struct ib_qp_attr qp_attr = { .port_num = 1 }; in mlx5_ib_test_wc() local
253 qp_attr.qp_state = IB_QPS_INIT; in mlx5_ib_test_wc()
254 ret = ib_modify_qp(qp, &qp_attr, in mlx5_ib_test_wc()
260 qp_attr.qp_state = IB_QPS_RTR; in mlx5_ib_test_wc()
261 ret = ib_modify_qp(qp, &qp_attr, IB_QP_STATE); in mlx5_ib_test_wc()
265 qp_attr.qp_state = IB_QPS_RTS; in mlx5_ib_test_wc()
266 ret = ib_modify_qp(qp, &qp_attr, IB_QP_STATE | IB_QP_SQ_PSN); in mlx5_ib_test_wc()
Dqp.c4934 struct ib_qp_attr *qp_attr) in query_qp_attr() argument
4954 qp_attr->sq_draining = 1; in query_qp_attr()
4956 qp_attr->path_mtu = MLX5_GET(qpc, qpc, mtu); in query_qp_attr()
4957 qp_attr->path_mig_state = to_ib_mig_state(MLX5_GET(qpc, qpc, pm_state)); in query_qp_attr()
4958 qp_attr->qkey = MLX5_GET(qpc, qpc, q_key); in query_qp_attr()
4959 qp_attr->rq_psn = MLX5_GET(qpc, qpc, next_rcv_psn); in query_qp_attr()
4960 qp_attr->sq_psn = MLX5_GET(qpc, qpc, next_send_psn); in query_qp_attr()
4961 qp_attr->dest_qp_num = MLX5_GET(qpc, qpc, remote_qpn); in query_qp_attr()
4964 qp_attr->qp_access_flags |= IB_ACCESS_REMOTE_READ; in query_qp_attr()
4966 qp_attr->qp_access_flags |= IB_ACCESS_REMOTE_WRITE; in query_qp_attr()
[all …]
/linux-6.6.21/drivers/infiniband/hw/bnxt_re/
Dib_verbs.c1917 int bnxt_re_modify_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr, in bnxt_re_modify_qp() argument
1934 new_qp_state = qp_attr->qp_state; in bnxt_re_modify_qp()
1949 qp->qplib_qp.state = __from_ib_qp_state(qp_attr->qp_state); in bnxt_re_modify_qp()
1976 __from_ib_access_flags(qp_attr->qp_access_flags); in bnxt_re_modify_qp()
1985 qp->qplib_qp.pkey_index = qp_attr->pkey_index; in bnxt_re_modify_qp()
1989 qp->qplib_qp.qkey = qp_attr->qkey; in bnxt_re_modify_qp()
1993 rdma_ah_read_grh(&qp_attr->ah_attr); in bnxt_re_modify_qp()
2016 qp->qplib_qp.ah.sl = rdma_ah_get_sl(&qp_attr->ah_attr); in bnxt_re_modify_qp()
2018 qp_attr->ah_attr.roce.dmac); in bnxt_re_modify_qp()
2045 qp->qplib_qp.path_mtu = __from_ib_mtu(qp_attr->path_mtu); in bnxt_re_modify_qp()
[all …]
/linux-6.6.21/drivers/infiniband/hw/mthca/
Dmthca_qp.c430 int mthca_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, int qp_attr_mask, in mthca_query_qp() argument
444 qp_attr->qp_state = IB_QPS_RESET; in mthca_query_qp()
465 qp_attr->qp_state = qp->state; in mthca_query_qp()
466 qp_attr->path_mtu = context->mtu_msgmax >> 5; in mthca_query_qp()
467 qp_attr->path_mig_state = in mthca_query_qp()
469 qp_attr->qkey = be32_to_cpu(context->qkey); in mthca_query_qp()
470 qp_attr->rq_psn = be32_to_cpu(context->rnr_nextrecvpsn) & 0xffffff; in mthca_query_qp()
471 qp_attr->sq_psn = be32_to_cpu(context->next_send_psn) & 0xffffff; in mthca_query_qp()
472 qp_attr->dest_qp_num = be32_to_cpu(context->remote_qpn) & 0xffffff; in mthca_query_qp()
473 qp_attr->qp_access_flags = in mthca_query_qp()
[all …]
/linux-6.6.21/drivers/infiniband/core/
Diwcm.c272 struct ib_qp_attr qp_attr; in iwcm_modify_qp_err() local
277 qp_attr.qp_state = IB_QPS_ERR; in iwcm_modify_qp_err()
278 return ib_modify_qp(qp, &qp_attr, IB_QP_STATE); in iwcm_modify_qp_err()
287 struct ib_qp_attr qp_attr; in iwcm_modify_qp_sqd() local
290 qp_attr.qp_state = IB_QPS_SQD; in iwcm_modify_qp_sqd()
291 return ib_modify_qp(qp, &qp_attr, IB_QP_STATE); in iwcm_modify_qp_sqd()
1108 struct ib_qp_attr *qp_attr, in iwcm_init_qp_init_attr() argument
1121 qp_attr->qp_access_flags = IB_ACCESS_REMOTE_WRITE| in iwcm_init_qp_init_attr()
1134 struct ib_qp_attr *qp_attr, in iwcm_init_qp_rts_attr() argument
1158 struct ib_qp_attr *qp_attr, in iw_cm_init_qp_attr() argument
[all …]
Dsecurity.c332 const struct ib_qp_attr *qp_attr, in get_new_pps() argument
343 new_pps->main.port_num = qp_attr->port_num; in get_new_pps()
348 new_pps->main.pkey_index = qp_attr->pkey_index; in get_new_pps()
358 new_pps->alt.port_num = qp_attr->alt_port_num; in get_new_pps()
359 new_pps->alt.pkey_index = qp_attr->alt_pkey_index; in get_new_pps()
572 struct ib_qp_attr *qp_attr, in ib_security_modify_qp() argument
587 rdma_protocol_ib(real_qp->device, qp_attr->port_num) && in ib_security_modify_qp()
601 qp_attr, in ib_security_modify_qp()
626 qp_attr, in ib_security_modify_qp()
Dcma.c1061 struct ib_qp_attr qp_attr; in cma_init_ud_qp() local
1064 qp_attr.qp_state = IB_QPS_INIT; in cma_init_ud_qp()
1065 ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask); in cma_init_ud_qp()
1069 ret = ib_modify_qp(qp, &qp_attr, qp_attr_mask); in cma_init_ud_qp()
1073 qp_attr.qp_state = IB_QPS_RTR; in cma_init_ud_qp()
1074 ret = ib_modify_qp(qp, &qp_attr, IB_QP_STATE); in cma_init_ud_qp()
1078 qp_attr.qp_state = IB_QPS_RTS; in cma_init_ud_qp()
1079 qp_attr.sq_psn = 0; in cma_init_ud_qp()
1080 ret = ib_modify_qp(qp, &qp_attr, IB_QP_STATE | IB_QP_SQ_PSN); in cma_init_ud_qp()
1087 struct ib_qp_attr qp_attr; in cma_init_conn_qp() local
[all …]
Dcore_priv.h227 struct ib_qp_attr *qp_attr,
254 struct ib_qp_attr *qp_attr, in ib_security_modify_qp() argument
259 qp_attr, in ib_security_modify_qp()
Dcm.c4078 struct ib_qp_attr *qp_attr, in cm_init_qp_init_attr() argument
4097 qp_attr->qp_access_flags = IB_ACCESS_REMOTE_WRITE; in cm_init_qp_init_attr()
4106 qp_attr->qp_access_flags |= IB_ACCESS_REMOTE_READ | in cm_init_qp_init_attr()
4110 qp_attr->pkey_index = cm_id_priv->av.pkey_index; in cm_init_qp_init_attr()
4112 qp_attr->port_num = cm_id_priv->av.port->port_num; in cm_init_qp_init_attr()
4125 struct ib_qp_attr *qp_attr, in cm_init_qp_rtr_attr() argument
4142 qp_attr->ah_attr = cm_id_priv->av.ah_attr; in cm_init_qp_rtr_attr()
4143 if ((qp_attr->ah_attr.type == RDMA_AH_ATTR_TYPE_IB) && in cm_init_qp_rtr_attr()
4146 qp_attr->ah_attr.ib.dlid = cm_id_priv->av.dlid_datapath; in cm_init_qp_rtr_attr()
4147 qp_attr->path_mtu = cm_id_priv->path_mtu; in cm_init_qp_rtr_attr()
[all …]
/linux-6.6.21/drivers/infiniband/hw/ocrdma/
Docrdma_verbs.c1456 struct ib_qp_attr *qp_attr, in ocrdma_query_qp() argument
1472 qp_attr->qkey = params.qkey; in ocrdma_query_qp()
1473 qp_attr->path_mtu = in ocrdma_query_qp()
1477 qp_attr->path_mig_state = IB_MIG_MIGRATED; in ocrdma_query_qp()
1478 qp_attr->rq_psn = params.hop_lmt_rq_psn & OCRDMA_QP_PARAMS_RQ_PSN_MASK; in ocrdma_query_qp()
1479 qp_attr->sq_psn = params.tclass_sq_psn & OCRDMA_QP_PARAMS_SQ_PSN_MASK; in ocrdma_query_qp()
1480 qp_attr->dest_qp_num = in ocrdma_query_qp()
1483 qp_attr->qp_access_flags = ocrdma_to_ib_qp_acc_flags(qp->cap_flags); in ocrdma_query_qp()
1484 qp_attr->cap.max_send_wr = qp->sq.max_cnt - 1; in ocrdma_query_qp()
1485 qp_attr->cap.max_recv_wr = qp->rq.max_cnt - 1; in ocrdma_query_qp()
[all …]
/linux-6.6.21/drivers/infiniband/hw/efa/
Defa_verbs.c299 int efa_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, in efa_query_qp() argument
320 memset(qp_attr, 0, sizeof(*qp_attr)); in efa_query_qp()
328 qp_attr->qp_state = result.qp_state; in efa_query_qp()
329 qp_attr->qkey = result.qkey; in efa_query_qp()
330 qp_attr->sq_psn = result.sq_psn; in efa_query_qp()
331 qp_attr->sq_draining = result.sq_draining; in efa_query_qp()
332 qp_attr->port_num = 1; in efa_query_qp()
333 qp_attr->rnr_retry = result.rnr_retry; in efa_query_qp()
335 qp_attr->cap.max_send_wr = qp->max_send_wr; in efa_query_qp()
336 qp_attr->cap.max_recv_wr = qp->max_recv_wr; in efa_query_qp()
[all …]
Defa.h139 int efa_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr,
173 int efa_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr,
/linux-6.6.21/drivers/infiniband/hw/qedr/
Dverbs.c2742 struct ib_qp_attr *qp_attr, in qedr_query_qp() argument
2751 memset(qp_attr, 0, sizeof(*qp_attr)); in qedr_query_qp()
2758 qp_attr->qp_state = qedr_get_ibqp_state(params.state); in qedr_query_qp()
2760 qp_attr->qp_state = qedr_get_ibqp_state(QED_ROCE_QP_STATE_RTS); in qedr_query_qp()
2763 qp_attr->cur_qp_state = qedr_get_ibqp_state(params.state); in qedr_query_qp()
2764 qp_attr->path_mtu = ib_mtu_int_to_enum(params.mtu); in qedr_query_qp()
2765 qp_attr->path_mig_state = IB_MIG_MIGRATED; in qedr_query_qp()
2766 qp_attr->rq_psn = params.rq_psn; in qedr_query_qp()
2767 qp_attr->sq_psn = params.sq_psn; in qedr_query_qp()
2768 qp_attr->dest_qp_num = params.dest_qp; in qedr_query_qp()
[all …]
/linux-6.6.21/drivers/nvme/target/
Drdma.c1261 struct ib_qp_init_attr qp_attr = { }; in nvmet_rdma_create_queue_ib() local
1279 qp_attr.qp_context = queue; in nvmet_rdma_create_queue_ib()
1280 qp_attr.event_handler = nvmet_rdma_qp_event; in nvmet_rdma_create_queue_ib()
1281 qp_attr.send_cq = queue->cq; in nvmet_rdma_create_queue_ib()
1282 qp_attr.recv_cq = queue->cq; in nvmet_rdma_create_queue_ib()
1283 qp_attr.sq_sig_type = IB_SIGNAL_REQ_WR; in nvmet_rdma_create_queue_ib()
1284 qp_attr.qp_type = IB_QPT_RC; in nvmet_rdma_create_queue_ib()
1286 qp_attr.cap.max_send_wr = queue->send_queue_size + 1; in nvmet_rdma_create_queue_ib()
1289 qp_attr.cap.max_rdma_ctxs = queue->send_queue_size * factor; in nvmet_rdma_create_queue_ib()
1290 qp_attr.cap.max_send_sge = max(ndev->device->attrs.max_sge_rd, in nvmet_rdma_create_queue_ib()
[all …]
/linux-6.6.21/drivers/infiniband/hw/mlx4/
Dqp.c4010 int mlx4_ib_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, int qp_attr_mask, in mlx4_ib_query_qp() argument
4025 qp_attr->qp_state = IB_QPS_RESET; in mlx4_ib_query_qp()
4038 qp_attr->qp_state = qp->state; in mlx4_ib_query_qp()
4039 qp_attr->path_mtu = context.mtu_msgmax >> 5; in mlx4_ib_query_qp()
4040 qp_attr->path_mig_state = in mlx4_ib_query_qp()
4042 qp_attr->qkey = be32_to_cpu(context.qkey); in mlx4_ib_query_qp()
4043 qp_attr->rq_psn = be32_to_cpu(context.rnr_nextrecvpsn) & 0xffffff; in mlx4_ib_query_qp()
4044 qp_attr->sq_psn = be32_to_cpu(context.next_send_psn) & 0xffffff; in mlx4_ib_query_qp()
4045 qp_attr->dest_qp_num = be32_to_cpu(context.remote_qpn) & 0xffffff; in mlx4_ib_query_qp()
4046 qp_attr->qp_access_flags = in mlx4_ib_query_qp()
[all …]
/linux-6.6.21/drivers/infiniband/hw/usnic/
Dusnic_ib_verbs.c385 int usnic_ib_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr, in usnic_ib_query_qp() argument
395 memset(qp_attr, 0, sizeof(*qp_attr)); in usnic_ib_query_qp()
402 qp_attr->qp_state = qp_grp->state; in usnic_ib_query_qp()
403 qp_attr->cur_qp_state = qp_grp->state; in usnic_ib_query_qp()
407 qp_attr->qkey = 0; in usnic_ib_query_qp()
/linux-6.6.21/drivers/infiniband/sw/siw/
Dsiw_verbs.c506 int siw_query_qp(struct ib_qp *base_qp, struct ib_qp_attr *qp_attr, in siw_query_qp() argument
512 if (base_qp && qp_attr && qp_init_attr) { in siw_query_qp()
518 qp_attr->cap.max_inline_data = SIW_MAX_INLINE; in siw_query_qp()
519 qp_attr->cap.max_send_wr = qp->attrs.sq_size; in siw_query_qp()
520 qp_attr->cap.max_send_sge = qp->attrs.sq_max_sges; in siw_query_qp()
521 qp_attr->cap.max_recv_wr = qp->attrs.rq_size; in siw_query_qp()
522 qp_attr->cap.max_recv_sge = qp->attrs.rq_max_sges; in siw_query_qp()
523 qp_attr->path_mtu = ib_mtu_int_to_enum(sdev->netdev->mtu); in siw_query_qp()
524 qp_attr->max_rd_atomic = qp->attrs.irq_size; in siw_query_qp()
525 qp_attr->max_dest_rd_atomic = qp->attrs.orq_size; in siw_query_qp()
[all …]
/linux-6.6.21/fs/smb/client/
Dsmbdirect.c1494 struct ib_qp_init_attr qp_attr; in _smbd_get_connection() local
1564 memset(&qp_attr, 0, sizeof(qp_attr)); in _smbd_get_connection()
1565 qp_attr.event_handler = smbd_qp_async_error_upcall; in _smbd_get_connection()
1566 qp_attr.qp_context = info; in _smbd_get_connection()
1567 qp_attr.cap.max_send_wr = info->send_credit_target; in _smbd_get_connection()
1568 qp_attr.cap.max_recv_wr = info->receive_credit_max; in _smbd_get_connection()
1569 qp_attr.cap.max_send_sge = SMBDIRECT_MAX_SEND_SGE; in _smbd_get_connection()
1570 qp_attr.cap.max_recv_sge = SMBDIRECT_MAX_RECV_SGE; in _smbd_get_connection()
1571 qp_attr.cap.max_inline_data = 0; in _smbd_get_connection()
1572 qp_attr.sq_sig_type = IB_SIGNAL_REQ_WR; in _smbd_get_connection()
[all …]
/linux-6.6.21/fs/smb/server/
Dtransport_rdma.c1873 struct ib_qp_init_attr qp_attr; in smb_direct_create_qpair() local
1903 memset(&qp_attr, 0, sizeof(qp_attr)); in smb_direct_create_qpair()
1904 qp_attr.event_handler = smb_direct_qpair_handler; in smb_direct_create_qpair()
1905 qp_attr.qp_context = t; in smb_direct_create_qpair()
1906 qp_attr.cap = *cap; in smb_direct_create_qpair()
1907 qp_attr.sq_sig_type = IB_SIGNAL_REQ_WR; in smb_direct_create_qpair()
1908 qp_attr.qp_type = IB_QPT_RC; in smb_direct_create_qpair()
1909 qp_attr.send_cq = t->send_cq; in smb_direct_create_qpair()
1910 qp_attr.recv_cq = t->recv_cq; in smb_direct_create_qpair()
1911 qp_attr.port_num = ~0; in smb_direct_create_qpair()
[all …]

123