diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-29 12:11:24 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-29 12:11:24 -0700 |
| commit | da8e5aa21e037be02e0752e80b9444ff60185a3f (patch) | |
| tree | f99d040e1f23e2d329488765440c52c89631fc75 /drivers/net/wireless/rtl8187_dev.c | |
| parent | a43f007ba19cef4fac953d9e860e8a668e042e2d (diff) | |
| parent | 9030b3dd671d672f5fcc91c2ec48f02082310af4 (diff) | |
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (22 commits)
Fix ethernet multicast for ucc_geth.
netdrvr/pcmcia: use IRQ_TYPE_DYNAMIC_SHARING flag for irq.Attributes.
FEC - fast ethernet controller for mpc52xx
ehea: add kexec support
e1000e: Remove legacy jumbo frame receive code
e1000e: Re-enable SECRC - crc stripping
e1000e: Fix PBA calculation for jumbo frame packets
e1000e: Fix jumbo frame receive code.
drivers/net/irda/au1k_ir: fix obvious irq handler bugs
ipg: Kconfig whitepaces/tab damages
ipg: missing Kconfig dependency
r8169: remove poll_locked logic
r8169: napi config
[PATCH] iwl3945: fix direct scan problem
[PATCH] iwl3945: cancel scan on rxon command
[PATCH] iwl4965: fix scan problem
[PATCH] iwl4965: fix driver hang related to hardware scan
[PATCH] iwlwifi: fix sending probe request in iwl 4965
[PATCH] rtl8187: Allow multicast frames
[PATCH] b43/b43legacy: jiffies_round -> jiffies_round_relative
...
Diffstat (limited to 'drivers/net/wireless/rtl8187_dev.c')
| -rw-r--r-- | drivers/net/wireless/rtl8187_dev.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/net/wireless/rtl8187_dev.c b/drivers/net/wireless/rtl8187_dev.c index de61c8fe649..e454ae83e97 100644 --- a/drivers/net/wireless/rtl8187_dev.c +++ b/drivers/net/wireless/rtl8187_dev.c @@ -433,6 +433,9 @@ static int rtl8187_start(struct ieee80211_hw *dev) rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0xFFFF); + rtl818x_iowrite32(priv, &priv->map->MAR[0], ~0); + rtl818x_iowrite32(priv, &priv->map->MAR[1], ~0); + rtl8187_init_urbs(dev); reg = RTL818X_RX_CONF_ONLYERLPKT | @@ -582,32 +585,31 @@ static int rtl8187_config_interface(struct ieee80211_hw *dev, int if_id, static void rtl8187_configure_filter(struct ieee80211_hw *dev, unsigned int changed_flags, unsigned int *total_flags, - int mc_count, struct dev_addr_list *mc_list) + int mc_count, struct dev_addr_list *mclist) { struct rtl8187_priv *priv = dev->priv; - *total_flags = 0; - - if (changed_flags & FIF_ALLMULTI) - priv->rx_conf ^= RTL818X_RX_CONF_MULTICAST; if (changed_flags & FIF_FCSFAIL) priv->rx_conf ^= RTL818X_RX_CONF_FCS; if (changed_flags & FIF_CONTROL) priv->rx_conf ^= RTL818X_RX_CONF_CTRL; if (changed_flags & FIF_OTHER_BSS) priv->rx_conf ^= RTL818X_RX_CONF_MONITOR; - - if (mc_count > 0) + if (*total_flags & FIF_ALLMULTI || mc_count > 0) priv->rx_conf |= RTL818X_RX_CONF_MULTICAST; + else + priv->rx_conf &= ~RTL818X_RX_CONF_MULTICAST; + + *total_flags = 0; - if (priv->rx_conf & RTL818X_RX_CONF_MULTICAST) - *total_flags |= FIF_ALLMULTI; if (priv->rx_conf & RTL818X_RX_CONF_FCS) *total_flags |= FIF_FCSFAIL; if (priv->rx_conf & RTL818X_RX_CONF_CTRL) *total_flags |= FIF_CONTROL; if (priv->rx_conf & RTL818X_RX_CONF_MONITOR) *total_flags |= FIF_OTHER_BSS; + if (priv->rx_conf & RTL818X_RX_CONF_MULTICAST) + *total_flags |= FIF_ALLMULTI; rtl818x_iowrite32_async(priv, &priv->map->RX_CONF, priv->rx_conf); } |
