| /linux/drivers/infiniband/ulp/isert/ |
| H A D | ib_isert.c | 778 isert_login_post_send(struct isert_conn *isert_conn, struct iser_tx_desc *tx_desc) in isert_login_post_send() argument 784 ib_dma_sync_single_for_device(ib_dev, tx_desc->dma_addr, in isert_login_post_send() 787 tx_desc->tx_cqe.done = isert_login_send_done; in isert_login_post_send() 790 send_wr.wr_cqe = &tx_desc->tx_cqe; in isert_login_post_send() 791 send_wr.sg_list = tx_desc->tx_sg; in isert_login_post_send() 792 send_wr.num_sge = tx_desc->num_sge; in isert_login_post_send() 805 struct iser_tx_desc *tx_desc) in __isert_create_send_desc() argument 808 memset(&tx_desc->iser_header, 0, sizeof(struct iser_ctrl)); in __isert_create_send_desc() 809 tx_desc->iser_header.flags = ISCSI_CTRL; in __isert_create_send_desc() 811 tx_desc->num_sge = 1; in __isert_create_send_desc() [all …]
|
| /linux/drivers/crypto/ccp/ |
| H A D | ccp-dmaengine.c | 111 if (!async_tx_test_ack(&desc->tx_desc)) in ccp_cleanup_desc_resources() 148 desc->tx_desc.cookie, cmd); in ccp_issue_next_cmd() 155 ret, desc->tx_desc.cookie, cmd); in ccp_issue_next_cmd() 170 __func__, desc->tx_desc.cookie, cmd); in ccp_free_active_cmd() 193 struct dma_async_tx_descriptor *tx_desc; in ccp_handle_active_desc() local 212 tx_desc = &desc->tx_desc; in ccp_handle_active_desc() 214 tx_desc = NULL; in ccp_handle_active_desc() 225 desc->tx_desc.cookie, desc->status); in ccp_handle_active_desc() 227 dma_cookie_complete(tx_desc); in ccp_handle_active_desc() 228 dma_descriptor_unmap(tx_desc); in ccp_handle_active_desc() [all …]
|
| /linux/drivers/infiniband/ulp/iser/ |
| H A D | iser_initiator.c | 144 struct iser_tx_desc *tx_desc, enum iser_desc_type type, in iser_create_send_desc() argument 149 tx_desc->type = type; in iser_create_send_desc() 150 tx_desc->cqe.done = done; in iser_create_send_desc() 153 tx_desc->dma_addr, ISER_HEADERS_LEN, DMA_TO_DEVICE); in iser_create_send_desc() 155 memset(&tx_desc->iser_header, 0, sizeof(struct iser_ctrl)); in iser_create_send_desc() 156 tx_desc->iser_header.flags = ISER_VER; in iser_create_send_desc() 157 tx_desc->num_sge = 1; in iser_create_send_desc() 350 struct iser_tx_desc *tx_desc = &iser_task->desc; in iser_send_command() local 355 iser_create_send_desc(iser_conn, tx_desc, ISCSI_TX_SCSI_COMMAND, in iser_send_command() 396 err = iser_post_send(&iser_conn->ib_conn, tx_desc); in iser_send_command() [all …]
|
| H A D | iscsi_iser.c | 196 struct iser_tx_desc *tx_desc) in iser_initialize_task_headers() argument 206 dma_addr = ib_dma_map_single(device->ib_device, (void *)tx_desc, in iser_initialize_task_headers() 211 tx_desc->inv_wr.next = NULL; in iser_initialize_task_headers() 212 tx_desc->reg_wr.wr.next = NULL; in iser_initialize_task_headers() 213 tx_desc->mapped = true; in iser_initialize_task_headers() 214 tx_desc->dma_addr = dma_addr; in iser_initialize_task_headers() 215 tx_desc->tx_sg[0].addr = tx_desc->dma_addr; in iser_initialize_task_headers() 216 tx_desc->tx_sg[0].length = ISER_HEADERS_LEN; in iser_initialize_task_headers() 217 tx_desc->tx_sg[0].lkey = device->pd->local_dma_lkey; in iser_initialize_task_headers() 363 struct iser_tx_desc *tx_desc = &iser_task->desc; in iscsi_iser_cleanup_task() local [all …]
|
| H A D | iser_memory.c | 253 struct iser_tx_desc *tx_desc = &iser_task->desc; in iser_reg_sig_mr() local 257 struct ib_reg_wr *wr = &tx_desc->reg_wr; in iser_reg_sig_mr() 268 iser_inv_rkey(&tx_desc->inv_wr, mr, cqe, &wr->wr); in iser_reg_sig_mr() 281 wr->wr.next = &tx_desc->send_wr; in iser_reg_sig_mr() 310 struct iser_tx_desc *tx_desc = &iser_task->desc; in iser_fast_reg_mr() local 313 struct ib_reg_wr *wr = &tx_desc->reg_wr; in iser_fast_reg_mr() 317 iser_inv_rkey(&tx_desc->inv_wr, mr, cqe, &wr->wr); in iser_fast_reg_mr() 328 wr->wr.next = &tx_desc->send_wr; in iser_fast_reg_mr()
|
| H A D | iser_verbs.c | 857 int iser_post_send(struct ib_conn *ib_conn, struct iser_tx_desc *tx_desc) in iser_post_send() argument 859 struct ib_send_wr *wr = &tx_desc->send_wr; in iser_post_send() 864 tx_desc->dma_addr, ISER_HEADERS_LEN, in iser_post_send() 868 wr->wr_cqe = &tx_desc->cqe; in iser_post_send() 869 wr->sg_list = tx_desc->tx_sg; in iser_post_send() 870 wr->num_sge = tx_desc->num_sge; in iser_post_send() 874 if (tx_desc->inv_wr.next) in iser_post_send() 875 first_wr = &tx_desc->inv_wr; in iser_post_send() 876 else if (tx_desc->reg_wr.wr.next) in iser_post_send() 877 first_wr = &tx_desc->reg_wr.wr; in iser_post_send()
|
| /linux/drivers/net/ethernet/sunplus/ |
| H A D | spl2sw_desc.c | 37 if (!comm->tx_desc) in spl2sw_tx_descs_clean() 41 comm->tx_desc[i].cmd1 = 0; in spl2sw_tx_descs_clean() 43 comm->tx_desc[i].cmd2 = 0; in spl2sw_tx_descs_clean() 44 comm->tx_desc[i].addr1 = 0; in spl2sw_tx_descs_clean() 45 comm->tx_desc[i].addr2 = 0; in spl2sw_tx_descs_clean() 103 comm->tx_desc = NULL; in spl2sw_descs_free() 119 memset(comm->tx_desc, '\0', sizeof(struct spl2sw_mac_desc) * in spl2sw_tx_descs_init() 188 comm->tx_desc = comm->desc_base; in spl2sw_descs_alloc() 191 comm->rx_desc[0] = &comm->tx_desc[TX_DESC_NUM + MAC_GUARD_DESC_NUM]; in spl2sw_descs_alloc() 215 comm->tx_desc = NULL; in spl2sw_descs_init()
|
| /linux/drivers/dma/amd/ptdma/ |
| H A D | ptdma-dmaengine.c | 199 struct dma_async_tx_descriptor *tx_desc; in pt_handle_active_desc() local 214 tx_desc = &desc->vd.tx; in pt_handle_active_desc() 217 tx_desc = NULL; in pt_handle_active_desc() 227 dma_cookie_complete(tx_desc); in pt_handle_active_desc() 228 dma_descriptor_unmap(tx_desc); in pt_handle_active_desc() 232 tx_desc = NULL; in pt_handle_active_desc() 240 if (pt->ver != AE4_DMA_VERSION && tx_desc) { in pt_handle_active_desc() 241 dmaengine_desc_get_callback_invoke(tx_desc, NULL); in pt_handle_active_desc() 242 dma_run_dependencies(tx_desc); in pt_handle_active_desc() 338 struct dma_async_tx_descriptor *tx_desc; in pt_cmd_callback_work() local [all …]
|
| /linux/drivers/net/ethernet/intel/fm10k/ |
| H A D | fm10k_main.c | 746 struct fm10k_tx_desc *tx_desc; in fm10k_tso() local 775 tx_desc = FM10K_TX_DESC(tx_ring, tx_ring->next_to_use); in fm10k_tso() 776 tx_desc->hdrlen = hdrlen; in fm10k_tso() 777 tx_desc->mss = cpu_to_le16(skb_shinfo(skb)->gso_size); in fm10k_tso() 793 struct fm10k_tx_desc *tx_desc; in fm10k_tx_csum() local 869 tx_desc = FM10K_TX_DESC(tx_ring, tx_ring->next_to_use); in fm10k_tx_csum() 870 tx_desc->hdrlen = 0; in fm10k_tx_csum() 871 tx_desc->mss = 0; in fm10k_tx_csum() 892 struct fm10k_tx_desc *tx_desc, u16 i, in fm10k_tx_desc_push() argument 900 tx_desc->buffer_addr = cpu_to_le64(dma); in fm10k_tx_desc_push() [all …]
|
| /linux/drivers/net/ethernet/intel/ice/ |
| H A D | ice_xsk.c | 366 struct ice_tx_desc *tx_desc; in ice_clean_xdp_irq_zc() local 375 tx_desc = ICE_TX_DESC(xdp_ring, last_rs); in ice_clean_xdp_irq_zc() 376 if (tx_desc->cmd_type_offset_bsz & in ice_clean_xdp_irq_zc() 409 tx_desc->cmd_type_offset_bsz = 0; in ice_clean_xdp_irq_zc() 439 struct ice_tx_desc *tx_desc; in ice_xmit_xdp_tx_zc() local 460 tx_desc = ICE_TX_DESC(xdp_ring, ntu); in ice_xmit_xdp_tx_zc() 472 tx_desc->buf_addr = cpu_to_le64(dma); in ice_xmit_xdp_tx_zc() 473 tx_desc->cmd_type_offset_bsz = ice_build_ctob(0, 0, size, 0); in ice_xmit_xdp_tx_zc() 483 tx_desc = ICE_TX_DESC(xdp_ring, ntu); in ice_xmit_xdp_tx_zc() 493 tx_desc->cmd_type_offset_bsz |= in ice_xmit_xdp_tx_zc() [all …]
|
| H A D | ice_txrx.c | 39 struct ice_tx_desc *tx_desc; in ice_prgm_fdir_fltr() local 75 tx_desc = ICE_TX_DESC(tx_ring, i); in ice_prgm_fdir_fltr() 85 tx_desc->buf_addr = cpu_to_le64(dma); in ice_prgm_fdir_fltr() 92 tx_desc->cmd_type_offset_bsz = in ice_prgm_fdir_fltr() 101 first->next_to_watch = tx_desc; in ice_prgm_fdir_fltr() 277 struct ice_tx_desc *tx_desc; in ice_clean_tx_irq() local 284 tx_desc = ICE_TX_DESC(tx_ring, i); in ice_clean_tx_irq() 301 ice_trace(clean_tx_irq, tx_ring, tx_desc, tx_buf); in ice_clean_tx_irq() 328 while (tx_desc != eop_desc) { in ice_clean_tx_irq() 329 ice_trace(clean_tx_irq_unmap, tx_ring, tx_desc, tx_buf); in ice_clean_tx_irq() [all …]
|
| /linux/drivers/net/ethernet/intel/ixgbe/ |
| H A D | ixgbe_xsk.c | 394 union ixgbe_adv_tx_desc *tx_desc = NULL; in ixgbe_xmit_zc() local 421 tx_desc = IXGBE_TX_DESC(xdp_ring, xdp_ring->next_to_use); in ixgbe_xmit_zc() 422 tx_desc->read.buffer_addr = cpu_to_le64(dma); in ixgbe_xmit_zc() 429 tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type); in ixgbe_xmit_zc() 430 tx_desc->read.olinfo_status = in ixgbe_xmit_zc() 440 if (tx_desc) { in ixgbe_xmit_zc() 464 union ixgbe_adv_tx_desc *tx_desc; in ixgbe_clean_xdp_tx_irq() local 469 tx_desc = IXGBE_TX_DESC(tx_ring, ntc); in ixgbe_clean_xdp_tx_irq() 472 if (!(tx_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD))) in ixgbe_clean_xdp_tx_irq() 486 tx_desc++; in ixgbe_clean_xdp_tx_irq() [all …]
|
| /linux/drivers/net/wireless/realtek/rtw88/ |
| H A D | tx.c | 38 struct rtw_tx_desc *tx_desc = (struct rtw_tx_desc *)skb->data; in rtw_tx_fill_tx_desc() local 44 tx_desc->w0 = le32_encode_bits(pkt_info->tx_pkt_size, RTW_TX_DESC_W0_TXPKTSIZE) | in rtw_tx_fill_tx_desc() 50 tx_desc->w1 = le32_encode_bits(pkt_info->mac_id, RTW_TX_DESC_W1_MACID) | in rtw_tx_fill_tx_desc() 57 tx_desc->w2 = le32_encode_bits(pkt_info->ampdu_en, RTW_TX_DESC_W2_AGG_EN) | in rtw_tx_fill_tx_desc() 62 tx_desc->w3 = le32_encode_bits(pkt_info->hw_ssn_sel, RTW_TX_DESC_W3_HW_SSN_SEL) | in rtw_tx_fill_tx_desc() 69 tx_desc->w4 = le32_encode_bits(pkt_info->rate, RTW_TX_DESC_W4_DATARATE); in rtw_tx_fill_tx_desc() 72 tx_desc->w4 |= le32_encode_bits(0x1f, RTW_TX_DESC_W4_DATARATE_FB_LIMIT); in rtw_tx_fill_tx_desc() 74 tx_desc->w5 = le32_encode_bits(pkt_info->short_gi, RTW_TX_DESC_W5_DATA_SHORT) | in rtw_tx_fill_tx_desc() 79 tx_desc->w6 = le32_encode_bits(pkt_info->sn, RTW_TX_DESC_W6_SW_DEFINE); in rtw_tx_fill_tx_desc() 81 tx_desc->w8 = le32_encode_bits(pkt_info->en_hwseq, RTW_TX_DESC_W8_EN_HWSEQ); in rtw_tx_fill_tx_desc() [all …]
|
| H A D | tx.h | 123 struct rtw_tx_desc *tx_desc = (struct rtw_tx_desc *)txdesc; in fill_txdesc_checksum_common() local 125 le32p_replace_bits(&tx_desc->w7, 0, RTW_TX_DESC_W7_TXDESC_CHECKSUM); in fill_txdesc_checksum_common() 130 le32p_replace_bits(&tx_desc->w7, __le16_to_cpu(chksum), in fill_txdesc_checksum_common()
|
| /linux/drivers/dma/xilinx/ |
| H A D | xilinx_dpdma.c | 590 struct xilinx_dpdma_tx_desc *tx_desc) in xilinx_dpdma_chan_dump_tx_desc() argument 599 list_for_each_entry(sw_desc, &tx_desc->descriptors, node) { in xilinx_dpdma_chan_dump_tx_desc() 636 struct xilinx_dpdma_tx_desc *tx_desc; in xilinx_dpdma_chan_alloc_tx_desc() local 638 tx_desc = kzalloc_obj(*tx_desc, GFP_NOWAIT); in xilinx_dpdma_chan_alloc_tx_desc() 639 if (!tx_desc) in xilinx_dpdma_chan_alloc_tx_desc() 642 INIT_LIST_HEAD(&tx_desc->descriptors); in xilinx_dpdma_chan_alloc_tx_desc() 643 tx_desc->chan = chan; in xilinx_dpdma_chan_alloc_tx_desc() 644 tx_desc->error = false; in xilinx_dpdma_chan_alloc_tx_desc() 646 return tx_desc; in xilinx_dpdma_chan_alloc_tx_desc() 691 struct xilinx_dpdma_tx_desc *tx_desc; in xilinx_dpdma_chan_prep_cyclic() local [all …]
|
| /linux/drivers/net/ethernet/intel/i40e/ |
| H A D | i40e_xsk.c | 512 struct i40e_tx_desc *tx_desc; in i40e_xmit_pkt() local 518 tx_desc = I40E_TX_DESC(xdp_ring, xdp_ring->next_to_use++); in i40e_xmit_pkt() 519 tx_desc->buffer_addr = cpu_to_le64(dma); in i40e_xmit_pkt() 520 tx_desc->cmd_type_offset_bsz = build_ctob(cmd, 0, desc->len, 0); in i40e_xmit_pkt() 529 struct i40e_tx_desc *tx_desc; in i40e_xmit_pkt_batch() local 540 tx_desc = I40E_TX_DESC(xdp_ring, ntu++); in i40e_xmit_pkt_batch() 541 tx_desc->buffer_addr = cpu_to_le64(dma); in i40e_xmit_pkt_batch() 542 tx_desc->cmd_type_offset_bsz = build_ctob(cmd, 0, desc[i].len, 0); in i40e_xmit_pkt_batch() 566 struct i40e_tx_desc *tx_desc; in i40e_set_rs_bit() local 568 tx_desc = I40E_TX_DESC(xdp_ring, ntu); in i40e_set_rs_bit() [all …]
|
| H A D | i40e_txrx.c | 87 struct i40e_tx_desc *tx_desc; in i40e_program_fdir_filter() local 122 tx_desc = I40E_TX_DESC(tx_ring, i); in i40e_program_fdir_filter() 133 tx_desc->buffer_addr = cpu_to_le64(dma); in i40e_program_fdir_filter() 139 tx_desc->cmd_type_offset_bsz = in i40e_program_fdir_filter() 148 first->next_to_watch = tx_desc; in i40e_program_fdir_filter() 934 struct i40e_tx_desc *tx_desc; in i40e_clean_tx_irq() local 939 tx_desc = I40E_TX_DESC(tx_ring, i); in i40e_clean_tx_irq() 951 i40e_trace(clean_tx_irq, tx_ring, tx_desc, tx_buf); in i40e_clean_tx_irq() 953 if (tx_head == tx_desc) in i40e_clean_tx_irq() 980 while (tx_desc != eop_desc) { in i40e_clean_tx_irq() [all …]
|
| /linux/drivers/net/ethernet/intel/iavf/ |
| H A D | iavf_txrx.c | 238 struct iavf_tx_desc *tx_desc; in iavf_clean_tx_irq() local 243 tx_desc = IAVF_TX_DESC(tx_ring, i); in iavf_clean_tx_irq() 256 iavf_trace(clean_tx_irq, tx_ring, tx_desc, tx_buf); in iavf_clean_tx_irq() 283 while (tx_desc != eop_desc) { in iavf_clean_tx_irq() 285 tx_ring, tx_desc, tx_buf); in iavf_clean_tx_irq() 288 tx_desc++; in iavf_clean_tx_irq() 293 tx_desc = IAVF_TX_DESC(tx_ring, 0); in iavf_clean_tx_irq() 308 tx_desc++; in iavf_clean_tx_irq() 313 tx_desc = IAVF_TX_DESC(tx_ring, 0); in iavf_clean_tx_irq() 316 prefetch(tx_desc); in iavf_clean_tx_irq() [all …]
|
| /linux/drivers/spi/ |
| H A D | spi-pxa2xx-dma.c | 139 struct dma_async_tx_descriptor *tx_desc, *rx_desc; in pxa2xx_spi_dma_prepare() local 142 tx_desc = pxa2xx_spi_dma_prepare_one(drv_data, DMA_MEM_TO_DEV, xfer); in pxa2xx_spi_dma_prepare() 143 if (!tx_desc) { in pxa2xx_spi_dma_prepare() 161 dmaengine_submit(tx_desc); in pxa2xx_spi_dma_prepare()
|
| /linux/drivers/net/ethernet/marvell/mvpp2/ |
| H A D | mvpp2_main.c | 183 struct mvpp2_tx_desc *tx_desc) in mvpp2_txdesc_dma_addr_get() argument 186 return le32_to_cpu(tx_desc->pp21.buf_dma_addr); in mvpp2_txdesc_dma_addr_get() 188 return le64_to_cpu(tx_desc->pp22.buf_dma_addr_ptp) & in mvpp2_txdesc_dma_addr_get() 193 struct mvpp2_tx_desc *tx_desc, in mvpp2_txdesc_dma_addr_set() argument 202 tx_desc->pp21.buf_dma_addr = cpu_to_le32(addr); in mvpp2_txdesc_dma_addr_set() 203 tx_desc->pp21.packet_offset = offset; in mvpp2_txdesc_dma_addr_set() 207 tx_desc->pp22.buf_dma_addr_ptp &= ~cpu_to_le64(MVPP2_DESC_DMA_MASK); in mvpp2_txdesc_dma_addr_set() 208 tx_desc->pp22.buf_dma_addr_ptp |= val; in mvpp2_txdesc_dma_addr_set() 209 tx_desc->pp22.packet_offset = offset; in mvpp2_txdesc_dma_addr_set() 214 struct mvpp2_tx_desc *tx_desc) in mvpp2_txdesc_size_get() argument [all …]
|
| /linux/drivers/net/ethernet/ |
| H A D | ec_bhf.c | 103 struct tx_desc { struct 144 struct tx_desc *tx_descs; 170 static void ec_bhf_send_packet(struct ec_bhf_priv *priv, struct tx_desc *desc) in ec_bhf_send_packet() 178 static int ec_bhf_desc_sent(struct tx_desc *desc) in ec_bhf_desc_sent() 286 struct tx_desc *desc; in ec_bhf_start_xmit() 361 priv->tx_dcount = priv->tx_buf.len / sizeof(struct tx_desc); in ec_bhf_setup_tx_descs() 362 priv->tx_descs = (struct tx_desc *)priv->tx_buf.buf; in ec_bhf_setup_tx_descs() 409 FIFO_SIZE * sizeof(struct tx_desc)); in ec_bhf_open()
|
| /linux/tools/testing/selftests/bpf/prog_tests/ |
| H A D | xdp_metadata.c | 139 struct xdp_desc *tx_desc; in generate_packet() local 151 tx_desc = xsk_ring_prod__tx_desc(&xsk->tx, idx); in generate_packet() 152 tx_desc->addr = idx % (UMEM_NUM / 2) * UMEM_FRAME_SIZE + sizeof(struct xsk_tx_metadata); in generate_packet() 153 printf("%p: tx_desc[%u]->addr=%llx\n", xsk, idx, tx_desc->addr); in generate_packet() 154 data = xsk_umem__get_data(xsk->umem_area, tx_desc->addr); in generate_packet() 192 tx_desc->len = sizeof(*eth) + sizeof(*iph) + sizeof(*udph) + UDP_PAYLOAD_BYTES; in generate_packet() 193 tx_desc->options |= XDP_TX_METADATA; in generate_packet()
|
| /linux/drivers/net/ethernet/dec/tulip/ |
| H A D | uli526x.c | 106 struct tx_desc { struct 109 struct tx_desc *next_tx_desc; argument 145 struct tx_desc *first_tx_desc; 146 struct tx_desc *tx_insert_ptr; 147 struct tx_desc *tx_remove_ptr; 322 sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20, in uli526x_init_one() 333 db->first_tx_desc = (struct tx_desc *) db->desc_pool_ptr; in uli526x_init_one() 415 sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20, in uli526x_init_one() 436 sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20, in uli526x_remove_one() 587 struct tx_desc *txptr; in uli526x_start_xmit() [all …]
|
| /linux/drivers/gpib/eastwood/ |
| H A D | fluke_gpib.c | 387 struct dma_async_tx_descriptor *tx_desc; in fluke_dma_write() local 405 tx_desc = dmaengine_prep_slave_single(e_priv->dma_channel, address, length, DMA_MEM_TO_DEV, in fluke_dma_write() 407 if (!tx_desc) { in fluke_dma_write() 412 tx_desc->callback = fluke_dma_callback; in fluke_dma_write() 413 tx_desc->callback_param = board; in fluke_dma_write() 418 dmaengine_submit(tx_desc); in fluke_dma_write() 565 struct dma_async_tx_descriptor *tx_desc; in fluke_dma_read() local 584 tx_desc = dmaengine_prep_slave_single(e_priv->dma_channel, in fluke_dma_read() 587 if (!tx_desc) { in fluke_dma_read() 592 tx_desc->callback = fluke_dma_callback; in fluke_dma_read() [all …]
|
| /linux/drivers/net/wireless/ti/wl18xx/ |
| H A D | tx.c | 68 struct wl1271_tx_hw_descr *tx_desc; in wl18xx_tx_complete_packet() local 81 tx_desc = (struct wl1271_tx_hw_descr *)skb->data; in wl18xx_tx_complete_packet() 98 tx_desc->hlid); in wl18xx_tx_complete_packet()
|