[V3 14/18] net/hinic3: add Rx/Tx functions

Stephen Hemminger stephen at networkplumber.org
Sun Jun 29 20:00:17 CEST 2025


On Sat, 28 Jun 2025 15:25:37 +0800
Feifei Wang <wff_light at vip.163.com> wrote:

> +#define HINIC3_RX_EMPTY_THRESHOLD 3
> +u16
> +hinic3_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, u16 nb_pkts)
> +{
> +	struct hinic3_rxq *rxq = rx_queue;
> +	struct hinic3_rx_info *rx_info = NULL;
> +	volatile struct hinic3_rq_cqe *rx_cqe = NULL;
> +	struct rte_mbuf *rxm = NULL;
> +	u16 sw_ci, rx_buf_len, wqebb_cnt = 0, pkts = 0;
> +	u32 status, pkt_len, vlan_len, offload_type, lro_num;
> +	u64 rx_bytes = 0;
> +	u32 hash_value;
> +
> +#ifdef HINIC3_XSTAT_PROF_RX
> +	uint64_t t1 = rte_get_tsc_cycles();
> +	uint64_t t2;
> +#endif
> +	if (((rte_get_timer_cycles() - rxq->rxq_stats.tsc) < rxq->wait_time_cycle) &&
> +	    rxq->rxq_stats.empty >= HINIC3_RX_EMPTY_THRESHOLD)
> +		goto out;
> +

NAK
Doing this kind of empty threshold on receive is non-standard.
Driver should not be doing it here.
Many applications do polling optimization in themselves in the polling loop.
This driver specific tweak would interfere with that.


More information about the dev mailing list