/Linux-v5.10/drivers/net/ethernet/sfc/ |
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->buffer) in efx_probe_tx_queue() 43 tx_queue->cb_page = kcalloc(efx_tx_cb_page_count(tx_queue), in efx_probe_tx_queue() 44 sizeof(tx_queue->cb_page[0]), GFP_KERNEL); in efx_probe_tx_queue() [all …]
|
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->tso_version = 3; in ef100_tx_init() 47 if (efx_mcdi_tx_init(tx_queue)) in ef100_tx_init() [all …]
|
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->insert_count; in efx_enqueue_skb_copy() [all …]
|
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, struct sk_buff *skb, [all …]
|
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 [all …]
|
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() 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->read_count >= in efx_tx_queue_insert() 117 tx_queue->efx->txq_entries); in efx_tx_queue_insert() [all …]
|
D | efx_channels.c | 511 struct efx_tx_queue *tx_queue; in efx_alloc_channel() local 524 tx_queue = &channel->tx_queue[j]; in efx_alloc_channel() 525 tx_queue->efx = efx; in efx_alloc_channel() 526 tx_queue->queue = -1; in efx_alloc_channel() 527 tx_queue->label = j; in efx_alloc_channel() 528 tx_queue->channel = channel; in efx_alloc_channel() 581 struct efx_tx_queue *tx_queue; in efx_copy_channel() local 598 tx_queue = &channel->tx_queue[j]; in efx_copy_channel() 599 if (tx_queue->channel) in efx_copy_channel() 600 tx_queue->channel = channel; in efx_copy_channel() [all …]
|
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->txd.buf.dma_addr; in efx_mcdi_tx_init() [all …]
|
D | farch.c | 282 static inline void efx_farch_notify_tx_desc(struct efx_tx_queue *tx_queue) in efx_farch_notify_tx_desc() argument 287 write_ptr = tx_queue->write_count & tx_queue->ptr_mask; in efx_farch_notify_tx_desc() 289 efx_writed_page(tx_queue->efx, ®, in efx_farch_notify_tx_desc() 290 FR_AZ_TX_DESC_UPD_DWORD_P0, tx_queue->queue); in efx_farch_notify_tx_desc() 294 static inline void efx_farch_push_tx_desc(struct efx_tx_queue *tx_queue, in efx_farch_push_tx_desc() argument 303 write_ptr = tx_queue->write_count & tx_queue->ptr_mask; in efx_farch_push_tx_desc() 307 efx_writeo_page(tx_queue->efx, ®, in efx_farch_push_tx_desc() 308 FR_BZ_TX_DESC_UPD_P0, tx_queue->queue); in efx_farch_push_tx_desc() 316 void efx_farch_tx_write(struct efx_tx_queue *tx_queue) in efx_farch_tx_write() argument 321 unsigned old_write_count = tx_queue->write_count; in efx_farch_tx_write() [all …]
|
D | ef100_tx.h | 17 int ef100_tx_probe(struct efx_tx_queue *tx_queue); 18 void ef100_tx_init(struct efx_tx_queue *tx_queue); 19 void ef100_tx_write(struct efx_tx_queue *tx_queue); 24 netdev_tx_t ef100_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb);
|
D | net_driver.h | 549 struct efx_tx_queue tx_queue[EFX_MAX_TXQ_PER_CHANNEL]; member 1353 int (*tx_probe)(struct efx_tx_queue *tx_queue); 1354 void (*tx_init)(struct efx_tx_queue *tx_queue); 1355 void (*tx_remove)(struct efx_tx_queue *tx_queue); 1356 void (*tx_write)(struct efx_tx_queue *tx_queue); 1357 netdev_tx_t (*tx_enqueue)(struct efx_tx_queue *tx_queue, struct sk_buff *skb); 1358 unsigned int (*tx_limit_len)(struct efx_tx_queue *tx_queue, 1555 for (_tx_queue = (_channel)->tx_queue; \ 1556 _tx_queue < (_channel)->tx_queue + \ 1644 struct efx_tx_queue *tx_queue; in efx_channel_tx_fill_level() local [all …]
|
D | selftest.c | 408 static int efx_begin_loopback(struct efx_tx_queue *tx_queue) in efx_begin_loopback() argument 410 struct efx_nic *efx = tx_queue->efx; in efx_begin_loopback() 438 rc = efx_enqueue_skb(tx_queue, skb); in efx_begin_loopback() 444 "%d in %s loopback test\n", tx_queue->label, in efx_begin_loopback() 464 static int efx_end_loopback(struct efx_tx_queue *tx_queue, in efx_end_loopback() argument 467 struct efx_nic *efx = tx_queue->efx; in efx_end_loopback() 496 tx_queue->label, tx_done, state->packet_count, in efx_end_loopback() 507 tx_queue->label, rx_good, state->packet_count, in efx_end_loopback() 514 lb_tests->tx_sent[tx_queue->label] += state->packet_count; in efx_end_loopback() 515 lb_tests->tx_done[tx_queue->label] += tx_done; in efx_end_loopback() [all …]
|
D | ef10.c | 780 struct efx_tx_queue *tx_queue; in efx_ef10_link_piobufs() local 817 efx_for_each_channel_tx_queue(tx_queue, channel) { in efx_ef10_link_piobufs() 823 tx_queue->channel->channel - 1) * in efx_ef10_link_piobufs() 833 if (tx_queue->queue == nic_data->pio_write_vi_base) { in efx_ef10_link_piobufs() 842 tx_queue->queue); in efx_ef10_link_piobufs() 854 tx_queue->queue, index, rc); in efx_ef10_link_piobufs() 855 tx_queue->piobuf = NULL; in efx_ef10_link_piobufs() 857 tx_queue->piobuf = in efx_ef10_link_piobufs() 860 tx_queue->piobuf_offset = offset; in efx_ef10_link_piobufs() 863 tx_queue->queue, index, in efx_ef10_link_piobufs() [all …]
|
D | efx.h | 21 void efx_init_tx_queue_core_txq(struct efx_tx_queue *tx_queue); 24 netdev_tx_t __efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb); 25 static inline netdev_tx_t efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb) in efx_enqueue_skb() argument 27 return INDIRECT_CALL_2(tx_queue->efx->type->tx_enqueue, in efx_enqueue_skb() 29 tx_queue, skb); in efx_enqueue_skb() 31 void efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index); 32 void efx_xmit_done_single(struct efx_tx_queue *tx_queue);
|
D | mcdi_functions.h | 22 int efx_mcdi_tx_init(struct efx_tx_queue *tx_queue); 23 void efx_mcdi_tx_remove(struct efx_tx_queue *tx_queue); 24 void efx_mcdi_tx_fini(struct efx_tx_queue *tx_queue);
|
/Linux-v5.10/drivers/net/ethernet/sfc/falcon/ |
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->efx->net_dev, in ef4_dequeue_buffer() 74 tx_queue->queue, tx_queue->read_count); in ef4_dequeue_buffer() [all …]
|
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_count); in ef4_nic_may_push_tx_desc() [all …]
|
D | farch.c | 272 static inline void ef4_farch_notify_tx_desc(struct ef4_tx_queue *tx_queue) in ef4_farch_notify_tx_desc() argument 277 write_ptr = tx_queue->write_count & tx_queue->ptr_mask; in ef4_farch_notify_tx_desc() 279 ef4_writed_page(tx_queue->efx, ®, in ef4_farch_notify_tx_desc() 280 FR_AZ_TX_DESC_UPD_DWORD_P0, tx_queue->queue); in ef4_farch_notify_tx_desc() 284 static inline void ef4_farch_push_tx_desc(struct ef4_tx_queue *tx_queue, in ef4_farch_push_tx_desc() argument 293 write_ptr = tx_queue->write_count & tx_queue->ptr_mask; in ef4_farch_push_tx_desc() 297 ef4_writeo_page(tx_queue->efx, ®, in ef4_farch_push_tx_desc() 298 FR_BZ_TX_DESC_UPD_P0, tx_queue->queue); in ef4_farch_push_tx_desc() 306 void ef4_farch_tx_write(struct ef4_tx_queue *tx_queue) in ef4_farch_tx_write() argument 311 unsigned old_write_count = tx_queue->write_count; in ef4_farch_tx_write() [all …]
|
D | net_driver.h | 445 struct ef4_tx_queue tx_queue[EF4_TXQ_TYPES]; member 1082 int (*tx_probe)(struct ef4_tx_queue *tx_queue); 1083 void (*tx_init)(struct ef4_tx_queue *tx_queue); 1084 void (*tx_remove)(struct ef4_tx_queue *tx_queue); 1085 void (*tx_write)(struct ef4_tx_queue *tx_queue); 1086 unsigned int (*tx_limit_len)(struct ef4_tx_queue *tx_queue, 1192 return &efx->channel[efx->tx_channel_offset + index]->tx_queue[type]; in ef4_get_tx_queue() 1206 return &channel->tx_queue[type]; in ef4_channel_get_tx_queue() 1209 static inline bool ef4_tx_queue_used(struct ef4_tx_queue *tx_queue) in ef4_tx_queue_used() argument 1211 return !(tx_queue->efx->net_dev->num_tc < 2 && in ef4_tx_queue_used() [all …]
|
D | selftest.c | 410 static int ef4_begin_loopback(struct ef4_tx_queue *tx_queue) in ef4_begin_loopback() argument 412 struct ef4_nic *efx = tx_queue->efx; in ef4_begin_loopback() 440 rc = ef4_enqueue_skb(tx_queue, skb); in ef4_begin_loopback() 446 "%d in %s loopback test\n", tx_queue->queue, in ef4_begin_loopback() 466 static int ef4_end_loopback(struct ef4_tx_queue *tx_queue, in ef4_end_loopback() argument 469 struct ef4_nic *efx = tx_queue->efx; in ef4_end_loopback() 498 tx_queue->queue, tx_done, state->packet_count, in ef4_end_loopback() 509 tx_queue->queue, rx_good, state->packet_count, in ef4_end_loopback() 516 lb_tests->tx_sent[tx_queue->queue] += state->packet_count; in ef4_end_loopback() 517 lb_tests->tx_done[tx_queue->queue] += tx_done; in ef4_end_loopback() [all …]
|
D | tx.h | 15 unsigned int ef4_tx_limit_len(struct ef4_tx_queue *tx_queue, 18 u8 *ef4_tx_get_copy_buffer_limited(struct ef4_tx_queue *tx_queue, 21 int ef4_enqueue_skb_tso(struct ef4_tx_queue *tx_queue, struct sk_buff *skb,
|
D | efx.h | 23 int ef4_probe_tx_queue(struct ef4_tx_queue *tx_queue); 24 void ef4_remove_tx_queue(struct ef4_tx_queue *tx_queue); 25 void ef4_init_tx_queue(struct ef4_tx_queue *tx_queue); 26 void ef4_init_tx_queue_core_txq(struct ef4_tx_queue *tx_queue); 27 void ef4_fini_tx_queue(struct ef4_tx_queue *tx_queue); 30 netdev_tx_t ef4_enqueue_skb(struct ef4_tx_queue *tx_queue, struct sk_buff *skb); 31 void ef4_xmit_done(struct ef4_tx_queue *tx_queue, unsigned int index);
|
/Linux-v5.10/drivers/net/ethernet/freescale/ |
D | gianfar.c | 134 gfar_write(baddr, priv->tx_queue[i]->tx_bd_dma_base); in gfar_init_tx_rx_base() 252 if (likely(priv->tx_queue[i]->txcoalescing)) in gfar_configure_coalescing() 253 gfar_write(baddr + i, priv->tx_queue[i]->txic); in gfar_configure_coalescing() 267 if (likely(priv->tx_queue[0]->txcoalescing)) in gfar_configure_coalescing() 268 gfar_write(®s->txic, priv->tx_queue[0]->txic); in gfar_configure_coalescing() 299 tx_bytes += priv->tx_queue[i]->stats.tx_bytes; in gfar_get_stats() 300 tx_packets += priv->tx_queue[i]->stats.tx_packets; in gfar_get_stats() 402 priv->tx_queue[i] = kzalloc(sizeof(struct gfar_priv_tx_q), in gfar_alloc_tx_queues() 404 if (!priv->tx_queue[i]) in gfar_alloc_tx_queues() 407 priv->tx_queue[i]->tx_skbuff = NULL; in gfar_alloc_tx_queues() [all …]
|
/Linux-v5.10/drivers/staging/wfx/ |
D | queue.c | 70 skb_queue_head_init(&wvif->tx_queue[i].normal); in wfx_tx_queues_init() 71 skb_queue_head_init(&wvif->tx_queue[i].cab); in wfx_tx_queues_init() 72 wvif->tx_queue[i].priority = priorities[i]; in wfx_tx_queues_init() 81 WARN_ON(atomic_read(&wvif->tx_queue[i].pending_frames)); in wfx_tx_queues_check_empty() 82 WARN_ON(!skb_queue_empty_lockless(&wvif->tx_queue[i].normal)); in wfx_tx_queues_check_empty() 83 WARN_ON(!skb_queue_empty_lockless(&wvif->tx_queue[i].cab)); in wfx_tx_queues_check_empty() 116 struct wfx_queue *queue = &wvif->tx_queue[skb_get_queue_mapping(skb)]; in wfx_tx_queues_put() 138 queue = &wvif->tx_queue[skb_get_queue_mapping(skb)]; in wfx_pending_drop() 164 queue = &wvif->tx_queue[skb_get_queue_mapping(skb)]; in wfx_pending_get() 222 if (!skb_queue_empty_lockless(&wvif->tx_queue[i].cab)) in wfx_tx_queues_has_cab() [all …]
|
/Linux-v5.10/drivers/net/wireless/rsi/ |
D | rsi_91x_core.c | 36 q_len = skb_queue_len(&common->tx_queue[ii]); in rsi_determine_min_weight_queue() 60 q_len = skb_queue_len(&common->tx_queue[ii]); in rsi_recalculate_weights() 106 if (skb_queue_len(&common->tx_queue[q_num])) in rsi_get_num_pkts_dequeue() 107 skb = skb_peek(&common->tx_queue[q_num]); in rsi_get_num_pkts_dequeue() 121 if (skb_queue_len(&common->tx_queue[q_num]) - pkt_cnt) in rsi_get_num_pkts_dequeue() 145 if (skb_queue_len(&common->tx_queue[MGMT_BEACON_Q])) { in rsi_core_determine_hal_queue() 149 if (skb_queue_len(&common->tx_queue[MGMT_SOFT_Q])) { in rsi_core_determine_hal_queue() 172 q_len = skb_queue_len(&common->tx_queue[ii]); in rsi_core_determine_hal_queue() 187 q_len = skb_queue_len(&common->tx_queue[q_num]); in rsi_core_determine_hal_queue() 201 q_len = skb_queue_len(&common->tx_queue[q_num]); in rsi_core_determine_hal_queue() [all …]
|