mirror of https://gitee.com/openkylin/linux.git
nfp: eliminate an if statement in calculation of completed frames
Given that our rings are always a power of 2, we can simplify the calculation of number of completed TX descriptors by using masking instead of if statement based on whether the index have wrapped or not. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4aa3b7660a
commit
730b3ab54a
|
@ -940,10 +940,7 @@ static void nfp_net_tx_complete(struct nfp_net_tx_ring *tx_ring)
|
|||
if (qcp_rd_p == tx_ring->qcp_rd_p)
|
||||
return;
|
||||
|
||||
if (qcp_rd_p > tx_ring->qcp_rd_p)
|
||||
todo = qcp_rd_p - tx_ring->qcp_rd_p;
|
||||
else
|
||||
todo = qcp_rd_p + tx_ring->cnt - tx_ring->qcp_rd_p;
|
||||
todo = D_IDX(tx_ring, qcp_rd_p + tx_ring->cnt - tx_ring->qcp_rd_p);
|
||||
|
||||
while (todo--) {
|
||||
idx = D_IDX(tx_ring, tx_ring->rd_p++);
|
||||
|
@ -1014,10 +1011,7 @@ static bool nfp_net_xdp_complete(struct nfp_net_tx_ring *tx_ring)
|
|||
if (qcp_rd_p == tx_ring->qcp_rd_p)
|
||||
return true;
|
||||
|
||||
if (qcp_rd_p > tx_ring->qcp_rd_p)
|
||||
todo = qcp_rd_p - tx_ring->qcp_rd_p;
|
||||
else
|
||||
todo = qcp_rd_p + tx_ring->cnt - tx_ring->qcp_rd_p;
|
||||
todo = D_IDX(tx_ring, qcp_rd_p + tx_ring->cnt - tx_ring->qcp_rd_p);
|
||||
|
||||
done_all = todo <= NFP_NET_XDP_MAX_COMPLETE;
|
||||
todo = min(todo, NFP_NET_XDP_MAX_COMPLETE);
|
||||
|
|
Loading…
Reference in New Issue