> -----Original Message-----
> From: Ferruh Yigit <ferruh.yi...@amd.com>
> Sent: Monday, October 24, 2022 18:50
> To: Guo, Junfeng <junfeng....@intel.com>; Zhang, Qi Z
> <qi.z.zh...@intel.com>; Wu, Jingjing <jingjing...@intel.com>; Xing,
> Beilei <beilei.x...@intel.com>
> Cc: dev@dpdk.org; Li, Xiaoyun <xiaoyun...@intel.com>;
> awogbem...@google.com; Richardson, Bruce
> <bruce.richard...@intel.com>; hemant.agra...@nxp.com;
> step...@networkplumber.org; Xia, Chenbo <chenbo....@intel.com>;
> Zhang, Helin <helin.zh...@intel.com>
> Subject: Re: [PATCH v7 8/8] net/gve: add support for Rx/Tx
> 
> On 10/24/2022 6:04 AM, Guo, Junfeng wrote:
> >
> >
> >> -----Original Message-----
> >> From: Ferruh Yigit <ferruh.yi...@amd.com>
> >> Sent: Friday, October 21, 2022 17:52
> >> To: Guo, Junfeng <junfeng....@intel.com>; Zhang, Qi Z
> >> <qi.z.zh...@intel.com>; Wu, Jingjing <jingjing...@intel.com>;
> >> ferruh.yi...@xilinx.com; Xing, Beilei <beilei.x...@intel.com>
> >> Cc: dev@dpdk.org; Li, Xiaoyun <xiaoyun...@intel.com>;
> >> awogbem...@google.com; Richardson, Bruce
> >> <bruce.richard...@intel.com>; hemant.agra...@nxp.com;
> >> step...@networkplumber.org; Xia, Chenbo <chenbo....@intel.com>;
> >> Zhang, Helin <helin.zh...@intel.com>
> >> Subject: Re: [PATCH v7 8/8] net/gve: add support for Rx/Tx
> >>
> >> On 10/21/2022 10:19 AM, Junfeng Guo wrote:
> >>
> >>>
> >>> Add Rx/Tx of GQI_QPL queue format and GQI_RDA queue format.
> >>>
> >>> Signed-off-by: Xiaoyun Li <xiaoyun...@intel.com>
> >>> Signed-off-by: Junfeng Guo <junfeng....@intel.com>
> >>
> >> <...>
> >>
> >>> +
> >>> +static inline void
> >>> +gve_tx_clean_swr_qpl(struct gve_tx_queue *txq)
> >>> +{
> >>> +       uint32_t start = txq->sw_ntc;
> >>> +       uint32_t ntc, nb_clean;
> >>> +
> >>> +       ntc = txq->sw_tail;
> >>> +
> >>> +       if (ntc == start)
> >>> +               return;
> >>> +
> >>> +       /* if wrap around, free twice. */
> >>> +       if (ntc < start) {
> >>> +               nb_clean = txq->nb_tx_desc - start;
> >>> +               if (nb_clean > GVE_TX_MAX_FREE_SZ)
> >>> +                       nb_clean = GVE_TX_MAX_FREE_SZ;
> >>> +               gve_free_bulk_mbuf(&txq->sw_ring[start], nb_clean);
> >>> +
> >>> +               txq->sw_nb_free += nb_clean;
> >>> +               start += nb_clean;
> >>> +               if (start == txq->nb_tx_desc)
> >>> +                       start = 0;
> >>> +               txq->sw_ntc = start;
> >>> +       }
> >>> +
> >>> +       if (ntc > start) {
> >>> +               nb_clean = ntc - start;
> >>> +               if (nb_clean > GVE_TX_MAX_FREE_SZ)
> >>> +                       nb_clean = GVE_TX_MAX_FREE_SZ;
> >>> +               gve_free_bulk_mbuf(&txq->sw_ring[start], nb_clean);
> >>> +               txq->sw_nb_free += nb_clean;
> >>> +               start += nb_clean;
> >>> +               txq->sw_ntc = start;
> >>> +       }
> >>> +}
> >>
> >> [copy/paste from previous version]
> >>
> >> may be can drop the 'if' block, since "ntc == start" and "ntc < start"
> >> cases already covered.
> >
> > Yes, this 'if' block is dropped in v7 as suggested. Thanks!
> >
> 
> This is v7 and please check above code which has the mentioned 'if'
> block exist, do you mean in coming v8?

Oh, sorry about this! There is another function with the same issue.
I just updated the code there and forgot this. Will update this and 
check for the rest in the coming version. Thanks!

> 
> >>
> >> <...>
> >>
> >>> +uint16_t
> >>> +gve_tx_burst(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t
> >> nb_pkts)
> >>> +{
> >>> +       struct gve_tx_queue *txq = tx_queue;
> >>> +
> >>> +       if (txq->is_gqi_qpl)
> >>> +               return gve_tx_burst_qpl(tx_queue, tx_pkts, nb_pkts);
> >>> +
> >>> +       return gve_tx_burst_ra(tx_queue, tx_pkts, nb_pkts);
> >>> +}
> >>> +
> >>
> >> [copy/paste from previous version]
> >>
> >> Can there be mix of queue types?
> >> If only one queue type is supported in specific config, perhaps burst
> >> function can be set during configuration, to prevent if check on
> datapath.
> >>
> >> This is optimization and can be done later, it doesn't have to be in the
> >> set.
> >
> > The exact queue type can be fetched from the backend via adminq
> > in priv->queue_format. So there won't be mix of the queue types.
> > Currently, only GQI_QPL and GQI_RDA queue format are supported
> > in PMD. Also, only GQI_QPL queue format is in use on GCP since
> > GQI_RDA hasn't been released in production.
> > This part code will be optimized/refactored later when involving
> > the queue type DQO_RDA. Thanks!
> >

Reply via email to