- Should call net_tx_action_dealloc() even when dealloc ring is
empty, as there may in any case be work to do on the
pending_inuse list.
- Should not exit directly from the middle of the tx_action tasklet,
as the tx_pending_timer should always be checked and updated at the
end of the tasklet.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
unsigned int data_len;
int ret, work_to_do;
- if (dealloc_cons != dealloc_prod)
- net_tx_action_dealloc();
+ net_tx_action_dealloc();
mop = tx_map_ops;
while (((NR_PENDING_REQS + MAX_SKB_FRAGS) < MAX_PENDING_REQS) &&
}
if (mop == tx_map_ops)
- return;
+ goto out;
ret = HYPERVISOR_grant_table_op(
GNTTABOP_map_grant_ref, tx_map_ops, mop - tx_map_ops);
netif->dev->last_rx = jiffies;
}
+ out:
if (netbk_copy_skb_mode == NETBK_DELAYED_COPY_SKB &&
!list_empty(&pending_inuse_head)) {
struct netbk_tx_pending_inuse *oldest;