/kernel/linux/linux-5.10/drivers/net/ethernet/sfc/falcon/ |
H A D | tx.c | 25 static inline u8 *ef4_tx_get_copy_buffer(struct ef4_tx_queue *tx_queue, in ef4_tx_get_copy_buffer() argument 28 unsigned int index = ef4_tx_queue_get_insert_index(tx_queue); in ef4_tx_get_copy_buffer() 30 &tx_queue->cb_page[index >> (PAGE_SHIFT - EF4_TX_CB_ORDER)]; in ef4_tx_get_copy_buffer() 35 ef4_nic_alloc_buffer(tx_queue->efx, page_buf, PAGE_SIZE, in ef4_tx_get_copy_buffer() 43 u8 *ef4_tx_get_copy_buffer_limited(struct ef4_tx_queue *tx_queue, in ef4_tx_get_copy_buffer_limited() argument 48 return ef4_tx_get_copy_buffer(tx_queue, buffer); in ef4_tx_get_copy_buffer_limited() 51 static void ef4_dequeue_buffer(struct ef4_tx_queue *tx_queue, in ef4_dequeue_buffer() argument 57 struct device *dma_dev = &tx_queue->efx->pci_dev->dev; in ef4_dequeue_buffer() 72 netif_vdbg(tx_queue->efx, tx_done, tx_queue in ef4_dequeue_buffer() 147 ef4_enqueue_skb_copy(struct ef4_tx_queue *tx_queue, struct sk_buff *skb) ef4_enqueue_skb_copy() argument 180 ef4_tx_map_chunk(struct ef4_tx_queue *tx_queue, dma_addr_t dma_addr, size_t len) ef4_tx_map_chunk() argument 206 ef4_tx_map_data(struct ef4_tx_queue *tx_queue, struct sk_buff *skb) ef4_tx_map_data() argument 268 ef4_enqueue_unwind(struct ef4_tx_queue *tx_queue) ef4_enqueue_unwind() argument 296 ef4_enqueue_skb(struct ef4_tx_queue *tx_queue, struct sk_buff *skb) ef4_enqueue_skb() argument 354 ef4_dequeue_buffers(struct ef4_tx_queue *tx_queue, unsigned int index, unsigned int *pkts_compl, unsigned int *bytes_compl) ef4_dequeue_buffers() argument 397 struct ef4_tx_queue *tx_queue; ef4_hard_start_xmit() local 413 ef4_init_tx_queue_core_txq(struct ef4_tx_queue *tx_queue) ef4_init_tx_queue_core_txq() argument 431 struct ef4_tx_queue *tx_queue; ef4_setup_tc() local 491 ef4_xmit_done(struct ef4_tx_queue *tx_queue, unsigned int index) ef4_xmit_done() argument 533 ef4_tx_cb_page_count(struct ef4_tx_queue *tx_queue) ef4_tx_cb_page_count() argument 538 ef4_probe_tx_queue(struct ef4_tx_queue *tx_queue) ef4_probe_tx_queue() argument 582 ef4_init_tx_queue(struct ef4_tx_queue *tx_queue) ef4_init_tx_queue() argument 606 ef4_fini_tx_queue(struct ef4_tx_queue *tx_queue) ef4_fini_tx_queue() argument 628 ef4_remove_tx_queue(struct ef4_tx_queue *tx_queue) ef4_remove_tx_queue() argument [all...] |
H A D | nic.h | 63 ef4_tx_desc(struct ef4_tx_queue *tx_queue, unsigned int index) in ef4_tx_desc() argument 65 return ((ef4_qword_t *) (tx_queue->txd.buf.addr)) + index; in ef4_tx_desc() 69 static inline struct ef4_tx_queue *ef4_tx_queue_partner(struct ef4_tx_queue *tx_queue) in ef4_tx_queue_partner() argument 71 if (tx_queue->queue & EF4_TXQ_TYPE_OFFLOAD) in ef4_tx_queue_partner() 72 return tx_queue - EF4_TXQ_TYPE_OFFLOAD; in ef4_tx_queue_partner() 74 return tx_queue + EF4_TXQ_TYPE_OFFLOAD; in ef4_tx_queue_partner() 80 static inline bool __ef4_nic_tx_is_empty(struct ef4_tx_queue *tx_queue, in __ef4_nic_tx_is_empty() argument 83 unsigned int empty_read_count = READ_ONCE(tx_queue->empty_read_count); in __ef4_nic_tx_is_empty() 99 static inline bool ef4_nic_may_push_tx_desc(struct ef4_tx_queue *tx_queue, in ef4_nic_may_push_tx_desc() argument 102 bool was_empty = __ef4_nic_tx_is_empty(tx_queue, write_coun in ef4_nic_may_push_tx_desc() 315 ef4_nic_probe_tx(struct ef4_tx_queue *tx_queue) ef4_nic_probe_tx() argument 319 ef4_nic_init_tx(struct ef4_tx_queue *tx_queue) ef4_nic_init_tx() argument 323 ef4_nic_remove_tx(struct ef4_tx_queue *tx_queue) ef4_nic_remove_tx() argument 327 ef4_nic_push_buffers(struct ef4_tx_queue *tx_queue) ef4_nic_push_buffers() argument [all...] |
/kernel/linux/linux-6.6/drivers/net/ethernet/sfc/falcon/ |
H A D | tx.c | 25 static inline u8 *ef4_tx_get_copy_buffer(struct ef4_tx_queue *tx_queue, in ef4_tx_get_copy_buffer() argument 28 unsigned int index = ef4_tx_queue_get_insert_index(tx_queue); in ef4_tx_get_copy_buffer() 30 &tx_queue->cb_page[index >> (PAGE_SHIFT - EF4_TX_CB_ORDER)]; in ef4_tx_get_copy_buffer() 35 ef4_nic_alloc_buffer(tx_queue->efx, page_buf, PAGE_SIZE, in ef4_tx_get_copy_buffer() 43 u8 *ef4_tx_get_copy_buffer_limited(struct ef4_tx_queue *tx_queue, in ef4_tx_get_copy_buffer_limited() argument 48 return ef4_tx_get_copy_buffer(tx_queue, buffer); in ef4_tx_get_copy_buffer_limited() 51 static void ef4_dequeue_buffer(struct ef4_tx_queue *tx_queue, in ef4_dequeue_buffer() argument 57 struct device *dma_dev = &tx_queue->efx->pci_dev->dev; in ef4_dequeue_buffer() 72 netif_vdbg(tx_queue->efx, tx_done, tx_queue in ef4_dequeue_buffer() 148 ef4_enqueue_skb_copy(struct ef4_tx_queue *tx_queue, struct sk_buff *skb) ef4_enqueue_skb_copy() argument 181 ef4_tx_map_chunk(struct ef4_tx_queue *tx_queue, dma_addr_t dma_addr, size_t len) ef4_tx_map_chunk() argument 207 ef4_tx_map_data(struct ef4_tx_queue *tx_queue, struct sk_buff *skb) ef4_tx_map_data() argument 269 ef4_enqueue_unwind(struct ef4_tx_queue *tx_queue) ef4_enqueue_unwind() argument 297 ef4_enqueue_skb(struct ef4_tx_queue *tx_queue, struct sk_buff *skb) ef4_enqueue_skb() argument 355 ef4_dequeue_buffers(struct ef4_tx_queue *tx_queue, unsigned int index, unsigned int *pkts_compl, unsigned int *bytes_compl) ef4_dequeue_buffers() argument 398 struct ef4_tx_queue *tx_queue; ef4_hard_start_xmit() local 414 ef4_init_tx_queue_core_txq(struct ef4_tx_queue *tx_queue) ef4_init_tx_queue_core_txq() argument 432 struct ef4_tx_queue *tx_queue; ef4_setup_tc() local 492 ef4_xmit_done(struct ef4_tx_queue *tx_queue, unsigned int index) ef4_xmit_done() argument 534 ef4_tx_cb_page_count(struct ef4_tx_queue *tx_queue) ef4_tx_cb_page_count() argument 539 ef4_probe_tx_queue(struct ef4_tx_queue *tx_queue) ef4_probe_tx_queue() argument 583 ef4_init_tx_queue(struct ef4_tx_queue *tx_queue) ef4_init_tx_queue() argument 607 ef4_fini_tx_queue(struct ef4_tx_queue *tx_queue) ef4_fini_tx_queue() argument 629 ef4_remove_tx_queue(struct ef4_tx_queue *tx_queue) ef4_remove_tx_queue() argument [all...] |
H A D | nic.h | 63 ef4_tx_desc(struct ef4_tx_queue *tx_queue, unsigned int index) in ef4_tx_desc() argument 65 return ((ef4_qword_t *) (tx_queue->txd.buf.addr)) + index; in ef4_tx_desc() 69 static inline struct ef4_tx_queue *ef4_tx_queue_partner(struct ef4_tx_queue *tx_queue) in ef4_tx_queue_partner() argument 71 if (tx_queue->queue & EF4_TXQ_TYPE_OFFLOAD) in ef4_tx_queue_partner() 72 return tx_queue - EF4_TXQ_TYPE_OFFLOAD; in ef4_tx_queue_partner() 74 return tx_queue + EF4_TXQ_TYPE_OFFLOAD; in ef4_tx_queue_partner() 80 static inline bool __ef4_nic_tx_is_empty(struct ef4_tx_queue *tx_queue, in __ef4_nic_tx_is_empty() argument 83 unsigned int empty_read_count = READ_ONCE(tx_queue->empty_read_count); in __ef4_nic_tx_is_empty() 99 static inline bool ef4_nic_may_push_tx_desc(struct ef4_tx_queue *tx_queue, in ef4_nic_may_push_tx_desc() argument 102 bool was_empty = __ef4_nic_tx_is_empty(tx_queue, write_coun in ef4_nic_may_push_tx_desc() 315 ef4_nic_probe_tx(struct ef4_tx_queue *tx_queue) ef4_nic_probe_tx() argument 319 ef4_nic_init_tx(struct ef4_tx_queue *tx_queue) ef4_nic_init_tx() argument 323 ef4_nic_remove_tx(struct ef4_tx_queue *tx_queue) ef4_nic_remove_tx() argument 327 ef4_nic_push_buffers(struct ef4_tx_queue *tx_queue) ef4_nic_push_buffers() argument [all...] |
/kernel/linux/linux-6.6/drivers/net/ethernet/sfc/ |
H A D | tx_common.c | 17 static unsigned int efx_tx_cb_page_count(struct efx_tx_queue *tx_queue) in efx_tx_cb_page_count() argument 19 return DIV_ROUND_UP(tx_queue->ptr_mask + 1, in efx_tx_cb_page_count() 23 int efx_probe_tx_queue(struct efx_tx_queue *tx_queue) in efx_probe_tx_queue() argument 25 struct efx_nic *efx = tx_queue->efx; in efx_probe_tx_queue() 32 tx_queue->ptr_mask = entries - 1; in efx_probe_tx_queue() 36 tx_queue->queue, efx->txq_entries, tx_queue->ptr_mask); in efx_probe_tx_queue() 39 tx_queue->buffer = kcalloc(entries, sizeof(*tx_queue->buffer), in efx_probe_tx_queue() 41 if (!tx_queue in efx_probe_tx_queue() 68 efx_init_tx_queue(struct efx_tx_queue *tx_queue) efx_init_tx_queue() argument 98 efx_fini_tx_queue(struct efx_tx_queue *tx_queue) efx_fini_tx_queue() argument 125 efx_remove_tx_queue(struct efx_tx_queue *tx_queue) efx_remove_tx_queue() argument 149 efx_dequeue_buffer(struct efx_tx_queue *tx_queue, struct efx_tx_buffer *buffer, unsigned int *pkts_compl, unsigned int *bytes_compl, unsigned int *efv_pkts_compl) efx_dequeue_buffer() argument 209 efx_dequeue_buffers(struct efx_tx_queue *tx_queue, unsigned int index, unsigned int *pkts_compl, unsigned int *bytes_compl, unsigned int *efv_pkts_compl) efx_dequeue_buffers() argument 240 efx_xmit_done_check_empty(struct efx_tx_queue *tx_queue) efx_xmit_done_check_empty() argument 253 efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index) efx_xmit_done() argument 290 efx_enqueue_unwind(struct efx_tx_queue *tx_queue, unsigned int insert_count) efx_enqueue_unwind() argument 307 efx_tx_map_chunk(struct efx_tx_queue *tx_queue, dma_addr_t dma_addr, size_t len) efx_tx_map_chunk() argument 349 efx_tx_map_data(struct efx_tx_queue *tx_queue, struct sk_buff *skb, unsigned int segment_count) efx_tx_map_data() argument 452 efx_tx_tso_fallback(struct efx_tx_queue *tx_queue, struct sk_buff *skb) efx_tx_tso_fallback() argument [all...] |
H A D | ef100_tx.c | 23 int ef100_tx_probe(struct efx_tx_queue *tx_queue) in ef100_tx_probe() argument 26 return efx_nic_alloc_buffer(tx_queue->efx, &tx_queue->txd, in ef100_tx_probe() 27 (tx_queue->ptr_mask + 2) * in ef100_tx_probe() 32 void ef100_tx_init(struct efx_tx_queue *tx_queue) in ef100_tx_init() argument 35 tx_queue->core_txq = in ef100_tx_init() 36 netdev_get_tx_queue(tx_queue->efx->net_dev, in ef100_tx_init() 37 tx_queue->channel->channel - in ef100_tx_init() 38 tx_queue->efx->tx_channel_offset); in ef100_tx_init() 46 tx_queue in ef100_tx_init() 52 ef100_tx_can_tso(struct efx_tx_queue *tx_queue, struct sk_buff *skb) ef100_tx_can_tso() argument 102 ef100_tx_desc(struct efx_tx_queue *tx_queue, unsigned int index) ef100_tx_desc() argument 110 ef100_notify_tx_desc(struct efx_tx_queue *tx_queue) ef100_notify_tx_desc() argument 128 ef100_tx_push_buffers(struct efx_tx_queue *tx_queue) ef100_tx_push_buffers() argument 255 ef100_tx_make_descriptors(struct efx_tx_queue *tx_queue, const struct sk_buff *skb, unsigned int segment_count, struct efx_rep *efv) ef100_tx_make_descriptors() argument 343 ef100_tx_write(struct efx_tx_queue *tx_queue) ef100_tx_write() argument 355 struct efx_tx_queue *tx_queue = ef100_ev_tx() local 370 ef100_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb) ef100_enqueue_skb() argument 376 __ef100_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb, struct efx_rep *efv) __ef100_enqueue_skb() argument [all...] |
H A D | tx.c | 34 static inline u8 *efx_tx_get_copy_buffer(struct efx_tx_queue *tx_queue, in efx_tx_get_copy_buffer() argument 37 unsigned int index = efx_tx_queue_get_insert_index(tx_queue); in efx_tx_get_copy_buffer() 39 &tx_queue->cb_page[index >> (PAGE_SHIFT - EFX_TX_CB_ORDER)]; in efx_tx_get_copy_buffer() 44 efx_nic_alloc_buffer(tx_queue->efx, page_buf, PAGE_SIZE, in efx_tx_get_copy_buffer() 52 u8 *efx_tx_get_copy_buffer_limited(struct efx_tx_queue *tx_queue, in efx_tx_get_copy_buffer_limited() argument 57 return efx_tx_get_copy_buffer(tx_queue, buffer); in efx_tx_get_copy_buffer_limited() 99 static int efx_enqueue_skb_copy(struct efx_tx_queue *tx_queue, in efx_enqueue_skb_copy() argument 109 buffer = efx_tx_queue_get_insert_buffer(tx_queue); in efx_enqueue_skb_copy() 111 copy_buffer = efx_tx_get_copy_buffer(tx_queue, buffer); in efx_enqueue_skb_copy() 122 ++tx_queue in efx_enqueue_skb_copy() 220 efx_enqueue_skb_pio(struct efx_tx_queue *tx_queue, struct sk_buff *skb) efx_enqueue_skb_pio() argument 276 efx_tx_may_pio(struct efx_tx_queue *tx_queue) efx_tx_may_pio() argument 322 __efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb) __efx_enqueue_skb() argument 425 struct efx_tx_queue *tx_queue; efx_xdp_tx_buffers() local 516 struct efx_tx_queue *tx_queue; efx_hard_start_xmit() local 554 efx_xmit_done_single(struct efx_tx_queue *tx_queue) efx_xmit_done_single() argument 594 efx_init_tx_queue_core_txq(struct efx_tx_queue *tx_queue) efx_init_tx_queue_core_txq() argument [all...] |
H A D | tx_common.h | 14 int efx_probe_tx_queue(struct efx_tx_queue *tx_queue); 15 void efx_init_tx_queue(struct efx_tx_queue *tx_queue); 16 void efx_fini_tx_queue(struct efx_tx_queue *tx_queue); 17 void efx_remove_tx_queue(struct efx_tx_queue *tx_queue); 19 void efx_dequeue_buffer(struct efx_tx_queue *tx_queue, 30 void efx_xmit_done_check_empty(struct efx_tx_queue *tx_queue); 31 int efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index); 33 void efx_enqueue_unwind(struct efx_tx_queue *tx_queue, 36 struct efx_tx_buffer *efx_tx_map_chunk(struct efx_tx_queue *tx_queue, 39 int efx_tx_map_data(struct efx_tx_queue *tx_queue, struc [all...] |
H A D | nic_common.h | 59 efx_tx_desc(struct efx_tx_queue *tx_queue, unsigned int index) in efx_tx_desc() argument 61 return ((efx_qword_t *)(tx_queue->txd.addr)) + index; in efx_tx_desc() 67 static inline bool efx_nic_tx_is_empty(struct efx_tx_queue *tx_queue, unsigned int write_count) in efx_nic_tx_is_empty() argument 69 unsigned int empty_read_count = READ_ONCE(tx_queue->empty_read_count); in efx_nic_tx_is_empty() 77 int efx_enqueue_skb_tso(struct efx_tx_queue *tx_queue, struct sk_buff *skb, 86 static inline bool efx_nic_may_push_tx_desc(struct efx_tx_queue *tx_queue, in efx_nic_may_push_tx_desc() argument 89 bool was_empty = efx_nic_tx_is_empty(tx_queue, write_count); in efx_nic_may_push_tx_desc() 91 tx_queue->empty_read_count = 0; in efx_nic_may_push_tx_desc() 92 return was_empty && tx_queue->write_count - write_count == 1; in efx_nic_may_push_tx_desc() 118 static inline int efx_nic_probe_tx(struct efx_tx_queue *tx_queue) in efx_nic_probe_tx() argument 122 efx_nic_init_tx(struct efx_tx_queue *tx_queue) efx_nic_init_tx() argument 126 efx_nic_remove_tx(struct efx_tx_queue *tx_queue) efx_nic_remove_tx() argument 131 efx_nic_push_buffers(struct efx_tx_queue *tx_queue) efx_nic_push_buffers() argument [all...] |
H A D | tx_tso.c | 79 static inline void prefetch_ptr(struct efx_tx_queue *tx_queue) in prefetch_ptr() argument 81 unsigned int insert_ptr = efx_tx_queue_get_insert_index(tx_queue); in prefetch_ptr() 84 ptr = (char *) (tx_queue->buffer + insert_ptr); in prefetch_ptr() 88 ptr = (char *)(((efx_qword_t *)tx_queue->txd.addr) + insert_ptr); in prefetch_ptr() 95 * @tx_queue: Efx TX queue 102 static void efx_tx_queue_insert(struct efx_tx_queue *tx_queue, in efx_tx_queue_insert() argument 112 buffer = efx_tx_queue_get_insert_buffer(tx_queue); in efx_tx_queue_insert() 113 ++tx_queue->insert_count; in efx_tx_queue_insert() 115 EFX_WARN_ON_ONCE_PARANOID(tx_queue->insert_count - in efx_tx_queue_insert() 116 tx_queue in efx_tx_queue_insert() 169 tso_start(struct tso_state *st, struct efx_nic *efx, struct efx_tx_queue *tx_queue, const struct sk_buff *skb) tso_start() argument 232 tso_fill_packet_with_fragment(struct efx_tx_queue *tx_queue, const struct sk_buff *skb, struct tso_state *st) tso_fill_packet_with_fragment() argument 285 tso_start_new_packet(struct efx_tx_queue *tx_queue, const struct sk_buff *skb, struct tso_state *st) tso_start_new_packet() argument 362 efx_enqueue_skb_tso(struct efx_tx_queue *tx_queue, struct sk_buff *skb, bool *data_mapped) efx_enqueue_skb_tso() argument [all...] |
H A D | efx_channels.c | 181 "XDP_TX and XDP_REDIRECT will work with reduced performance (%d cpus/tx_queue)\n", in efx_allocate_msix_channels() 533 struct efx_tx_queue *tx_queue; in efx_alloc_channel() local 546 tx_queue = &channel->tx_queue[j]; in efx_alloc_channel() 547 tx_queue->efx = efx; in efx_alloc_channel() 548 tx_queue->queue = -1; in efx_alloc_channel() 549 tx_queue->label = j; in efx_alloc_channel() 550 tx_queue->channel = channel; in efx_alloc_channel() 603 struct efx_tx_queue *tx_queue; in efx_copy_channel() local 620 tx_queue in efx_copy_channel() 641 struct efx_tx_queue *tx_queue; efx_probe_channel() local 741 struct efx_tx_queue *tx_queue; efx_remove_channel() local 765 efx_set_xdp_tx_queue(struct efx_nic *efx, int xdp_queue_number, struct efx_tx_queue *tx_queue) efx_set_xdp_tx_queue() argument 781 struct efx_tx_queue *tx_queue; efx_set_xdp_channels() local 1091 struct efx_tx_queue *tx_queue; efx_start_channels() local 1117 struct efx_tx_queue *tx_queue; efx_stop_channels() local 1179 struct efx_tx_queue *tx_queue; efx_process_channel() local [all...] |
H A D | mcdi_functions.c | 163 int efx_mcdi_tx_init(struct efx_tx_queue *tx_queue) in efx_mcdi_tx_init() argument 167 bool csum_offload = tx_queue->type & EFX_TXQ_TYPE_OUTER_CSUM; in efx_mcdi_tx_init() 168 bool inner_csum = tx_queue->type & EFX_TXQ_TYPE_INNER_CSUM; in efx_mcdi_tx_init() 169 size_t entries = tx_queue->txd.len / EFX_BUF_SIZE; in efx_mcdi_tx_init() 170 struct efx_channel *channel = tx_queue->channel; in efx_mcdi_tx_init() 171 struct efx_nic *efx = tx_queue->efx; in efx_mcdi_tx_init() 178 MCDI_SET_DWORD(inbuf, INIT_TXQ_IN_SIZE, tx_queue->ptr_mask + 1); in efx_mcdi_tx_init() 180 MCDI_SET_DWORD(inbuf, INIT_TXQ_IN_LABEL, tx_queue->label); in efx_mcdi_tx_init() 181 MCDI_SET_DWORD(inbuf, INIT_TXQ_IN_INSTANCE, tx_queue->queue); in efx_mcdi_tx_init() 185 dma_addr = tx_queue in efx_mcdi_tx_init() 241 efx_mcdi_tx_remove(struct efx_tx_queue *tx_queue) efx_mcdi_tx_remove() argument 246 efx_mcdi_tx_fini(struct efx_tx_queue *tx_queue) efx_mcdi_tx_fini() argument 357 struct efx_tx_queue *tx_queue; efx_fini_dmaq() local [all...] |
/kernel/linux/linux-5.10/drivers/net/ethernet/sfc/ |
H A D | tx_common.c | 16 static unsigned int efx_tx_cb_page_count(struct efx_tx_queue *tx_queue) in efx_tx_cb_page_count() argument 18 return DIV_ROUND_UP(tx_queue->ptr_mask + 1, in efx_tx_cb_page_count() 22 int efx_probe_tx_queue(struct efx_tx_queue *tx_queue) in efx_probe_tx_queue() argument 24 struct efx_nic *efx = tx_queue->efx; in efx_probe_tx_queue() 31 tx_queue->ptr_mask = entries - 1; in efx_probe_tx_queue() 35 tx_queue->queue, efx->txq_entries, tx_queue->ptr_mask); in efx_probe_tx_queue() 38 tx_queue->buffer = kcalloc(entries, sizeof(*tx_queue->buffer), in efx_probe_tx_queue() 40 if (!tx_queue in efx_probe_tx_queue() 67 efx_init_tx_queue(struct efx_tx_queue *tx_queue) efx_init_tx_queue() argument 97 efx_fini_tx_queue(struct efx_tx_queue *tx_queue) efx_fini_tx_queue() argument 120 efx_remove_tx_queue(struct efx_tx_queue *tx_queue) efx_remove_tx_queue() argument 144 efx_dequeue_buffer(struct efx_tx_queue *tx_queue, struct efx_tx_buffer *buffer, unsigned int *pkts_compl, unsigned int *bytes_compl) efx_dequeue_buffer() argument 197 efx_dequeue_buffers(struct efx_tx_queue *tx_queue, unsigned int index, unsigned int *pkts_compl, unsigned int *bytes_compl) efx_dequeue_buffers() argument 226 efx_xmit_done_check_empty(struct efx_tx_queue *tx_queue) efx_xmit_done_check_empty() argument 239 efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index) efx_xmit_done() argument 272 efx_enqueue_unwind(struct efx_tx_queue *tx_queue, unsigned int insert_count) efx_enqueue_unwind() argument 287 efx_tx_map_chunk(struct efx_tx_queue *tx_queue, dma_addr_t dma_addr, size_t len) efx_tx_map_chunk() argument 329 efx_tx_map_data(struct efx_tx_queue *tx_queue, struct sk_buff *skb, unsigned int segment_count) efx_tx_map_data() argument 431 efx_tx_tso_fallback(struct efx_tx_queue *tx_queue, struct sk_buff *skb) efx_tx_tso_fallback() argument [all...] |
H A D | ef100_tx.c | 23 int ef100_tx_probe(struct efx_tx_queue *tx_queue) in ef100_tx_probe() argument 26 return efx_nic_alloc_buffer(tx_queue->efx, &tx_queue->txd.buf, in ef100_tx_probe() 27 (tx_queue->ptr_mask + 2) * in ef100_tx_probe() 32 void ef100_tx_init(struct efx_tx_queue *tx_queue) in ef100_tx_init() argument 35 tx_queue->core_txq = in ef100_tx_init() 36 netdev_get_tx_queue(tx_queue->efx->net_dev, in ef100_tx_init() 37 tx_queue->channel->channel - in ef100_tx_init() 38 tx_queue->efx->tx_channel_offset); in ef100_tx_init() 46 tx_queue in ef100_tx_init() 52 ef100_tx_can_tso(struct efx_tx_queue *tx_queue, struct sk_buff *skb) ef100_tx_can_tso() argument 118 ef100_tx_desc(struct efx_tx_queue *tx_queue, unsigned int index) ef100_tx_desc() argument 126 ef100_notify_tx_desc(struct efx_tx_queue *tx_queue) ef100_notify_tx_desc() argument 144 ef100_tx_push_buffers(struct efx_tx_queue *tx_queue) ef100_tx_push_buffers() argument 239 ef100_tx_make_descriptors(struct efx_tx_queue *tx_queue, const struct sk_buff *skb, unsigned int segment_count) ef100_tx_make_descriptors() argument 309 ef100_tx_write(struct efx_tx_queue *tx_queue) ef100_tx_write() argument 321 struct efx_tx_queue *tx_queue = ef100_ev_tx() local 336 ef100_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb) ef100_enqueue_skb() argument [all...] |
H A D | tx.c | 34 static inline u8 *efx_tx_get_copy_buffer(struct efx_tx_queue *tx_queue, in efx_tx_get_copy_buffer() argument 37 unsigned int index = efx_tx_queue_get_insert_index(tx_queue); in efx_tx_get_copy_buffer() 39 &tx_queue->cb_page[index >> (PAGE_SHIFT - EFX_TX_CB_ORDER)]; in efx_tx_get_copy_buffer() 44 efx_nic_alloc_buffer(tx_queue->efx, page_buf, PAGE_SIZE, in efx_tx_get_copy_buffer() 52 u8 *efx_tx_get_copy_buffer_limited(struct efx_tx_queue *tx_queue, in efx_tx_get_copy_buffer_limited() argument 57 return efx_tx_get_copy_buffer(tx_queue, buffer); in efx_tx_get_copy_buffer_limited() 99 static int efx_enqueue_skb_copy(struct efx_tx_queue *tx_queue, in efx_enqueue_skb_copy() argument 109 buffer = efx_tx_queue_get_insert_buffer(tx_queue); in efx_enqueue_skb_copy() 111 copy_buffer = efx_tx_get_copy_buffer(tx_queue, buffer); in efx_enqueue_skb_copy() 122 ++tx_queue in efx_enqueue_skb_copy() 220 efx_enqueue_skb_pio(struct efx_tx_queue *tx_queue, struct sk_buff *skb) efx_enqueue_skb_pio() argument 276 efx_tx_may_pio(struct efx_tx_queue *tx_queue) efx_tx_may_pio() argument 322 __efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb) __efx_enqueue_skb() argument 433 struct efx_tx_queue *tx_queue; efx_xdp_tx_buffers() local 513 struct efx_tx_queue *tx_queue; efx_hard_start_xmit() local 555 efx_xmit_done_single(struct efx_tx_queue *tx_queue) efx_xmit_done_single() argument 593 efx_init_tx_queue_core_txq(struct efx_tx_queue *tx_queue) efx_init_tx_queue_core_txq() argument [all...] |
H A D | tx_common.h | 14 int efx_probe_tx_queue(struct efx_tx_queue *tx_queue); 15 void efx_init_tx_queue(struct efx_tx_queue *tx_queue); 16 void efx_fini_tx_queue(struct efx_tx_queue *tx_queue); 17 void efx_remove_tx_queue(struct efx_tx_queue *tx_queue); 19 void efx_dequeue_buffer(struct efx_tx_queue *tx_queue, 29 void efx_xmit_done_check_empty(struct efx_tx_queue *tx_queue); 30 void efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index); 32 void efx_enqueue_unwind(struct efx_tx_queue *tx_queue, 35 struct efx_tx_buffer *efx_tx_map_chunk(struct efx_tx_queue *tx_queue, 38 int efx_tx_map_data(struct efx_tx_queue *tx_queue, struc [all...] |
H A D | nic_common.h | 60 efx_tx_desc(struct efx_tx_queue *tx_queue, unsigned int index) in efx_tx_desc() argument 62 return ((efx_qword_t *) (tx_queue->txd.buf.addr)) + index; in efx_tx_desc() 68 static inline bool efx_nic_tx_is_empty(struct efx_tx_queue *tx_queue, unsigned int write_count) in efx_nic_tx_is_empty() argument 70 unsigned int empty_read_count = READ_ONCE(tx_queue->empty_read_count); in efx_nic_tx_is_empty() 78 int efx_enqueue_skb_tso(struct efx_tx_queue *tx_queue, struct sk_buff *skb, 89 static inline bool efx_nic_may_push_tx_desc(struct efx_tx_queue *tx_queue, in efx_nic_may_push_tx_desc() argument 92 bool was_empty = efx_nic_tx_is_empty(tx_queue, write_count); in efx_nic_may_push_tx_desc() 94 tx_queue->empty_read_count = 0; in efx_nic_may_push_tx_desc() 95 return was_empty && tx_queue->write_count - write_count == 1; in efx_nic_may_push_tx_desc() 121 static inline int efx_nic_probe_tx(struct efx_tx_queue *tx_queue) in efx_nic_probe_tx() argument 125 efx_nic_init_tx(struct efx_tx_queue *tx_queue) efx_nic_init_tx() argument 129 efx_nic_remove_tx(struct efx_tx_queue *tx_queue) efx_nic_remove_tx() argument 134 efx_nic_push_buffers(struct efx_tx_queue *tx_queue) efx_nic_push_buffers() argument [all...] |
H A D | tx_tso.c | 79 static inline void prefetch_ptr(struct efx_tx_queue *tx_queue) in prefetch_ptr() argument 81 unsigned int insert_ptr = efx_tx_queue_get_insert_index(tx_queue); in prefetch_ptr() 84 ptr = (char *) (tx_queue->buffer + insert_ptr); in prefetch_ptr() 88 ptr = (char *) (((efx_qword_t *)tx_queue->txd.buf.addr) + insert_ptr); in prefetch_ptr() 95 * @tx_queue: Efx TX queue 102 static void efx_tx_queue_insert(struct efx_tx_queue *tx_queue, in efx_tx_queue_insert() argument 112 buffer = efx_tx_queue_get_insert_buffer(tx_queue); in efx_tx_queue_insert() 113 ++tx_queue->insert_count; in efx_tx_queue_insert() 115 EFX_WARN_ON_ONCE_PARANOID(tx_queue->insert_count - in efx_tx_queue_insert() 116 tx_queue in efx_tx_queue_insert() 169 tso_start(struct tso_state *st, struct efx_nic *efx, struct efx_tx_queue *tx_queue, const struct sk_buff *skb) tso_start() argument 232 tso_fill_packet_with_fragment(struct efx_tx_queue *tx_queue, const struct sk_buff *skb, struct tso_state *st) tso_fill_packet_with_fragment() argument 285 tso_start_new_packet(struct efx_tx_queue *tx_queue, const struct sk_buff *skb, struct tso_state *st) tso_start_new_packet() argument 362 efx_enqueue_skb_tso(struct efx_tx_queue *tx_queue, struct sk_buff *skb, bool *data_mapped) efx_enqueue_skb_tso() argument [all...] |
H A D | mcdi_functions.c | 163 int efx_mcdi_tx_init(struct efx_tx_queue *tx_queue) in efx_mcdi_tx_init() argument 167 bool csum_offload = tx_queue->type & EFX_TXQ_TYPE_OUTER_CSUM; in efx_mcdi_tx_init() 168 bool inner_csum = tx_queue->type & EFX_TXQ_TYPE_INNER_CSUM; in efx_mcdi_tx_init() 169 size_t entries = tx_queue->txd.buf.len / EFX_BUF_SIZE; in efx_mcdi_tx_init() 170 struct efx_channel *channel = tx_queue->channel; in efx_mcdi_tx_init() 171 struct efx_nic *efx = tx_queue->efx; in efx_mcdi_tx_init() 178 MCDI_SET_DWORD(inbuf, INIT_TXQ_IN_SIZE, tx_queue->ptr_mask + 1); in efx_mcdi_tx_init() 180 MCDI_SET_DWORD(inbuf, INIT_TXQ_IN_LABEL, tx_queue->label); in efx_mcdi_tx_init() 181 MCDI_SET_DWORD(inbuf, INIT_TXQ_IN_INSTANCE, tx_queue->queue); in efx_mcdi_tx_init() 185 dma_addr = tx_queue in efx_mcdi_tx_init() 241 efx_mcdi_tx_remove(struct efx_tx_queue *tx_queue) efx_mcdi_tx_remove() argument 246 efx_mcdi_tx_fini(struct efx_tx_queue *tx_queue) efx_mcdi_tx_fini() argument 357 struct efx_tx_queue *tx_queue; efx_fini_dmaq() local [all...] |
H A D | efx_channels.c | 513 struct efx_tx_queue *tx_queue; in efx_alloc_channel() local 526 tx_queue = &channel->tx_queue[j]; in efx_alloc_channel() 527 tx_queue->efx = efx; in efx_alloc_channel() 528 tx_queue->queue = -1; in efx_alloc_channel() 529 tx_queue->label = j; in efx_alloc_channel() 530 tx_queue->channel = channel; in efx_alloc_channel() 583 struct efx_tx_queue *tx_queue; in efx_copy_channel() local 600 tx_queue = &channel->tx_queue[ in efx_copy_channel() 621 struct efx_tx_queue *tx_queue; efx_probe_channel() local 723 struct efx_tx_queue *tx_queue; efx_remove_channel() local 765 struct efx_tx_queue *tx_queue; efx_realloc_channels() local 857 struct efx_tx_queue *tx_queue; efx_set_channels() local 1054 struct efx_tx_queue *tx_queue; efx_start_channels() local 1078 struct efx_tx_queue *tx_queue; efx_stop_channels() local 1135 struct efx_tx_queue *tx_queue; efx_process_channel() local [all...] |
/kernel/linux/linux-6.6/drivers/net/ethernet/sfc/siena/ |
H A D | tx_common.c | 17 static unsigned int efx_tx_cb_page_count(struct efx_tx_queue *tx_queue) in efx_tx_cb_page_count() argument 19 return DIV_ROUND_UP(tx_queue->ptr_mask + 1, in efx_tx_cb_page_count() 23 int efx_siena_probe_tx_queue(struct efx_tx_queue *tx_queue) in efx_siena_probe_tx_queue() argument 25 struct efx_nic *efx = tx_queue->efx; in efx_siena_probe_tx_queue() 32 tx_queue->ptr_mask = entries - 1; in efx_siena_probe_tx_queue() 36 tx_queue->queue, efx->txq_entries, tx_queue->ptr_mask); in efx_siena_probe_tx_queue() 39 tx_queue->buffer = kcalloc(entries, sizeof(*tx_queue->buffer), in efx_siena_probe_tx_queue() 41 if (!tx_queue in efx_siena_probe_tx_queue() 68 efx_siena_init_tx_queue(struct efx_tx_queue *tx_queue) efx_siena_init_tx_queue() argument 98 efx_siena_remove_tx_queue(struct efx_tx_queue *tx_queue) efx_siena_remove_tx_queue() argument 122 efx_dequeue_buffer(struct efx_tx_queue *tx_queue, struct efx_tx_buffer *buffer, unsigned int *pkts_compl, unsigned int *bytes_compl) efx_dequeue_buffer() argument 170 efx_siena_fini_tx_queue(struct efx_tx_queue *tx_queue) efx_siena_fini_tx_queue() argument 198 efx_dequeue_buffers(struct efx_tx_queue *tx_queue, unsigned int index, unsigned int *pkts_compl, unsigned int *bytes_compl) efx_dequeue_buffers() argument 227 efx_siena_xmit_done_check_empty(struct efx_tx_queue *tx_queue) efx_siena_xmit_done_check_empty() argument 240 efx_siena_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index) efx_siena_xmit_done() argument 273 efx_siena_enqueue_unwind(struct efx_tx_queue *tx_queue, unsigned int insert_count) efx_siena_enqueue_unwind() argument 288 efx_siena_tx_map_chunk(struct efx_tx_queue *tx_queue, dma_addr_t dma_addr, size_t len) efx_siena_tx_map_chunk() argument 330 efx_siena_tx_map_data(struct efx_tx_queue *tx_queue, struct sk_buff *skb, unsigned int segment_count) efx_siena_tx_map_data() argument 432 efx_siena_tx_tso_fallback(struct efx_tx_queue *tx_queue, struct sk_buff *skb) efx_siena_tx_tso_fallback() argument [all...] |
H A D | tx.c | 26 static inline u8 *efx_tx_get_copy_buffer(struct efx_tx_queue *tx_queue, in efx_tx_get_copy_buffer() argument 29 unsigned int index = efx_tx_queue_get_insert_index(tx_queue); in efx_tx_get_copy_buffer() 31 &tx_queue->cb_page[index >> (PAGE_SHIFT - EFX_TX_CB_ORDER)]; in efx_tx_get_copy_buffer() 36 efx_siena_alloc_buffer(tx_queue->efx, page_buf, PAGE_SIZE, in efx_tx_get_copy_buffer() 83 static int efx_enqueue_skb_copy(struct efx_tx_queue *tx_queue, in efx_enqueue_skb_copy() argument 93 buffer = efx_tx_queue_get_insert_buffer(tx_queue); in efx_enqueue_skb_copy() 95 copy_buffer = efx_tx_get_copy_buffer(tx_queue, buffer); in efx_enqueue_skb_copy() 106 ++tx_queue->insert_count; in efx_enqueue_skb_copy() 139 netdev_tx_t __efx_siena_enqueue_skb(struct efx_tx_queue *tx_queue, in __efx_siena_enqueue_skb() argument 142 unsigned int old_insert_count = tx_queue in __efx_siena_enqueue_skb() 212 struct efx_tx_queue *tx_queue; efx_siena_xdp_tx_buffers() local 303 struct efx_tx_queue *tx_queue; efx_siena_hard_start_xmit() local 346 efx_siena_init_tx_queue_core_txq(struct efx_tx_queue *tx_queue) efx_siena_init_tx_queue_core_txq() argument [all...] |
H A D | nic_common.h | 60 efx_tx_desc(struct efx_tx_queue *tx_queue, unsigned int index) in efx_tx_desc() argument 62 return ((efx_qword_t *) (tx_queue->txd.buf.addr)) + index; in efx_tx_desc() 68 static inline bool efx_nic_tx_is_empty(struct efx_tx_queue *tx_queue, unsigned int write_count) in efx_nic_tx_is_empty() argument 70 unsigned int empty_read_count = READ_ONCE(tx_queue->empty_read_count); in efx_nic_tx_is_empty() 86 static inline bool efx_nic_may_push_tx_desc(struct efx_tx_queue *tx_queue, in efx_nic_may_push_tx_desc() argument 89 bool was_empty = efx_nic_tx_is_empty(tx_queue, write_count); in efx_nic_may_push_tx_desc() 91 tx_queue->empty_read_count = 0; in efx_nic_may_push_tx_desc() 92 return was_empty && tx_queue->write_count - write_count == 1; in efx_nic_may_push_tx_desc() 118 static inline int efx_nic_probe_tx(struct efx_tx_queue *tx_queue) in efx_nic_probe_tx() argument 120 return tx_queue in efx_nic_probe_tx() 122 efx_nic_init_tx(struct efx_tx_queue *tx_queue) efx_nic_init_tx() argument 126 efx_nic_remove_tx(struct efx_tx_queue *tx_queue) efx_nic_remove_tx() argument 131 efx_nic_push_buffers(struct efx_tx_queue *tx_queue) efx_nic_push_buffers() argument [all...] |
H A D | tx_common.h | 14 int efx_siena_probe_tx_queue(struct efx_tx_queue *tx_queue); 15 void efx_siena_init_tx_queue(struct efx_tx_queue *tx_queue); 16 void efx_siena_fini_tx_queue(struct efx_tx_queue *tx_queue); 17 void efx_siena_remove_tx_queue(struct efx_tx_queue *tx_queue); 24 void efx_siena_xmit_done_check_empty(struct efx_tx_queue *tx_queue); 25 void efx_siena_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index); 27 void efx_siena_enqueue_unwind(struct efx_tx_queue *tx_queue, 30 struct efx_tx_buffer *efx_siena_tx_map_chunk(struct efx_tx_queue *tx_queue, 32 int efx_siena_tx_map_data(struct efx_tx_queue *tx_queue, struct sk_buff *skb, 36 int efx_siena_tx_tso_fallback(struct efx_tx_queue *tx_queue, struc [all...] |
H A D | efx_channels.c | 182 "XDP_TX and XDP_REDIRECT will work with reduced performance (%d cpus/tx_queue)\n", in efx_allocate_msix_channels() 535 struct efx_tx_queue *tx_queue; in efx_alloc_channel() local 548 tx_queue = &channel->tx_queue[j]; in efx_alloc_channel() 549 tx_queue->efx = efx; in efx_alloc_channel() 550 tx_queue->queue = -1; in efx_alloc_channel() 551 tx_queue->label = j; in efx_alloc_channel() 552 tx_queue->channel = channel; in efx_alloc_channel() 606 struct efx_tx_queue *tx_queue; in efx_copy_channel() local 623 tx_queue in efx_copy_channel() 644 struct efx_tx_queue *tx_queue; efx_probe_channel() local 747 struct efx_tx_queue *tx_queue; efx_siena_remove_channel() local 771 efx_set_xdp_tx_queue(struct efx_nic *efx, int xdp_queue_number, struct efx_tx_queue *tx_queue) efx_set_xdp_tx_queue() argument 787 struct efx_tx_queue *tx_queue; efx_set_xdp_channels() local 872 struct efx_tx_queue *tx_queue; efx_siena_realloc_channels() local 1123 struct efx_tx_queue *tx_queue; efx_siena_start_channels() local 1147 struct efx_tx_queue *tx_queue; efx_siena_stop_channels() local 1204 struct efx_tx_queue *tx_queue; efx_process_channel() local [all...] |