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-head mailing list