Orabug:
23514725
Fixed a rare condition where tx_tail value goes out of bound, by properly
locking poll_tx
Signed-off-by: Pradeep Gopanapalli <pradeep.gopanapalli@oracle.com>
Reviewed-by: sajid zia <szia@oracle.com>
Reviewed-by: Haakon Bugge <haakon.bugge@oracle.com>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
handle_action_flags(priv);
if (priv->send_hbeat_flag) {
- poll_tx(priv);
+ unsigned long flags = 0;
+
+ if (unlikely(priv->tx_outstanding > MAX_SEND_CQE)) {
+ netif_tx_lock(priv->netdev);
+ spin_lock_irqsave(&priv->lock, flags);
+ poll_tx(priv);
+ spin_unlock_irqrestore(&priv->lock, flags);
+ netif_tx_unlock(priv->netdev);
+ }
if (xve_is_ovn(priv))
xve_send_hbeat(priv);
}