Lines Matching defs:channel

65 	_EF4_CHANNEL_MAGIC(_EF4_CHANNEL_MAGIC_TEST, (_channel)->channel)
76 static void ef4_farch_magic_event(struct ef4_channel *channel, u32 magic);
388 tx_queue->channel->channel,
550 ef4_rx_queue_channel(rx_queue)->channel,
618 struct ef4_channel *channel;
621 ef4_for_each_channel(channel, efx) {
622 ef4_for_each_channel_tx_queue(tx_queue, channel) {
645 ef4_farch_magic_event(channel,
657 * are no more RX and TX events left on any channel. */
661 struct ef4_channel *channel;
666 ef4_for_each_channel(channel, efx) {
667 ef4_for_each_channel_tx_queue(tx_queue, channel) {
670 ef4_for_each_channel_rx_queue(rx_queue, channel) {
681 ef4_for_each_channel(channel, efx) {
682 ef4_for_each_channel_rx_queue(rx_queue, channel) {
719 struct ef4_channel *channel;
733 ef4_for_each_channel(channel, efx) {
734 ef4_for_each_channel_rx_queue(rx_queue, channel)
736 ef4_for_each_channel_tx_queue(tx_queue, channel)
769 * Event queues are processed by per-channel tasklets.
773 /* Update a channel's event queue's read pointer (RPTR) register
775 * This writes the EVQ_RPTR_REG register for the specified channel's
778 void ef4_farch_ev_read_ack(struct ef4_channel *channel)
781 struct ef4_nic *efx = channel->efx;
784 channel->eventq_read_ptr & channel->eventq_mask);
791 FR_BZ_EVQ_RPTR_STEP * channel->channel);
810 static void ef4_farch_magic_event(struct ef4_channel *channel, u32 magic)
817 ef4_farch_generate_event(channel->efx, channel->channel, &event);
826 ef4_farch_handle_tx_event(struct ef4_channel *channel, ef4_qword_t *event)
831 struct ef4_nic *efx = channel->efx;
842 channel, tx_ev_q_label % EF4_TXQ_TYPES);
850 channel, tx_ev_q_label % EF4_TXQ_TYPES);
859 "channel %d unexpected TX event "
860 EF4_QWORD_FMT"\n", channel->channel,
871 struct ef4_channel *channel = ef4_rx_queue_channel(rx_queue);
895 ++channel->n_rx_frm_trunc;
897 ++channel->n_rx_tobe_disc;
900 ++channel->n_rx_ip_hdr_chksum_err;
902 ++channel->n_rx_tcp_udp_chksum_err;
949 struct ef4_channel *channel = ef4_rx_queue_channel(rx_queue);
956 ++channel->n_rx_nodesc_trunc;
979 ef4_farch_handle_rx_event(struct ef4_channel *channel, const ef4_qword_t *event)
987 struct ef4_nic *efx = channel->efx;
995 channel->channel);
997 rx_queue = ef4_channel_get_rx_queue(channel);
1070 ++channel->n_rx_mcast_mismatch;
1075 channel->irq_mod_score += 2;
1100 ef4_farch_magic_event(tx_queue->channel,
1113 struct ef4_channel *channel;
1122 channel = ef4_get_channel(efx, qid);
1123 if (!ef4_channel_has_rx_queue(channel))
1125 rx_queue = ef4_channel_get_rx_queue(channel);
1142 ef4_farch_handle_drain_event(struct ef4_channel *channel)
1144 struct ef4_nic *efx = channel->efx;
1152 static void ef4_farch_handle_generated_event(struct ef4_channel *channel,
1155 struct ef4_nic *efx = channel->efx;
1157 ef4_channel_has_rx_queue(channel) ?
1158 ef4_channel_get_rx_queue(channel) : NULL;
1164 if (magic == EF4_CHANNEL_MAGIC_TEST(channel)) {
1165 channel->event_test_cpu = raw_smp_processor_id();
1172 ef4_farch_handle_drain_event(channel);
1174 ef4_farch_handle_drain_event(channel);
1176 netif_dbg(efx, hw, efx->net_dev, "channel %d received "
1178 channel->channel, EF4_QWORD_VAL(*event));
1183 ef4_farch_handle_driver_event(struct ef4_channel *channel, ef4_qword_t *event)
1185 struct ef4_nic *efx = channel->efx;
1194 netif_vdbg(efx, hw, efx->net_dev, "channel %d TXQ %d flushed\n",
1195 channel->channel, ev_sub_data);
1199 netif_vdbg(efx, hw, efx->net_dev, "channel %d RXQ %d flushed\n",
1200 channel->channel, ev_sub_data);
1205 "channel %d EVQ %d initialised\n",
1206 channel->channel, ev_sub_data);
1210 "channel %d SRAM update done\n", channel->channel);
1214 "channel %d RXQ %d wakeup event\n",
1215 channel->channel, ev_sub_data);
1219 "channel %d RX queue %d timer expired\n",
1220 channel->channel, ev_sub_data);
1224 "channel %d seen DRIVER RX_RESET event. "
1225 "Resetting.\n", channel->channel);
1248 "channel %d unknown driver event code %d "
1249 "data %04x\n", channel->channel, ev_sub_code,
1255 int ef4_farch_ev_process(struct ef4_channel *channel, int budget)
1257 struct ef4_nic *efx = channel->efx;
1267 read_ptr = channel->eventq_read_ptr;
1270 p_event = ef4_event(channel, read_ptr);
1277 netif_vdbg(channel->efx, intr, channel->efx->net_dev,
1278 "channel %d event is "EF4_QWORD_FMT"\n",
1279 channel->channel, EF4_QWORD_VAL(event));
1290 ef4_farch_handle_rx_event(channel, &event);
1295 tx_packets += ef4_farch_handle_tx_event(channel,
1303 ef4_farch_handle_generated_event(channel, &event);
1306 ef4_farch_handle_driver_event(channel, &event);
1310 efx->type->handle_global_event(channel, &event))
1314 netif_err(channel->efx, hw, channel->efx->net_dev,
1315 "channel %d unknown event type %d (data "
1316 EF4_QWORD_FMT ")\n", channel->channel,
1322 channel->eventq_read_ptr = read_ptr;
1327 int ef4_farch_ev_probe(struct ef4_channel *channel)
1329 struct ef4_nic *efx = channel->efx;
1332 entries = channel->eventq_mask + 1;
1333 return ef4_alloc_special_buffer(efx, &channel->eventq,
1337 int ef4_farch_ev_init(struct ef4_channel *channel)
1340 struct ef4_nic *efx = channel->efx;
1343 "channel %d event queue in special buffers %d-%d\n",
1344 channel->channel, channel->eventq.index,
1345 channel->eventq.index + channel->eventq.entries - 1);
1348 ef4_init_special_buffer(efx, &channel->eventq);
1351 memset(channel->eventq.buf.addr, 0xff, channel->eventq.buf.len);
1356 FRF_AZ_EVQ_SIZE, __ffs(channel->eventq.entries),
1357 FRF_AZ_EVQ_BUF_BASE_ID, channel->eventq.index);
1359 channel->channel);
1364 void ef4_farch_ev_fini(struct ef4_channel *channel)
1367 struct ef4_nic *efx = channel->efx;
1372 channel->channel);
1375 ef4_fini_special_buffer(efx, &channel->eventq);
1379 void ef4_farch_ev_remove(struct ef4_channel *channel)
1381 ef4_free_special_buffer(channel->efx, &channel->eventq);
1385 void ef4_farch_ev_test_generate(struct ef4_channel *channel)
1387 ef4_farch_magic_event(channel, EF4_CHANNEL_MAGIC_TEST(channel));
1400 * queue processing is carried out by per-channel tasklets.
1506 struct ef4_channel *channel;
1538 ef4_for_each_channel(channel, efx) {
1540 ef4_schedule_channel_irq(channel);
1558 ef4_for_each_channel(channel, efx) {
1559 event = ef4_event(channel,
1560 channel->eventq_read_ptr);
1562 ef4_schedule_channel_irq(channel);
1564 ef4_farch_ev_read_ack(channel);
1606 /* Schedule processing of the channel */
1607 ef4_schedule_channel_irq(efx->channel[context->index]);
2153 /* If there's only one channel then disable RSS for non VF