Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Nov 2018 11:39:02 +0000 (UTC)
From:      Andrew Rybchenko <arybchik@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r340829 - head/sys/dev/sfxge/common
Message-ID:  <201811231139.wANBd2Vq073303@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201811231139.wANBd2Vq073303>