@@ -1145,7 +1145,8 @@ static bool enetc_check_bd_errors_and_consume(struct enetc_bdr *rx_ring,
static struct sk_buff *enetc_build_skb(struct enetc_bdr *rx_ring,
u32 bd_status, union enetc_rx_bd **rxbd,
- int *i, int *cleaned_cnt, int buffer_size)
+ int *i, int *buffs_missing,
+ int buffer_size)
{
struct sk_buff *skb;
u16 size;
@@ -1157,7 +1158,7 @@ static struct sk_buff *enetc_build_skb(struct enetc_bdr *rx_ring,
enetc_get_offloads(rx_ring, *rxbd, skb);
- (*cleaned_cnt)++;
+ (*buffs_missing)++;
enetc_rxbd_next(rx_ring, rxbd, i);
@@ -1173,7 +1174,7 @@ static struct sk_buff *enetc_build_skb(struct enetc_bdr *rx_ring,
enetc_add_rx_buff_to_skb(rx_ring, *i, size, skb);
- (*cleaned_cnt)++;
+ (*buffs_missing)++;
enetc_rxbd_next(rx_ring, rxbd, i);
}
@@ -1190,9 +1191,9 @@ static int enetc_clean_rx_ring(struct enetc_bdr *rx_ring,
struct napi_struct *napi, int work_limit)
{
int rx_frm_cnt = 0, rx_byte_cnt = 0;
- int cleaned_cnt, i;
+ int buffs_missing, i;
- cleaned_cnt = enetc_bd_unused(rx_ring);
+ buffs_missing = enetc_bd_unused(rx_ring);
/* next descriptor to process */
i = rx_ring->next_to_clean;
@@ -1201,9 +1202,9 @@ static int enetc_clean_rx_ring(struct enetc_bdr *rx_ring,
struct sk_buff *skb;
u32 bd_status;
- if (cleaned_cnt >= ENETC_RXBD_BUNDLE)
- cleaned_cnt -= enetc_refill_rx_ring(rx_ring,
- cleaned_cnt);
+ if (buffs_missing >= ENETC_RXBD_BUNDLE)
+ buffs_missing -= enetc_refill_rx_ring(rx_ring,
+ buffs_missing);
rxbd = enetc_rxbd(rx_ring, i);
bd_status = le32_to_cpu(rxbd->r.lstatus);
@@ -1218,7 +1219,7 @@ static int enetc_clean_rx_ring(struct enetc_bdr *rx_ring,
break;
skb = enetc_build_skb(rx_ring, bd_status, &rxbd, &i,
- &cleaned_cnt, ENETC_RXB_DMA_SIZE);
+ &buffs_missing, ENETC_RXB_DMA_SIZE);
if (!skb)
break;
@@ -1447,14 +1448,14 @@ static void enetc_add_rx_buff_to_xdp(struct enetc_bdr *rx_ring, int i,
static void enetc_build_xdp_buff(struct enetc_bdr *rx_ring, u32 bd_status,
union enetc_rx_bd **rxbd, int *i,
- int *cleaned_cnt, struct xdp_buff *xdp_buff)
+ int *buffs_missing, struct xdp_buff *xdp_buff)
{
u16 size = le16_to_cpu((*rxbd)->r.buf_len);
xdp_init_buff(xdp_buff, ENETC_RXB_TRUESIZE, &rx_ring->xdp.rxq);
enetc_map_rx_buff_to_xdp(rx_ring, *i, xdp_buff, size);
- (*cleaned_cnt)++;
+ (*buffs_missing)++;
enetc_rxbd_next(rx_ring, rxbd, i);
/* not last BD in frame? */
@@ -1468,7 +1469,7 @@ static void enetc_build_xdp_buff(struct enetc_bdr *rx_ring, u32 bd_status,
}
enetc_add_rx_buff_to_xdp(rx_ring, *i, size, xdp_buff);
- (*cleaned_cnt)++;
+ (*buffs_missing)++;
enetc_rxbd_next(rx_ring, rxbd, i);
}
}
@@ -1524,16 +1525,16 @@ static int enetc_clean_rx_ring_xdp(struct enetc_bdr *rx_ring,
struct enetc_ndev_priv *priv = netdev_priv(rx_ring->ndev);
int rx_frm_cnt = 0, rx_byte_cnt = 0;
struct enetc_bdr *tx_ring;
- int cleaned_cnt, i;
+ int buffs_missing, i;
u32 xdp_act;
- cleaned_cnt = enetc_bd_unused(rx_ring);
+ buffs_missing = enetc_bd_unused(rx_ring);
/* next descriptor to process */
i = rx_ring->next_to_clean;
while (likely(rx_frm_cnt < work_limit)) {
union enetc_rx_bd *rxbd, *orig_rxbd;
- int orig_i, orig_cleaned_cnt;
+ int orig_i, orig_buffs_missing;
struct xdp_buff xdp_buff;
struct sk_buff *skb;
u32 bd_status;
@@ -1552,11 +1553,11 @@ static int enetc_clean_rx_ring_xdp(struct enetc_bdr *rx_ring,
break;
orig_rxbd = rxbd;
- orig_cleaned_cnt = cleaned_cnt;
+ orig_buffs_missing = buffs_missing;
orig_i = i;
enetc_build_xdp_buff(rx_ring, bd_status, &rxbd, &i,
- &cleaned_cnt, &xdp_buff);
+ &buffs_missing, &xdp_buff);
xdp_act = bpf_prog_run_xdp(prog, &xdp_buff);
@@ -1572,11 +1573,11 @@ static int enetc_clean_rx_ring_xdp(struct enetc_bdr *rx_ring,
break;
case XDP_PASS:
rxbd = orig_rxbd;
- cleaned_cnt = orig_cleaned_cnt;
+ buffs_missing = orig_buffs_missing;
i = orig_i;
skb = enetc_build_skb(rx_ring, bd_status, &rxbd,
- &i, &cleaned_cnt,
+ &i, &buffs_missing,
ENETC_RXB_DMA_SIZE_XDP);
if (unlikely(!skb))
goto out;
@@ -1640,7 +1641,7 @@ static int enetc_clean_rx_ring_xdp(struct enetc_bdr *rx_ring,
if (xdp_tx_frm_cnt)
enetc_update_tx_ring_tail(tx_ring);
- if (cleaned_cnt > rx_ring->xdp.xdp_tx_in_flight)
+ if (buffs_missing > rx_ring->xdp.xdp_tx_in_flight)
enetc_refill_rx_ring(rx_ring, enetc_bd_unused(rx_ring) -
rx_ring->xdp.xdp_tx_in_flight);
Calling enetc_bd_unused() on an RX ring returns the number of descriptors necessary for the ring to be full with descriptors owned by hardware (for it to put packets in). Putting this value in a variable named "cleaned_cnt" is misleading to me, especially since we may start the NAPI poll routine (enetc_clean_rx_ring) with a non-zero cleaned_cnt. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> --- drivers/net/ethernet/freescale/enetc/enetc.c | 41 ++++++++++---------- 1 file changed, 21 insertions(+), 20 deletions(-)