diff options
author | Michael Brown | 2015-07-28 16:05:44 +0200 |
---|---|---|
committer | Michael Brown | 2015-07-28 16:14:40 +0200 |
commit | b20d4a1522646f71ec22b541d95f9d603760a58d (patch) | |
tree | 7b3313e57278b9d0371b011c3218685c2087da12 /src/net/80211 | |
parent | [iscsi] Add missing "break" statements (diff) | |
download | ipxe-b20d4a1522646f71ec22b541d95f9d603760a58d.tar.gz ipxe-b20d4a1522646f71ec22b541d95f9d603760a58d.tar.xz ipxe-b20d4a1522646f71ec22b541d95f9d603760a58d.zip |
[netdevice] Allow network devices to disclaim IRQ support at runtime
VLAN and 802.11 devices use a network device operations structure that
wraps an underlying structure. For example, the vlan_operations
structure wraps the network device operations structure of the
underlying trunk device. This can cause false positives from the
current implementation of netdev_irq_supported(), which will always
report that VLAN devices support interrupts since it has no visibility
into the support provided by the underlying trunk device.
Fix by allowing network devices to explicitly flag that interrupts are
not supported, despite the presence of an irq() method.
Originally-fixed-by: Wissam Shoukair <wissams@mellanox.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net/80211')
-rw-r--r-- | src/net/80211/net80211.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/net/80211/net80211.c b/src/net/80211/net80211.c index 00794592..d4970ad5 100644 --- a/src/net/80211/net80211.c +++ b/src/net/80211/net80211.c @@ -805,6 +805,10 @@ int net80211_register ( struct net80211_device *dev, NET80211_MAX_CHANNELS * sizeof ( dev->channels[0] ) ); dev->channel = 0; + /* Mark device as not supporting interrupts, if applicable */ + if ( ! ops->irq ) + dev->netdev->state |= NETDEV_IRQ_UNSUPPORTED; + list_add_tail ( &dev->list, &net80211_devices ); return register_netdev ( dev->netdev ); } |