e1000: Fixing interrupts pace.
commit74004e8ce4306f51f593a99d175a1e1f0453deba
authorSameeh Jubran <sameeh@daynix.com>
Thu, 17 Mar 2016 07:37:57 +0000 (17 09:37 +0200)
committerJason Wang <jasowang@redhat.com>
Wed, 30 Mar 2016 00:57:36 +0000 (30 08:57 +0800)
treee86c84ba9f1223189e617ad1046ca44106d90eeb
parent9fd3c5d556b21e0020d98d4695c84a655aa056f0
e1000: Fixing interrupts pace.

This patch introduces an upper bound for number of interrupts
per second. Without this bound an interrupt storm can occur as
it has been observed on Windows 10 when disabling the device.

According to the SPEC - Intel PCI/PCI-X Family of Gigabit
Ethernet Controllers Software Developer's Manual, section
13.4.18 - the Ethernet controller guarantees a maximum
observable interrupt rate of 7813 interrupts/sec. If there is
no upper bound this could lead to an interrupt storm by e1000
(when mit_delay < 500) causing interrupts to fire at a very high
pace.
Thus if mit_delay < 500 then the delay should be set to the
minimum delay possible which is 500. This can be calculated
easily as follows:

Interval = 10^9 / (7813 * 256) = 500.

Signed-off-by: Sameeh Jubran <sameeh@daynix.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
hw/net/e1000.c