summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/libertas/dev.h
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2008-05-20 13:32:45 +0100
committerJohn W. Linville <linville@tuxdriver.com>2008-05-21 21:47:38 -0400
commit75bf45a7b4ab81cfa5c5eab68b57bbfee8b8ede2 (patch)
treebfc740d4eda3a3389c4f4cc567f04609d5d055f5 /drivers/net/wireless/libertas/dev.h
parente37fc6e11c79899451e394319cff18cc53d6448d (diff)
downloadblackbird-op-linux-75bf45a7b4ab81cfa5c5eab68b57bbfee8b8ede2.tar.gz
blackbird-op-linux-75bf45a7b4ab81cfa5c5eab68b57bbfee8b8ede2.zip
libertas: fix multicast filtering on eth and msh interfaces
We weren't properly handling multicast on the mesh interface. Fix that, which involves setting up the hardware to use the union of dev->mc_list for both eth%d and msh%d devices. This means we can't do it directly from ->set_multicast_list() because we'd need to lock the other device to read its list, and we can't do that because it might deadlock. So punt the actual work to keventd. Also, invoke the same when taking an interface down; for some reason the core calls ->set_multicast_list while IFF_UP is still set in dev->flags when we're taking it down, so its addresses don't get removed then. We also convert MAC_MULTICAST_ADR to a direct command while we're at it, removing one more entry from the big switch statement in the deprecated lbs_prepare_and_send_command() function. Signed-off-by: David Woodhouse <dwmw2@infradead.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/libertas/dev.h')
-rw-r--r--drivers/net/wireless/libertas/dev.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h
index 0d9edb9b11f5..e12ce6506729 100644
--- a/drivers/net/wireless/libertas/dev.h
+++ b/drivers/net/wireless/libertas/dev.h
@@ -140,6 +140,8 @@ struct lbs_private {
wait_queue_head_t waitq;
struct workqueue_struct *work_thread;
+ struct work_struct mcast_work;
+
/** Scanning */
struct delayed_work scan_work;
struct delayed_work assoc_work;
OpenPOWER on IntegriCloud