diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-19 20:35:20 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-19 20:35:20 -0700 |
commit | 9abbf7d028b1598b40ebdc81c48f30da7f3d5bf5 (patch) | |
tree | 61a56ec39f4b7d438d7e08fc3f32d636828d9f7a /drivers/net/wireless/rtl8187_dev.c | |
parent | b3d9d6be035a7d1cc6740cee695301bf37caedcd (diff) | |
parent | fe2520094d88018423dfc42b3cd0015f74e8adea (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: (21 commits)
Fix build break in tsi108.c
qeth: remove header_ops bug
ir-functions.c:(.text+0xbce18): undefined reference to `input_event'
NAPI: kconfig prompt and deleted doc file
phy/bitbang: missing MODULE_LICENSE
DM9000 initialization fix
[PATCH] rt2x00: Add new rt73usb USB ID
[PATCH] rt2x00: Fix residual check in PLCP calculations.
[PATCH] iwlwifi: Fix rate setting in probe request for HW sacn
[PATCH] b43: Make b43_stop() static
[PATCH] drivers/net/wireless/b43/main.c: fix an uninitialized variable
[PATCH] iwlwifi: set correct base rate for A band in rs_dbgfs_set_mcs
[PATCH] zd1211rw, fix oops when ejecting install media
[PATCH] b43legacy: Fix potential return of uninitialized variable
[PATCH] iwl4965-base.c: fix off-by-one errors
[PATCH] p54: Make filter configuration atomic
[PATCH] rtl8187: remove NICMAC setting in configure_filters callback
[PATCH] janitorial: fix all double includes in drivers/net/wireless
[PATCH] rtl8187: Fix more frag bit checking, rts duration calc
[PATCH] ipw2100: send WEXT scan events
...
Diffstat (limited to 'drivers/net/wireless/rtl8187_dev.c')
-rw-r--r-- | drivers/net/wireless/rtl8187_dev.c | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/drivers/net/wireless/rtl8187_dev.c b/drivers/net/wireless/rtl8187_dev.c index 0ef887dd2867..de61c8fe6492 100644 --- a/drivers/net/wireless/rtl8187_dev.c +++ b/drivers/net/wireless/rtl8187_dev.c @@ -131,7 +131,8 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb, struct rtl8187_tx_hdr *hdr; struct rtl8187_tx_info *info; struct urb *urb; - u32 tmp; + __le16 rts_dur = 0; + u32 flags; urb = usb_alloc_urb(0, GFP_ATOMIC); if (!urb) { @@ -139,24 +140,24 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb, return 0; } - hdr = (struct rtl8187_tx_hdr *)skb_push(skb, sizeof(*hdr)); - tmp = skb->len - sizeof(*hdr); - tmp |= RTL8187_TX_FLAG_NO_ENCRYPT; - tmp |= control->rts_cts_rate << 19; - tmp |= control->tx_rate << 24; - if (ieee80211_get_morefrag((struct ieee80211_hdr *)skb)) - tmp |= RTL8187_TX_FLAG_MORE_FRAG; + flags = skb->len; + flags |= RTL8187_TX_FLAG_NO_ENCRYPT; + flags |= control->rts_cts_rate << 19; + flags |= control->tx_rate << 24; + if (ieee80211_get_morefrag((struct ieee80211_hdr *)skb->data)) + flags |= RTL8187_TX_FLAG_MORE_FRAG; if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS) { - tmp |= RTL8187_TX_FLAG_RTS; - hdr->rts_duration = - ieee80211_rts_duration(dev, priv->if_id, skb->len, control); + flags |= RTL8187_TX_FLAG_RTS; + rts_dur = ieee80211_rts_duration(dev, priv->if_id, skb->len, control); } if (control->flags & IEEE80211_TXCTL_USE_CTS_PROTECT) - tmp |= RTL8187_TX_FLAG_CTS; - hdr->flags = cpu_to_le32(tmp); + flags |= RTL8187_TX_FLAG_CTS; + + hdr = (struct rtl8187_tx_hdr *)skb_push(skb, sizeof(*hdr)); + hdr->flags = cpu_to_le32(flags); hdr->len = 0; - tmp = control->retry_limit << 8; - hdr->retry = cpu_to_le32(tmp); + hdr->rts_duration = rts_dur; + hdr->retry = cpu_to_le32(control->retry_limit << 8); info = (struct rtl8187_tx_info *)skb->cb; info->control = kmemdup(control, sizeof(*control), GFP_ATOMIC); @@ -587,8 +588,6 @@ static void rtl8187_configure_filter(struct ieee80211_hw *dev, *total_flags = 0; - if (changed_flags & FIF_PROMISC_IN_BSS) - priv->rx_conf ^= RTL818X_RX_CONF_NICMAC; if (changed_flags & FIF_ALLMULTI) priv->rx_conf ^= RTL818X_RX_CONF_MULTICAST; if (changed_flags & FIF_FCSFAIL) @@ -601,8 +600,6 @@ static void rtl8187_configure_filter(struct ieee80211_hw *dev, if (mc_count > 0) priv->rx_conf |= RTL818X_RX_CONF_MULTICAST; - if (priv->rx_conf & RTL818X_RX_CONF_NICMAC) - *total_flags |= FIF_PROMISC_IN_BSS; if (priv->rx_conf & RTL818X_RX_CONF_MULTICAST) *total_flags |= FIF_ALLMULTI; if (priv->rx_conf & RTL818X_RX_CONF_FCS) |