Unmask all IO irqs after driver state is set as running
If driver left MSI-x handlling routine because interface was put down, it is not unmasking IRQs, so any requesting interrupt will be awaiting for unmasking. On ena_up() routine all interrupts are being unmasked and any awaiting interrupt will be handled right away. If handler was executed before driver state was set as running, handling routine is being ended immediately, leaving IO irqs for given queue masked. Submitted by: Michal Krawczyk <mk@semihalf.com> Obtained from: Semihalf Sponsored by: Amazon.com Inc.
This commit is contained in:
parent
0a930cf078
commit
93471047c0
@ -2097,7 +2097,6 @@ ena_up_complete(struct ena_adapter *adapter)
|
|||||||
|
|
||||||
ena_change_mtu(adapter->ifp, adapter->ifp->if_mtu);
|
ena_change_mtu(adapter->ifp, adapter->ifp->if_mtu);
|
||||||
ena_refill_all_rx_bufs(adapter);
|
ena_refill_all_rx_bufs(adapter);
|
||||||
ena_unmask_all_io_irqs(adapter);
|
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@ -2170,6 +2169,8 @@ ena_up(struct ena_adapter *adapter)
|
|||||||
taskqueue_enqueue(adapter->stats_tq, &adapter->stats_task);
|
taskqueue_enqueue(adapter->stats_tq, &adapter->stats_task);
|
||||||
|
|
||||||
adapter->up = true;
|
adapter->up = true;
|
||||||
|
|
||||||
|
ena_unmask_all_io_irqs(adapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
Loading…
Reference in New Issue
Block a user