[dpdk-dev] [RFC 4/9] net/avf: enable basic Rx Tx func

Wu, Jingjing jingjing.wu at intel.com
Wed Nov 22 08:55:04 CET 2017



> -----Original Message-----
> From: Yigit, Ferruh
> Sent: Wednesday, November 22, 2017 8:06 AM
> To: Wu, Jingjing <jingjing.wu at intel.com>; dev at dpdk.org
> Cc: Lu, Wenzhuo <wenzhuo.lu at intel.com>
> Subject: Re: [dpdk-dev] [RFC 4/9] net/avf: enable basic Rx Tx func
> 
> On 10/20/2017 1:26 AM, Jingjing Wu wrote:
> > Signed-off-by: Wenzhuo Lu <wenzhuo.lu at intel.com>
> 
> <...>
> 
> > @@ -214,6 +214,9 @@ CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
> >  # Compile burst-oriented AVF PMD driver  #
> > CONFIG_RTE_LIBRTE_AVF_PMD=y
> > +CONFIG_RTE_LIBRTE_AVF_RX_DUMP=n
> > +CONFIG_RTE_LIBRTE_AVF_TX_DUMP=n
> 
> Are these config options used?
> 
Yes, some macros are defined in avf_rxtx.h for dump descriptors. Will merge them with AVF_DEBUG_TX/RX.

> <...>
> 
> > @@ -49,4 +49,18 @@ extern int avf_logtype_driver;
> >  	PMD_DRV_LOG_RAW(level, fmt "\n", ## args)  #define
> > PMD_DRV_FUNC_TRACE() PMD_DRV_LOG(DEBUG, " >>")
> >
> > +#ifdef RTE_LIBRTE_AVF_DEBUG_TX
> 
> Is this defined anywhere?
Will merge it with AVF_TX_DUMP.

> 
> > +#define PMD_TX_LOG(level, fmt, args...) \
> > +	RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ## args)
> 
> Instead should RTE_LOG_DP used?
> And since other macros uses dynamic log functions, why here use static method,
> what do you think using new method for data path logs as well?
> 
This is used for fast path debug, so static macro will benefit performance.

> <...>
> 
> > +static inline void
> > +avf_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union avf_rx_desc
> > +*rxdp) {
> > +	if (rte_le_to_cpu_64(rxdp->wb.qword1.status_error_len) &
> > +		(1 << AVF_RX_DESC_STATUS_L2TAG1P_SHIFT)) {
> > +		mb->ol_flags |= PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED;
> 
> Please new flag instead of PKT_RX_VLAN_PKT and please be sure flag is
> correctly used with its new meaning.
> 
> <...>
> 
> > +/* TX prep functions */
> > +uint16_t
> > +avf_prep_pkts(__rte_unused void *tx_queue, struct rte_mbuf **tx_pkts,
> > +	      uint16_t nb_pkts)
> > +{
> > +	int i, ret;
> > +	uint64_t ol_flags;
> > +	struct rte_mbuf *m;
> > +
> > +	for (i = 0; i < nb_pkts; i++) {
> > +		m = tx_pkts[i];
> > +		ol_flags = m->ol_flags;
> > +
> > +		/* m->nb_segs is uint8_t, so nb_segs is always less than
> > +		 * AVF_TX_MAX_SEG.
> > +		 * We check only a condition for nb_segs >
> AVF_TX_MAX_MTU_SEG.
> > +		 */
> 
> This is wrong, nb_segs is 16bits now, this check has been updated in i40e
> already.
> 
Will change, Thanks

> <...>


More information about the dev mailing list