|
@@ -288,7 +288,10 @@ static void ixgbevf_receive_skb(struct ixgbevf_q_vector *q_vector,
|
|
|
if (is_vlan && test_bit(tag & VLAN_VID_MASK, adapter->active_vlans))
|
|
|
__vlan_hwaccel_put_tag(skb, tag);
|
|
|
|
|
|
- napi_gro_receive(&q_vector->napi, skb);
|
|
|
+ if (!(adapter->flags & IXGBE_FLAG_IN_NETPOLL))
|
|
|
+ napi_gro_receive(&q_vector->napi, skb);
|
|
|
+ else
|
|
|
+ netif_rx(skb);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -550,9 +553,11 @@ static int ixgbevf_poll(struct napi_struct *napi, int budget)
|
|
|
else
|
|
|
per_ring_budget = budget;
|
|
|
|
|
|
+ adapter->flags |= IXGBE_FLAG_IN_NETPOLL;
|
|
|
ixgbevf_for_each_ring(ring, q_vector->rx)
|
|
|
clean_complete &= ixgbevf_clean_rx_irq(q_vector, ring,
|
|
|
per_ring_budget);
|
|
|
+ adapter->flags &= ~IXGBE_FLAG_IN_NETPOLL;
|
|
|
|
|
|
/* If all work not completed, return budget and keep polling */
|
|
|
if (!clean_complete)
|