Intel I217LM defaults to legacy interrupts

I have an X86 board with an Intel® I217LM gig-e onborad.

During boot the logs state:

e1000e 0000:00:19.0 eth0: MSI interrupt test failed, using legacy interrupt. 

Some forum reading suggests this will cause a performance impact, but there doesn't seem to be any work-around. There are also some mailing-list posts to suggest that the MSI test can produce false-negatives in certain scenarios.

Can the e1000e driver be forced to use MSI/MSI-X interrupts somehow? The docs suggest it's possible to specify a 'best case' interrupt mode, but this doesn't override the test and it will drop to Legacy if the test fails.

Infact it's worse than performance... if any significant load is put through this adaptor I repeatedly get these:

Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324] e1000e 0000:00:19.0 eth0: Detected Hardware Unit Hang:
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324]   TDH                  <db>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324]   TDT                  <f1>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324]   next_to_use          <f1>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324]   next_to_clean        <db>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324] buffer_info[next_to_clean]:
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324]   time_stamp           <10000efce>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324]   next_to_watch        <db>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324]   jiffies              <10000f0a0>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324]   next_to_watch.status <0>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324] MAC Status             <80083>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324] PHY Status             <796d>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324] PHY 1000BASE-T Status  <3800>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324] PHY Extended Status    <3000>
Sun Sep 15 13:19:48 2019 kern.err kernel: [  915.996324] PCI Status             <10>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439] e1000e 0000:00:19.0 eth0: Detected Hardware Unit Hang:
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439]   TDH                  <db>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439]   TDT                  <f1>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439]   next_to_use          <f1>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439]   next_to_clean        <db>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439] buffer_info[next_to_clean]:
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439]   time_stamp           <10000efce>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439]   next_to_watch        <db>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439]   jiffies              <10000f168>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439]   next_to_watch.status <0>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439] MAC Status             <80083>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439] PHY Status             <796d>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439] PHY 1000BASE-T Status  <3800>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439] PHY Extended Status    <3000>
Sun Sep 15 13:19:50 2019 kern.err kernel: [  917.996439] PCI Status             <10>