Home
last modified time | relevance | path

Searched refs:cqe (Results 1 – 25 of 232) sorted by relevance

12345678910

/linux-6.1.9/drivers/infiniband/hw/mthca/ !
Dmthca_cq.c174 static inline struct mthca_cqe *cqe_sw(struct mthca_cqe *cqe) in cqe_sw() argument
176 return MTHCA_CQ_ENTRY_OWNER_HW & cqe->owner ? NULL : cqe; in cqe_sw()
181 return cqe_sw(get_cqe(cq, cq->cons_index & cq->ibcq.cqe)); in next_cqe_sw()
184 static inline void set_cqe_hw(struct mthca_cqe *cqe) in set_cqe_hw() argument
186 cqe->owner = MTHCA_CQ_ENTRY_OWNER_HW; in set_cqe_hw()
191 __be32 *cqe = cqe_ptr; in dump_cqe() local
193 (void) cqe; /* avoid warning if mthca_dbg compiled away... */ in dump_cqe()
195 be32_to_cpu(cqe[0]), be32_to_cpu(cqe[1]), be32_to_cpu(cqe[2]), in dump_cqe()
196 be32_to_cpu(cqe[3]), be32_to_cpu(cqe[4]), be32_to_cpu(cqe[5]), in dump_cqe()
197 be32_to_cpu(cqe[6]), be32_to_cpu(cqe[7])); in dump_cqe()
[all …]
/linux-6.1.9/drivers/infiniband/hw/mlx4/ !
Dcq.c81 struct mlx4_cqe *cqe = get_cqe(cq, n & cq->ibcq.cqe); in get_sw_cqe() local
82 struct mlx4_cqe *tcqe = ((cq->buf.entry_size == 64) ? (cqe + 1) : cqe); in get_sw_cqe()
85 !!(n & (cq->ibcq.cqe + 1))) ? NULL : cqe; in get_sw_cqe()
133 static void mlx4_ib_free_cq_buf(struct mlx4_ib_dev *dev, struct mlx4_ib_cq_buf *buf, int cqe) in mlx4_ib_free_cq_buf() argument
135 mlx4_buf_free(dev->dev, (cqe + 1) * buf->entry_size, &buf->buf); in mlx4_ib_free_cq_buf()
140 struct ib_umem **umem, u64 buf_addr, int cqe) in mlx4_ib_get_cq_umem() argument
147 *umem = ib_umem_get(&dev->ib_dev, buf_addr, cqe * cqe_size, in mlx4_ib_get_cq_umem()
178 int entries = attr->cqe; in mlx4_ib_create_cq()
195 cq->ibcq.cqe = entries - 1; in mlx4_ib_create_cq()
281 mlx4_ib_free_cq_buf(dev, &cq->buf, cq->ibcq.cqe); in mlx4_ib_create_cq()
[all …]
/linux-6.1.9/drivers/infiniband/sw/siw/ !
Dsiw_cq.c50 struct siw_cqe *cqe; in siw_reap_cqe() local
55 cqe = &cq->queue[cq->cq_get % cq->num_cqe]; in siw_reap_cqe()
56 if (READ_ONCE(cqe->flags) & SIW_WQE_VALID) { in siw_reap_cqe()
58 wc->wr_id = cqe->id; in siw_reap_cqe()
59 wc->byte_len = cqe->bytes; in siw_reap_cqe()
67 if (cqe->flags & SIW_WQE_REM_INVAL) { in siw_reap_cqe()
68 wc->ex.invalidate_rkey = cqe->inval_stag; in siw_reap_cqe()
71 wc->qp = cqe->base_qp; in siw_reap_cqe()
72 wc->opcode = map_wc_opcode[cqe->opcode]; in siw_reap_cqe()
73 wc->status = map_cqe_status[cqe->status].ib; in siw_reap_cqe()
[all …]
/linux-6.1.9/drivers/infiniband/hw/vmw_pvrdma/ !
Dpvrdma_cq.c83 cq->ibcq.cqe, &head); in pvrdma_req_notify_cq()
105 int entries = attr->cqe; in pvrdma_create_cq()
132 cq->ibcq.cqe = entries; in pvrdma_create_cq()
186 cmd->cqe = entries; in pvrdma_create_cq()
195 cq->ibcq.cqe = resp->cqe; in pvrdma_create_cq()
288 cq->ibcq.cqe, &head); in _pvrdma_flush_cqe()
293 cq->ibcq.cqe); in _pvrdma_flush_cqe()
294 struct pvrdma_cqe *cqe; in _pvrdma_flush_cqe() local
298 (cq->ibcq.cqe - head + tail); in _pvrdma_flush_cqe()
302 curr = cq->ibcq.cqe - 1; in _pvrdma_flush_cqe()
[all …]
/linux-6.1.9/tools/io_uring/ !
Dio_uring-cp.c126 struct io_uring_cqe *cqe; in copy_file() local
174 ret = io_uring_wait_cqe(ring, &cqe); in copy_file()
177 ret = io_uring_peek_cqe(ring, &cqe); in copy_file()
179 cqe = NULL; in copy_file()
188 if (!cqe) in copy_file()
191 data = io_uring_cqe_get_data(cqe); in copy_file()
192 if (cqe->res < 0) { in copy_file()
193 if (cqe->res == -EAGAIN) { in copy_file()
195 io_uring_cqe_seen(ring, cqe); in copy_file()
199 strerror(-cqe->res)); in copy_file()
[all …]
/linux-6.1.9/drivers/infiniband/sw/rxe/ !
Drxe_cq.c12 int cqe, int comp_vector) in rxe_cq_chk_attr() argument
16 if (cqe <= 0) { in rxe_cq_chk_attr()
17 pr_warn("cqe(%d) <= 0\n", cqe); in rxe_cq_chk_attr()
21 if (cqe > rxe->attr.max_cqe) { in rxe_cq_chk_attr()
23 cqe, rxe->attr.max_cqe); in rxe_cq_chk_attr()
29 if (cqe < count) { in rxe_cq_chk_attr()
31 cqe, count); in rxe_cq_chk_attr()
57 int rxe_cq_from_init(struct rxe_dev *rxe, struct rxe_cq *cq, int cqe, in rxe_cq_from_init() argument
65 cq->queue = rxe_queue_init(rxe, &cqe, in rxe_cq_from_init()
87 cq->ibcq.cqe = cqe; in rxe_cq_from_init()
[all …]
/linux-6.1.9/drivers/net/ethernet/mellanox/mlxsw/ !
Dpci_hw.h111 static inline u32 mlxsw_pci_cqe_##name##_get(enum mlxsw_pci_cqe_v v, char *cqe) \
116 return mlxsw_pci_cqe##v0##_##name##_get(cqe); \
118 return mlxsw_pci_cqe##v1##_##name##_get(cqe); \
120 return mlxsw_pci_cqe##v2##_##name##_get(cqe); \
124 char *cqe, u32 val) \
129 mlxsw_pci_cqe##v0##_##name##_set(cqe, val); \
132 mlxsw_pci_cqe##v1##_##name##_set(cqe, val); \
135 mlxsw_pci_cqe##v2##_##name##_set(cqe, val); \
153 MLXSW_ITEM32(pci, cqe, system_port, 0x00, 0, 16);
164 MLXSW_ITEM32(pci, cqe, wqe_counter, 0x04, 16, 16);
[all …]
/linux-6.1.9/drivers/net/ethernet/mellanox/mlx5/core/ !
Den_rx.c69 static void mlx5e_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
70 static void mlx5e_handle_rx_cqe_mpwrq(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
71 static void mlx5e_handle_rx_cqe_mpwrq_shampo(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
122 struct mlx5_cqe64 *cqe = mlx5_cqwq_get_wqe(wq, ci); in mlx5e_cqes_update_owner() local
124 cqe->op_own = op_own; in mlx5e_cqes_update_owner()
130 struct mlx5_cqe64 *cqe = mlx5_cqwq_get_wqe(wq, ci); in mlx5e_cqes_update_owner() local
132 cqe->op_own = op_own; in mlx5e_cqes_update_owner()
860 struct mlx5_cqe64 *cqe; in mlx5e_poll_ico_cq() local
867 cqe = mlx5_cqwq_get_cqe(&cq->wq); in mlx5e_poll_ico_cq()
868 if (likely(!cqe)) in mlx5e_poll_ico_cq()
[all …]
/linux-6.1.9/drivers/infiniband/hw/cxgb4/ !
Dcq.c186 struct t4_cqe cqe; in insert_recv_cqe() local
190 memset(&cqe, 0, sizeof(cqe)); in insert_recv_cqe()
191 cqe.header = cpu_to_be32(CQE_STATUS_V(T4_ERR_SWFLUSH) | in insert_recv_cqe()
196 cqe.bits_type_ts = cpu_to_be64(CQE_GENBIT_V((u64)cq->gen)); in insert_recv_cqe()
198 cqe.u.srcqe.abs_rqe_idx = cpu_to_be32(srqidx); in insert_recv_cqe()
199 cq->sw_queue[cq->sw_pidx] = cqe; in insert_recv_cqe()
220 struct t4_cqe cqe; in insert_sq_cqe() local
224 memset(&cqe, 0, sizeof(cqe)); in insert_sq_cqe()
225 cqe.header = cpu_to_be32(CQE_STATUS_V(T4_ERR_SWFLUSH) | in insert_sq_cqe()
230 CQE_WRID_SQ_IDX(&cqe) = swcqe->idx; in insert_sq_cqe()
[all …]
/linux-6.1.9/drivers/infiniband/hw/mlx5/ !
Dcq.c81 void *cqe = get_cqe(cq, n & cq->ibcq.cqe); in get_sw_cqe() local
84 cqe64 = (cq->mcq.cqe_sz == 64) ? cqe : cqe + 64; in get_sw_cqe()
87 !((cqe64->op_own & MLX5_CQE_OWNER_MASK) ^ !!(n & (cq->ibcq.cqe + 1)))) { in get_sw_cqe()
88 return cqe; in get_sw_cqe()
117 static void handle_good_req(struct ib_wc *wc, struct mlx5_cqe64 *cqe, in handle_good_req() argument
121 switch (be32_to_cpu(cqe->sop_drop_qpn) >> 24) { in handle_good_req()
137 wc->byte_len = be32_to_cpu(cqe->byte_cnt); in handle_good_req()
166 static void handle_responder(struct ib_wc *wc, struct mlx5_cqe64 *cqe, in handle_responder() argument
182 msrq = mlx5_cmd_get_srq(dev, be32_to_cpu(cqe->srqn)); in handle_responder()
189 wqe_ctr = be16_to_cpu(cqe->wqe_counter); in handle_responder()
[all …]
/linux-6.1.9/drivers/infiniband/hw/bnxt_re/ !
Dqplib_fp.c1437 struct cq_req *cqe = (struct cq_req *)hw_cqe; in __clean_cq() local
1439 if (qp == le64_to_cpu(cqe->qp_handle)) in __clean_cq()
1440 cqe->qp_handle = 0; in __clean_cq()
1447 struct cq_res_rc *cqe = (struct cq_res_rc *)hw_cqe; in __clean_cq() local
1449 if (qp == le64_to_cpu(cqe->qp_handle)) in __clean_cq()
1450 cqe->qp_handle = 0; in __clean_cq()
2128 struct bnxt_qplib_cqe *cqe; in __flush_sq() local
2134 cqe = *pcqe; in __flush_sq()
2144 memset(cqe, 0, sizeof(*cqe)); in __flush_sq()
2145 cqe->status = CQ_REQ_STATUS_WORK_REQUEST_FLUSHED_ERR; in __flush_sq()
[all …]
/linux-6.1.9/drivers/infiniband/hw/erdma/ !
Derdma_cq.c11 __be32 *cqe = get_queue_entry(cq->kern_cq.qbuf, cq->kern_cq.ci, in get_next_valid_cqe() local
14 __be32_to_cpu(READ_ONCE(*cqe))); in get_next_valid_cqe()
16 return owner ^ !!(cq->kern_cq.ci & cq->depth) ? cqe : NULL; in get_next_valid_cqe()
113 struct erdma_cqe *cqe; in erdma_poll_one_cqe() local
120 cqe = get_next_valid_cqe(cq); in erdma_poll_one_cqe()
121 if (!cqe) in erdma_poll_one_cqe()
129 qpn = be32_to_cpu(cqe->qpn); in erdma_poll_one_cqe()
130 wqe_idx = be32_to_cpu(cqe->qe_idx); in erdma_poll_one_cqe()
131 cqe_hdr = be32_to_cpu(cqe->hdr); in erdma_poll_one_cqe()
156 wc->byte_len = be32_to_cpu(cqe->size); in erdma_poll_one_cqe()
[all …]
/linux-6.1.9/io_uring/ !
Dio_uring.h104 struct io_uring_cqe *cqe = ctx->cqe_cached; in io_get_cqe_overflow() local
110 return cqe; in io_get_cqe_overflow()
124 struct io_uring_cqe *cqe; in __io_fill_cqe_req() local
131 cqe = io_get_cqe(ctx); in __io_fill_cqe_req()
132 if (unlikely(!cqe)) in __io_fill_cqe_req()
135 trace_io_uring_complete(req->ctx, req, req->cqe.user_data, in __io_fill_cqe_req()
136 req->cqe.res, req->cqe.flags, in __io_fill_cqe_req()
140 memcpy(cqe, &req->cqe, sizeof(*cqe)); in __io_fill_cqe_req()
150 WRITE_ONCE(cqe->big_cqe[0], extra1); in __io_fill_cqe_req()
151 WRITE_ONCE(cqe->big_cqe[1], extra2); in __io_fill_cqe_req()
[all …]
Dfdinfo.c122 struct io_uring_cqe *cqe = &r->cqes[(entry & cq_mask) << cq_shift]; in __io_uring_show_fdinfo() local
125 entry & cq_mask, cqe->user_data, cqe->res, in __io_uring_show_fdinfo()
126 cqe->flags); in __io_uring_show_fdinfo()
129 cqe->big_cqe[0], cqe->big_cqe[1]); in __io_uring_show_fdinfo()
199 struct io_uring_cqe *cqe = &ocqe->cqe; in __io_uring_show_fdinfo() local
202 cqe->user_data, cqe->res, cqe->flags); in __io_uring_show_fdinfo()
/linux-6.1.9/drivers/infiniband/sw/rdmavt/ !
Dcq.c54 if (head >= (unsigned)cq->ibcq.cqe) { in rvt_cq_enter()
55 head = cq->ibcq.cqe; in rvt_cq_enter()
167 unsigned int entries = attr->cqe; in rvt_create_cq()
249 cq->ibcq.cqe = entries; in rvt_create_cq()
338 int rvt_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata) in rvt_resize_cq() argument
350 if (cqe < 1 || cqe > rdi->dparms.props.max_cqe) in rvt_resize_cq()
357 sz = sizeof(struct ib_uverbs_wc) * (cqe + 1); in rvt_resize_cq()
363 sz = sizeof(struct ib_wc) * (cqe + 1); in rvt_resize_cq()
393 if (head > (u32)cq->ibcq.cqe) in rvt_resize_cq()
394 head = (u32)cq->ibcq.cqe; in rvt_resize_cq()
[all …]
/linux-6.1.9/drivers/net/ethernet/marvell/octeontx2/nic/ !
Dotx2_txrx.c30 struct nix_cqe_rx_s *cqe,
115 struct nix_cqe_tx_s *cqe) in otx2_xdp_snd_pkt_handler() argument
117 struct nix_send_comp_s *snd_comp = &cqe->comp; in otx2_xdp_snd_pkt_handler()
134 struct nix_cqe_tx_s *cqe, in otx2_snd_pkt_handler() argument
137 struct nix_send_comp_s *snd_comp = &cqe->comp; in otx2_snd_pkt_handler()
234 struct nix_cqe_rx_s *cqe, struct sk_buff *skb) in otx2_set_rxhash() argument
250 hash = cqe->hdr.flow_tag; in otx2_set_rxhash()
255 static void otx2_free_rcv_seg(struct otx2_nic *pfvf, struct nix_cqe_rx_s *cqe, in otx2_free_rcv_seg() argument
258 struct nix_rx_sg_s *sg = &cqe->sg; in otx2_free_rcv_seg()
264 end = start + ((cqe->parse.desc_sizem1 + 1) * 16); in otx2_free_rcv_seg()
[all …]
/linux-6.1.9/drivers/infiniband/ulp/iser/ !
Discsi_iser.h244 struct ib_cqe cqe; member
271 struct ib_cqe cqe; member
291 struct ib_cqe cqe; member
559 iser_rx(struct ib_cqe *cqe) in iser_rx() argument
561 return container_of(cqe, struct iser_rx_desc, cqe); in iser_rx()
565 iser_tx(struct ib_cqe *cqe) in iser_tx() argument
567 return container_of(cqe, struct iser_tx_desc, cqe); in iser_tx()
571 iser_login(struct ib_cqe *cqe) in iser_login() argument
573 return container_of(cqe, struct iser_login_desc, cqe); in iser_login()
/linux-6.1.9/drivers/net/ethernet/qlogic/qede/ !
Dqede_fp.c650 struct eth_fast_path_rx_tpa_start_cqe *cqe) in qede_set_gro_params() argument
652 u16 parsing_flags = le16_to_cpu(cqe->pars_flags.flags); in qede_set_gro_params()
660 skb_shinfo(skb)->gso_size = __le16_to_cpu(cqe->len_on_first_bd) - in qede_set_gro_params()
661 cqe->header_len; in qede_set_gro_params()
833 struct eth_fast_path_rx_tpa_start_cqe *cqe) in qede_tpa_start() argument
835 struct qede_agg_info *tpa_info = &rxq->tpa_info[cqe->tpa_agg_index]; in qede_tpa_start()
840 pad = cqe->placement_offset + rxq->rx_headroom; in qede_tpa_start()
843 le16_to_cpu(cqe->len_on_first_bd), in qede_tpa_start()
864 if ((le16_to_cpu(cqe->pars_flags.flags) >> in qede_tpa_start()
867 tpa_info->vlan_tag = le16_to_cpu(cqe->vlan_tag); in qede_tpa_start()
[all …]
/linux-6.1.9/drivers/net/ethernet/huawei/hinic/ !
Dhinic_hw_qp.c324 cqe_size = wq->q_depth * sizeof(*rq->cqe); in alloc_rq_cqe()
325 rq->cqe = vzalloc(cqe_size); in alloc_rq_cqe()
326 if (!rq->cqe) in alloc_rq_cqe()
335 rq->cqe[i] = dma_alloc_coherent(&pdev->dev, in alloc_rq_cqe()
336 sizeof(*rq->cqe[i]), in alloc_rq_cqe()
338 if (!rq->cqe[i]) in alloc_rq_cqe()
346 dma_free_coherent(&pdev->dev, sizeof(*rq->cqe[j]), rq->cqe[j], in alloc_rq_cqe()
352 vfree(rq->cqe); in alloc_rq_cqe()
368 dma_free_coherent(&pdev->dev, sizeof(*rq->cqe[i]), rq->cqe[i], in free_rq_cqe()
372 vfree(rq->cqe); in free_rq_cqe()
[all …]
/linux-6.1.9/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ !
Dmacsec.h48 static inline bool mlx5e_macsec_is_rx_flow(struct mlx5_cqe64 *cqe) in mlx5e_macsec_is_rx_flow() argument
50 return MLX5_MACSEC_METADATA_MARKER(be32_to_cpu(cqe->ft_metadata)); in mlx5e_macsec_is_rx_flow()
54 struct mlx5_cqe64 *cqe);
65 static inline bool mlx5e_macsec_is_rx_flow(struct mlx5_cqe64 *cqe) { return false; } in mlx5e_macsec_is_rx_flow() argument
68 struct mlx5_cqe64 *cqe) in mlx5e_macsec_offload_handle_rx_skb() argument
Dipsec_rxtx.h69 struct mlx5_cqe64 *cqe);
75 static inline bool mlx5_ipsec_is_rx_flow(struct mlx5_cqe64 *cqe) in mlx5_ipsec_is_rx_flow() argument
77 return MLX5_IPSEC_METADATA_MARKER(be32_to_cpu(cqe->ft_metadata)); in mlx5_ipsec_is_rx_flow()
148 struct mlx5_cqe64 *cqe) in mlx5e_ipsec_offload_handle_rx_skb() argument
156 static inline bool mlx5_ipsec_is_rx_flow(struct mlx5_cqe64 *cqe) { return false; } in mlx5_ipsec_is_rx_flow() argument
/linux-6.1.9/drivers/scsi/qedi/ !
Dqedi_fw.c31 union iscsi_cqe *cqe, in qedi_process_logout_resp() argument
42 cqe_logout_response = &cqe->cqe_common.iscsi_hdr.logout_response; in qedi_process_logout_resp()
50 resp_hdr->itt = build_itt(cqe->cqe_solicited.itid, conn->session->age); in qedi_process_logout_resp()
82 union iscsi_cqe *cqe, in qedi_process_text_resp() argument
97 cqe_text_response = &cqe->cqe_common.iscsi_hdr.text_response; in qedi_process_text_resp()
109 resp_hdr_ptr->itt = build_itt(cqe->cqe_solicited.itid, in qedi_process_text_resp()
178 union iscsi_cqe *cqe, in qedi_process_tmf_resp() argument
190 cqe_tmp_response = &cqe->cqe_common.iscsi_hdr.tmf_response; in qedi_process_tmf_resp()
214 resp_hdr_ptr->itt = build_itt(cqe->cqe_solicited.itid, in qedi_process_tmf_resp()
258 union iscsi_cqe *cqe, in qedi_process_login_resp() argument
[all …]
/linux-6.1.9/tools/testing/selftests/net/ !
Dio_uring_zerocopy_tx.c361 struct io_uring_cqe *cqe; in do_tx() local
421 ret = io_uring_wait_cqe(&ring, &cqe); in do_tx()
425 if (cqe->user_data != NONZC_TAG && in do_tx()
426 cqe->user_data != ZC_TAG) in do_tx()
429 if (cqe->flags & IORING_CQE_F_NOTIF) { in do_tx()
430 if (cqe->flags & IORING_CQE_F_MORE) in do_tx()
439 if (cqe->flags & IORING_CQE_F_MORE) { in do_tx()
440 if (cqe->user_data != ZC_TAG) in do_tx()
441 error(1, cqe->res, "unexpected F_MORE"); in do_tx()
444 if (cqe->res >= 0) { in do_tx()
[all …]
/linux-6.1.9/drivers/infiniband/hw/ocrdma/ !
Docrdma_verbs.c969 int entries = attr->cqe; in ocrdma_create_cq()
1023 ibcq->cqe = new_cnt; in ocrdma_resize_cq()
1034 struct ocrdma_cqe *cqe = NULL; in ocrdma_flush_cq() local
1036 cqe = cq->va; in ocrdma_flush_cq()
1044 if (is_cqe_valid(cq, cqe)) in ocrdma_flush_cq()
1046 cqe++; in ocrdma_flush_cq()
1594 struct ocrdma_cqe *cqe; in ocrdma_discard_cqes() local
1613 cqe = cq->va + cur_getp; in ocrdma_discard_cqes()
1618 qpn = cqe->cmn.qpn & OCRDMA_CQE_QPN_MASK; in ocrdma_discard_cqes()
1624 if (is_cqe_for_sq(cqe)) { in ocrdma_discard_cqes()
[all …]
/linux-6.1.9/drivers/nvme/target/ !
Dfabrics-cmd.c81 req->cqe->result.u64 = cpu_to_le64(val); in nvmet_execute_prop_get()
149 req->cqe->result.u32 = IPO_IATTR_CONNECT_SQE(sqsize); in nvmet_install_queue()
164 req->cqe->result.u32 = IPO_IATTR_CONNECT_SQE(sqsize); in nvmet_install_queue()
181 req->cqe->sq_head = cpu_to_le16(0xffff); in nvmet_install_queue()
229 req->cqe->result.u32 = 0; in nvmet_execute_admin_connect()
243 req->cqe->result.u32 = IPO_IATTR_CONNECT_DATA(cntlid); in nvmet_execute_admin_connect()
278 req->cqe->result.u32 = cpu_to_le32(nvmet_connect_result(ctrl)); in nvmet_execute_admin_connect()
307 req->cqe->result.u32 = 0; in nvmet_execute_io_connect()
326 req->cqe->result.u32 = IPO_IATTR_CONNECT_SQE(qid); in nvmet_execute_io_connect()
335 req->cqe->result.u32 = cpu_to_le32(nvmet_connect_result(ctrl)); in nvmet_execute_io_connect()

12345678910