I'm not sure "correct the statistics" is the best way to describe this change. Maybe "keep track of correct TXBD count in enetc_map_tx_tso_buffs()"?
Hi Vladimir,
Inspired by Michal, I think we don't need to keep the count variable, because we already have index "i", we just need to record the value of the initial i at
the
beginning. So I plan to do this optimization on the net-next tree in the future. So I don't think it is necessary to modify enetc_map_tx_tso_hdr().
And what if 'i' wraps around at least one time and becomes greater than the initial 'i'? Instead of 'count' you would have to record the number of wraps.
I think this situation will not happen, because when calling enetc_map_tx_tso_buffs()/enetc_map_tx_buffs()/enetc_lso_hw_offload(), we always check whether the current free BDs are enough. The number of free BDs is always <= bdr->bd_count, in the case you mentioned, the frame will occupy more BDs than bdr->bd_count.
Even if not possible now in specific cases, there should be no limitation on whether 'i' can wrap around in the loop or not (i.e. maybe some users want to try very small Tx rings etc.)