Merge tag 'x86-asm-2024-01-08' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
[linux-2.6-microblaze.git] / drivers / net / ethernet / mellanox / mlxbf_gige / mlxbf_gige_rx.c
index 0d5a41a..227d01c 100644 (file)
@@ -267,6 +267,13 @@ static bool mlxbf_gige_rx_packet(struct mlxbf_gige *priv, int *rx_pkts)
                priv->stats.rx_truncate_errors++;
        }
 
+       /* Read receive consumer index before replenish so that this routine
+        * returns accurate return value even if packet is received into
+        * just-replenished buffer prior to exiting this routine.
+        */
+       rx_ci = readq(priv->base + MLXBF_GIGE_RX_CQE_PACKET_CI);
+       rx_ci_rem = rx_ci % priv->rx_q_entries;
+
        /* Let hardware know we've replenished one buffer */
        rx_pi++;
 
@@ -279,8 +286,6 @@ static bool mlxbf_gige_rx_packet(struct mlxbf_gige *priv, int *rx_pkts)
        rx_pi_rem = rx_pi % priv->rx_q_entries;
        if (rx_pi_rem == 0)
                priv->valid_polarity ^= 1;
-       rx_ci = readq(priv->base + MLXBF_GIGE_RX_CQE_PACKET_CI);
-       rx_ci_rem = rx_ci % priv->rx_q_entries;
 
        if (skb)
                netif_receive_skb(skb);