Lines Matching refs:channel

70 	_EFX_CHANNEL_MAGIC(_EFX_CHANNEL_MAGIC_TEST, (_channel)->channel)
81 static void efx_farch_magic_event(struct efx_channel *channel, u32 magic);
384 tx_queue->channel->channel, in efx_farch_tx_init()
546 efx_rx_queue_channel(rx_queue)->channel, in efx_farch_rx_init()
614 struct efx_channel *channel; in efx_check_tx_flush_complete() local
617 efx_for_each_channel(channel, efx) { in efx_check_tx_flush_complete()
618 efx_for_each_channel_tx_queue(tx_queue, channel) { in efx_check_tx_flush_complete()
641 efx_farch_magic_event(channel, in efx_check_tx_flush_complete()
657 struct efx_channel *channel; in efx_farch_do_flush() local
662 efx_for_each_channel(channel, efx) { in efx_farch_do_flush()
663 efx_for_each_channel_tx_queue(tx_queue, channel) { in efx_farch_do_flush()
666 efx_for_each_channel_rx_queue(rx_queue, channel) { in efx_farch_do_flush()
687 efx_for_each_channel(channel, efx) { in efx_farch_do_flush()
688 efx_for_each_channel_rx_queue(rx_queue, channel) { in efx_farch_do_flush()
726 struct efx_channel *channel; in efx_farch_fini_dmaq() local
740 efx_for_each_channel(channel, efx) { in efx_farch_fini_dmaq()
741 efx_for_each_channel_rx_queue(rx_queue, channel) in efx_farch_fini_dmaq()
743 efx_for_each_channel_tx_queue(tx_queue, channel) in efx_farch_fini_dmaq()
785 void efx_farch_ev_read_ack(struct efx_channel *channel) in efx_farch_ev_read_ack() argument
788 struct efx_nic *efx = channel->efx; in efx_farch_ev_read_ack()
791 channel->eventq_read_ptr & channel->eventq_mask); in efx_farch_ev_read_ack()
798 FR_BZ_EVQ_RPTR_STEP * channel->channel); in efx_farch_ev_read_ack()
817 static void efx_farch_magic_event(struct efx_channel *channel, u32 magic) in efx_farch_magic_event() argument
824 efx_farch_generate_event(channel->efx, channel->channel, &event); in efx_farch_magic_event()
833 efx_farch_handle_tx_event(struct efx_channel *channel, efx_qword_t *event) in efx_farch_handle_tx_event() argument
838 struct efx_nic *efx = channel->efx; in efx_farch_handle_tx_event()
849 channel, tx_ev_q_label % EFX_TXQ_TYPES); in efx_farch_handle_tx_event()
857 channel, tx_ev_q_label % EFX_TXQ_TYPES); in efx_farch_handle_tx_event()
867 EFX_QWORD_FMT"\n", channel->channel, in efx_farch_handle_tx_event()
878 struct efx_channel *channel = efx_rx_queue_channel(rx_queue); in efx_farch_handle_rx_not_ok() local
911 ++channel->n_rx_frm_trunc; in efx_farch_handle_rx_not_ok()
913 ++channel->n_rx_tobe_disc; in efx_farch_handle_rx_not_ok()
916 ++channel->n_rx_ip_hdr_chksum_err; in efx_farch_handle_rx_not_ok()
918 ++channel->n_rx_tcp_udp_chksum_err; in efx_farch_handle_rx_not_ok()
957 struct efx_channel *channel = efx_rx_queue_channel(rx_queue); in efx_farch_handle_rx_bad_index() local
964 ++channel->n_rx_nodesc_trunc; in efx_farch_handle_rx_bad_index()
987 efx_farch_handle_rx_event(struct efx_channel *channel, const efx_qword_t *event) in efx_farch_handle_rx_event() argument
995 struct efx_nic *efx = channel->efx; in efx_farch_handle_rx_event()
1003 channel->channel); in efx_farch_handle_rx_event()
1005 rx_queue = efx_channel_get_rx_queue(channel); in efx_farch_handle_rx_event()
1078 ++channel->n_rx_mcast_mismatch; in efx_farch_handle_rx_event()
1083 channel->irq_mod_score += 2; in efx_farch_handle_rx_event()
1108 efx_farch_magic_event(tx_queue->channel, in efx_farch_handle_tx_flush_done()
1121 struct efx_channel *channel; in efx_farch_handle_rx_flush_done() local
1130 channel = efx_get_channel(efx, qid); in efx_farch_handle_rx_flush_done()
1131 if (!efx_channel_has_rx_queue(channel)) in efx_farch_handle_rx_flush_done()
1133 rx_queue = efx_channel_get_rx_queue(channel); in efx_farch_handle_rx_flush_done()
1150 efx_farch_handle_drain_event(struct efx_channel *channel) in efx_farch_handle_drain_event() argument
1152 struct efx_nic *efx = channel->efx; in efx_farch_handle_drain_event()
1160 static void efx_farch_handle_generated_event(struct efx_channel *channel, in efx_farch_handle_generated_event() argument
1163 struct efx_nic *efx = channel->efx; in efx_farch_handle_generated_event()
1165 efx_channel_has_rx_queue(channel) ? in efx_farch_handle_generated_event()
1166 efx_channel_get_rx_queue(channel) : NULL; in efx_farch_handle_generated_event()
1172 if (magic == EFX_CHANNEL_MAGIC_TEST(channel)) { in efx_farch_handle_generated_event()
1173 channel->event_test_cpu = raw_smp_processor_id(); in efx_farch_handle_generated_event()
1180 efx_farch_handle_drain_event(channel); in efx_farch_handle_generated_event()
1182 efx_farch_handle_drain_event(channel); in efx_farch_handle_generated_event()
1186 channel->channel, EFX_QWORD_VAL(*event)); in efx_farch_handle_generated_event()
1191 efx_farch_handle_driver_event(struct efx_channel *channel, efx_qword_t *event) in efx_farch_handle_driver_event() argument
1193 struct efx_nic *efx = channel->efx; in efx_farch_handle_driver_event()
1203 channel->channel, ev_sub_data); in efx_farch_handle_driver_event()
1211 channel->channel, ev_sub_data); in efx_farch_handle_driver_event()
1220 channel->channel, ev_sub_data); in efx_farch_handle_driver_event()
1224 "channel %d SRAM update done\n", channel->channel); in efx_farch_handle_driver_event()
1229 channel->channel, ev_sub_data); in efx_farch_handle_driver_event()
1234 channel->channel, ev_sub_data); in efx_farch_handle_driver_event()
1239 "Resetting.\n", channel->channel); in efx_farch_handle_driver_event()
1275 "data %04x\n", channel->channel, ev_sub_code, in efx_farch_handle_driver_event()
1281 int efx_farch_ev_process(struct efx_channel *channel, int budget) in efx_farch_ev_process() argument
1283 struct efx_nic *efx = channel->efx; in efx_farch_ev_process()
1293 read_ptr = channel->eventq_read_ptr; in efx_farch_ev_process()
1296 p_event = efx_event(channel, read_ptr); in efx_farch_ev_process()
1303 netif_vdbg(channel->efx, intr, channel->efx->net_dev, in efx_farch_ev_process()
1305 channel->channel, EFX_QWORD_VAL(event)); in efx_farch_ev_process()
1316 efx_farch_handle_rx_event(channel, &event); in efx_farch_ev_process()
1321 tx_packets += efx_farch_handle_tx_event(channel, in efx_farch_ev_process()
1329 efx_farch_handle_generated_event(channel, &event); in efx_farch_ev_process()
1332 efx_farch_handle_driver_event(channel, &event); in efx_farch_ev_process()
1336 efx_siena_sriov_event(channel, &event); in efx_farch_ev_process()
1340 efx_mcdi_process_event(channel, &event); in efx_farch_ev_process()
1344 efx->type->handle_global_event(channel, &event)) in efx_farch_ev_process()
1348 netif_err(channel->efx, hw, channel->efx->net_dev, in efx_farch_ev_process()
1350 EFX_QWORD_FMT ")\n", channel->channel, in efx_farch_ev_process()
1356 channel->eventq_read_ptr = read_ptr; in efx_farch_ev_process()
1361 int efx_farch_ev_probe(struct efx_channel *channel) in efx_farch_ev_probe() argument
1363 struct efx_nic *efx = channel->efx; in efx_farch_ev_probe()
1366 entries = channel->eventq_mask + 1; in efx_farch_ev_probe()
1367 return efx_alloc_special_buffer(efx, &channel->eventq, in efx_farch_ev_probe()
1371 int efx_farch_ev_init(struct efx_channel *channel) in efx_farch_ev_init() argument
1374 struct efx_nic *efx = channel->efx; in efx_farch_ev_init()
1378 channel->channel, channel->eventq.index, in efx_farch_ev_init()
1379 channel->eventq.index + channel->eventq.entries - 1); in efx_farch_ev_init()
1386 efx_writeo_table(efx, &reg, FR_BZ_TIMER_TBL, channel->channel); in efx_farch_ev_init()
1390 efx_init_special_buffer(efx, &channel->eventq); in efx_farch_ev_init()
1393 memset(channel->eventq.buf.addr, 0xff, channel->eventq.buf.len); in efx_farch_ev_init()
1398 FRF_AZ_EVQ_SIZE, __ffs(channel->eventq.entries), in efx_farch_ev_init()
1399 FRF_AZ_EVQ_BUF_BASE_ID, channel->eventq.index); in efx_farch_ev_init()
1401 channel->channel); in efx_farch_ev_init()
1406 void efx_farch_ev_fini(struct efx_channel *channel) in efx_farch_ev_fini() argument
1409 struct efx_nic *efx = channel->efx; in efx_farch_ev_fini()
1414 channel->channel); in efx_farch_ev_fini()
1416 efx_writeo_table(efx, &reg, FR_BZ_TIMER_TBL, channel->channel); in efx_farch_ev_fini()
1419 efx_fini_special_buffer(efx, &channel->eventq); in efx_farch_ev_fini()
1423 void efx_farch_ev_remove(struct efx_channel *channel) in efx_farch_ev_remove() argument
1425 efx_free_special_buffer(channel->efx, &channel->eventq); in efx_farch_ev_remove()
1429 void efx_farch_ev_test_generate(struct efx_channel *channel) in efx_farch_ev_test_generate() argument
1431 efx_farch_magic_event(channel, EFX_CHANNEL_MAGIC_TEST(channel)); in efx_farch_ev_test_generate()
1549 struct efx_channel *channel; in efx_farch_legacy_interrupt() local
1581 efx_for_each_channel(channel, efx) { in efx_farch_legacy_interrupt()
1583 efx_schedule_channel_irq(channel); in efx_farch_legacy_interrupt()
1601 efx_for_each_channel(channel, efx) { in efx_farch_legacy_interrupt()
1602 event = efx_event(channel, in efx_farch_legacy_interrupt()
1603 channel->eventq_read_ptr); in efx_farch_legacy_interrupt()
1605 efx_schedule_channel_irq(channel); in efx_farch_legacy_interrupt()
1607 efx_farch_ev_read_ack(channel); in efx_farch_legacy_interrupt()
1650 efx_schedule_channel_irq(efx->channel[context->index]); in efx_farch_msi_interrupt()