Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (xsk_uses_need_wakeup(tx_q->xsk_pool))
- xsk_set_tx_need_wakeup(tx_q->xsk_pool);
- /* For XSK TX, we try to send as many as possible.
- * If XSK work done (XSK TX desc empty and budget still
- * available), return "budget - 1" to reenable TX IRQ.
- * Else, return "budget" to make NAPI continue polling.
- */
- work_done = stmmac_xdp_xmit_zc(priv, queue,
- STMMAC_XSK_TX_BUDGET_MAX);
- if (work_done)
- xmits = budget - 1;
- else
- xmits = budget;
- }
- if (priv->eee_enabled && !priv->tx_path_in_lpi_mode &&
- priv->eee_sw_timer_en) {
- if (stmmac_enable_eee_mode(priv))
- mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(priv->tx_lpi_timer));
- }
- xmits = max(count, xmits);
- /* We still have pending packets, let's call for a new scheduling */
- if (tx_q->dirty_tx != tx_q->cur_tx && likely(xmits) && xmits < budget) {
- pr_info("trigger timer %d %d\n", xmits, budget);
- hrtimer_start(&tx_q->txtimer,
- STMMAC_COAL_TIMER(priv->tx_coal_timer[queue]),
- HRTIMER_MODE_REL);
- }
- __netif_tx_unlock_bh(netdev_get_tx_queue(priv->dev, queue));
- /* Combine decisions from TX clean and XSK TX */
- return xmits;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement