Re: [PATCH net-next v13 1/3] hinic3: Add ethtool statistic ops
Vadim Fedorenko <[email protected]>
| Newsgroups | gmane.linux.documentation,gmane.linux.network,gmane.linux.kernel |
|---|---|
| Message-ID | <[email protected]> |
On 17/08/2026 03:04, Fan Gong wrote:
[...]
> +static void hinic3_get_drv_queue_stats(struct net_device *netdev, u64 *data)
> +{
> + struct hinic3_nic_dev *nic_dev = netdev_priv(netdev);
> + struct hinic3_txq_stats txq_stats = {};
> + struct hinic3_rxq_stats rxq_stats = {};
> + u16 i = 0, j, qid;
> + char *p;
> +
> + for (qid = 0; qid < nic_dev->q_params.num_qps; qid++) {
> + if (!nic_dev->txqs)
> + break;
how can this happen on registered netdev? And even if it's possible, why
do you check it on every iteration of the loop?
> +
> + hinic3_txq_get_stats(&nic_dev->txqs[qid], &txq_stats);
> + for (j = 0; j < ARRAY_SIZE(hinic3_tx_queue_stats); j++, i++) {
> + p = (char *)&txq_stats +
> + hinic3_tx_queue_stats[j].offset;
> + data[i] = *(u64 *)p;
> + }
> + }
> +
> + i = nic_dev->q_params.num_qps * ARRAY_SIZE(hinic3_tx_queue_stats);
> + for (qid = 0; qid < nic_dev->q_params.num_qps; qid++) {
> + if (!nic_dev->rxqs)
> + break;
the very same question here
> +
> + hinic3_rxq_get_stats(&nic_dev->rxqs[qid], &rxq_stats);
> + for (j = 0; j < ARRAY_SIZE(hinic3_rx_queue_stats); j++, i++) {
> + p = (char *)&rxq_stats +
> + hinic3_rx_queue_stats[j].offset;
> + data[i] = *(u64 *)p;
> + }
> + }
> +}