• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/sfc/

Lines Matching refs:rx_queue

502 efx_rx_desc(struct efx_rx_queue *rx_queue, unsigned int index)
504 return (((efx_qword_t *) (rx_queue->rxd.addr)) + index);
509 efx_build_rx_desc(struct efx_rx_queue *rx_queue, unsigned index)
514 rxd = efx_rx_desc(rx_queue, index);
515 rx_buf = efx_rx_buffer(rx_queue, index);
519 rx_queue->efx->type->rx_buffer_padding,
527 void efx_nic_notify_rx_desc(struct efx_rx_queue *rx_queue)
532 while (rx_queue->notified_count != rx_queue->added_count) {
533 efx_build_rx_desc(rx_queue,
534 rx_queue->notified_count &
536 ++rx_queue->notified_count;
540 write_ptr = rx_queue->added_count & EFX_RXQ_MASK;
542 efx_writed_page(rx_queue->efx, &reg,
543 FR_AZ_RX_DESC_UPD_DWORD_P0, rx_queue->queue);
546 int efx_nic_probe_rx(struct efx_rx_queue *rx_queue)
548 struct efx_nic *efx = rx_queue->efx;
551 return efx_alloc_special_buffer(efx, &rx_queue->rxd,
555 void efx_nic_init_rx(struct efx_rx_queue *rx_queue)
558 struct efx_nic *efx = rx_queue->efx;
564 rx_queue->queue, rx_queue->rxd.index,
565 rx_queue->rxd.index + rx_queue->rxd.entries - 1);
567 rx_queue->flushed = FLUSH_NONE;
570 efx_init_special_buffer(efx, &rx_queue->rxd);
576 FRF_AZ_RX_DESCQ_BUF_BASE_ID, rx_queue->rxd.index,
578 rx_queue->channel->channel,
580 FRF_AZ_RX_DESCQ_LABEL, rx_queue->queue,
582 __ffs(rx_queue->rxd.entries),
588 rx_queue->queue);
591 static void efx_flush_rx_queue(struct efx_rx_queue *rx_queue)
593 struct efx_nic *efx = rx_queue->efx;
596 rx_queue->flushed = FLUSH_PENDING;
601 FRF_AZ_RX_FLUSH_DESCQ, rx_queue->queue);
605 void efx_nic_fini_rx(struct efx_rx_queue *rx_queue)
608 struct efx_nic *efx = rx_queue->efx;
611 WARN_ON(rx_queue->flushed != FLUSH_DONE);
616 rx_queue->queue);
619 efx_fini_special_buffer(efx, &rx_queue->rxd);
623 void efx_nic_remove_rx(struct efx_rx_queue *rx_queue)
625 efx_free_special_buffer(rx_queue->efx, &rx_queue->rxd);
712 static void efx_handle_rx_not_ok(struct efx_rx_queue *rx_queue,
717 struct efx_nic *efx = rx_queue->efx;
749 ++rx_queue->channel->n_rx_frm_trunc;
751 ++rx_queue->channel->n_rx_tobe_disc;
754 ++rx_queue->channel->n_rx_ip_hdr_chksum_err;
756 ++rx_queue->channel->n_rx_tcp_udp_chksum_err;
772 rx_queue->queue, EFX_QWORD_VAL(*event),
789 efx_handle_rx_bad_index(struct efx_rx_queue *rx_queue, unsigned index)
791 struct efx_nic *efx = rx_queue->efx;
794 expected = rx_queue->removed_count & EFX_RXQ_MASK;
818 struct efx_rx_queue *rx_queue;
830 rx_queue = &efx->rx_queue[channel->channel];
833 expected_ptr = rx_queue->removed_count & EFX_RXQ_MASK;
835 efx_handle_rx_bad_index(rx_queue, rx_ev_desc_ptr);
846 efx_handle_rx_not_ok(rx_queue, event, &rx_ev_pkt_ok, &discard);
865 efx_rx_packet(rx_queue, rx_ev_desc_ptr, rx_ev_byte_cnt,
882 efx_fast_push_rx_descriptors(&efx->rx_queue[channel->channel]);
1168 struct efx_rx_queue *rx_queue;
1198 rx_queue = efx->rx_queue + ev_queue;
1199 rx_queue->flushed =
1219 struct efx_rx_queue *rx_queue;
1234 efx_for_each_rx_queue(rx_queue, efx) {
1235 if (rx_queue->flushed == FLUSH_PENDING)
1238 efx_for_each_rx_queue(rx_queue, efx) {
1241 if (rx_queue->flushed == FLUSH_FAILED ||
1242 rx_queue->flushed == FLUSH_NONE) {
1243 efx_flush_rx_queue(rx_queue);
1268 efx_for_each_rx_queue(rx_queue, efx) {
1269 if (rx_queue->flushed != FLUSH_DONE)
1272 rx_queue->queue);
1273 rx_queue->flushed = FLUSH_DONE;