svn commit: r340829 - head/sys/dev/sfxge/common
Andrew Rybchenko
arybchik at FreeBSD.org
Fri Nov 23 11:39:04 UTC 2018
Author: arybchik
Date: Fri Nov 23 11:39:02 2018
New Revision: 340829
URL: https://svnweb.freebsd.org/changeset/base/340829
Log:
sfxge(4): provide simple access to RxQ state in EvQ
Packed stream Rx datapath requires access to packed stream state
stored in event queue. Number of credits is upstead in event handler
on a new buffer, packets parsing on 64k boundary crossing and
Rx doorbell push to give credits back.
Sponsored by: Solarflare Communications, Inc.
Differential Revision: https://reviews.freebsd.org/D18099
Modified:
head/sys/dev/sfxge/common/ef10_rx.c
head/sys/dev/sfxge/common/efx_impl.h
Modified: head/sys/dev/sfxge/common/ef10_rx.c
==============================================================================
--- head/sys/dev/sfxge/common/ef10_rx.c Fri Nov 23 11:38:50 2018 (r340828)
+++ head/sys/dev/sfxge/common/ef10_rx.c Fri Nov 23 11:39:02 2018 (r340829)
@@ -787,8 +787,7 @@ ef10_rx_qpush_ps_credits(
{
efx_nic_t *enp = erp->er_enp;
efx_dword_t dword;
- efx_evq_rxq_state_t *rxq_state =
- &erp->er_eep->ee_rxq_state[erp->er_label];
+ efx_evq_rxq_state_t *rxq_state = erp->er_ev_qstate;
uint32_t credits;
EFSYS_ASSERT(rxq_state->eers_rx_packed_stream);
@@ -837,8 +836,7 @@ ef10_rx_qps_packet_info(
uint16_t buf_len;
uint8_t *pkt_start;
efx_qword_t *qwordp;
- efx_evq_rxq_state_t *rxq_state =
- &erp->er_eep->ee_rxq_state[erp->er_label];
+ efx_evq_rxq_state_t *rxq_state = erp->er_ev_qstate;
EFSYS_ASSERT(rxq_state->eers_rx_packed_stream);
@@ -996,6 +994,8 @@ ef10_rx_qcreate(
erp->er_label = label;
ef10_ev_rxlabel_init(eep, erp, label, type);
+
+ erp->er_ev_qstate = &erp->er_eep->ee_rxq_state[label];
return (0);
Modified: head/sys/dev/sfxge/common/efx_impl.h
==============================================================================
--- head/sys/dev/sfxge/common/efx_impl.h Fri Nov 23 11:38:50 2018 (r340828)
+++ head/sys/dev/sfxge/common/efx_impl.h Fri Nov 23 11:39:02 2018 (r340829)
@@ -757,6 +757,7 @@ struct efx_rxq_s {
unsigned int er_label;
unsigned int er_mask;
efsys_mem_t *er_esmp;
+ efx_evq_rxq_state_t *er_ev_qstate;
};
#define EFX_RXQ_MAGIC 0x15022005
More information about the svn-src-all
mailing list