Home
last modified time | relevance | path

Searched refs:tx_queue (Results 1 – 25 of 147) sorted by relevance

123456

/Linux-v5.10/drivers/net/ethernet/sfc/
Dtx_common.c16 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 …]
Def100_tx.c23 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 …]
Dtx.c34 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 …]
Dtx_common.h14 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 …]
Dnic_common.h60 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 …]
Dtx_tso.c79 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 …]
Defx_channels.c511 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 …]
Dmcdi_functions.c163 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 …]
Dfarch.c282 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, &reg, 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, &reg, 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 …]
Def100_tx.h17 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);
Dnet_driver.h549 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 …]
Dselftest.c408 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 …]
Def10.c780 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 …]
Defx.h21 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);
Dmcdi_functions.h22 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/
Dtx.c25 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 …]
Dnic.h63 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 …]
Dfarch.c272 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, &reg, 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, &reg, 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 …]
Dnet_driver.h445 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 …]
Dselftest.c410 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 …]
Dtx.h15 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,
Defx.h23 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/
Dgianfar.c134 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(&regs->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/
Dqueue.c70 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/
Drsi_91x_core.c36 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 …]

123456