Commit 75e7766680b4b196073bdc941b8a6570b9f777af
Merge branch 'fixes-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Showing 5 changed files Side-by-side Diff
net/ieee80211/ieee80211_tx.c
net/mac80211/ieee80211.c
... | ... | @@ -216,6 +216,7 @@ |
216 | 216 | res = local->ops->start(local_to_hw(local)); |
217 | 217 | if (res) |
218 | 218 | return res; |
219 | + ieee80211_hw_config(local); | |
219 | 220 | } |
220 | 221 | |
221 | 222 | switch (sdata->type) { |
... | ... | @@ -232,7 +233,6 @@ |
232 | 233 | netif_tx_unlock_bh(local->mdev); |
233 | 234 | |
234 | 235 | local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP; |
235 | - ieee80211_hw_config(local); | |
236 | 236 | } |
237 | 237 | break; |
238 | 238 | case IEEE80211_IF_TYPE_STA: |
... | ... | @@ -334,8 +334,7 @@ |
334 | 334 | ieee80211_configure_filter(local); |
335 | 335 | netif_tx_unlock_bh(local->mdev); |
336 | 336 | |
337 | - local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP; | |
338 | - ieee80211_hw_config(local); | |
337 | + local->hw.conf.flags &= ~IEEE80211_CONF_RADIOTAP; | |
339 | 338 | } |
340 | 339 | break; |
341 | 340 | case IEEE80211_IF_TYPE_STA: |
... | ... | @@ -357,6 +356,11 @@ |
357 | 356 | cancel_delayed_work(&local->scan_work); |
358 | 357 | } |
359 | 358 | flush_workqueue(local->hw.workqueue); |
359 | + | |
360 | + sdata->u.sta.flags &= ~IEEE80211_STA_PRIVACY_INVOKED; | |
361 | + kfree(sdata->u.sta.extra_ie); | |
362 | + sdata->u.sta.extra_ie = NULL; | |
363 | + sdata->u.sta.extra_ie_len = 0; | |
360 | 364 | /* fall through */ |
361 | 365 | default: |
362 | 366 | conf.if_id = dev->ifindex; |
net/mac80211/rx.c
... | ... | @@ -997,7 +997,7 @@ |
997 | 997 | if (unlikely(!(rx->fc & IEEE80211_FCTL_PROTECTED) && |
998 | 998 | (rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA && |
999 | 999 | (rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC && |
1000 | - rx->sdata->drop_unencrypted && | |
1000 | + (rx->key || rx->sdata->drop_unencrypted) && | |
1001 | 1001 | (rx->sdata->eapol == 0 || !ieee80211_is_eapol(rx->skb)))) { |
1002 | 1002 | if (net_ratelimit()) |
1003 | 1003 | printk(KERN_DEBUG "%s: RX non-WEP frame, but expected " |
net/mac80211/wep.c
... | ... | @@ -265,7 +265,8 @@ |
265 | 265 | if (ieee80211_wep_decrypt_data(local->wep_rx_tfm, rc4key, klen, |
266 | 266 | skb->data + hdrlen + WEP_IV_LEN, |
267 | 267 | len)) { |
268 | - printk(KERN_DEBUG "WEP decrypt failed (ICV)\n"); | |
268 | + if (net_ratelimit()) | |
269 | + printk(KERN_DEBUG "WEP decrypt failed (ICV)\n"); | |
269 | 270 | ret = -1; |
270 | 271 | } |
271 | 272 |
net/rfkill/rfkill.c
... | ... | @@ -60,12 +60,8 @@ |
60 | 60 | static int rfkill_toggle_radio(struct rfkill *rfkill, |
61 | 61 | enum rfkill_state state) |
62 | 62 | { |
63 | - int retval; | |
63 | + int retval = 0; | |
64 | 64 | |
65 | - retval = mutex_lock_interruptible(&rfkill->mutex); | |
66 | - if (retval) | |
67 | - return retval; | |
68 | - | |
69 | 65 | if (state != rfkill->state) { |
70 | 66 | retval = rfkill->toggle_radio(rfkill->data, state); |
71 | 67 | if (!retval) { |
... | ... | @@ -74,7 +70,6 @@ |
74 | 70 | } |
75 | 71 | } |
76 | 72 | |
77 | - mutex_unlock(&rfkill->mutex); | |
78 | 73 | return retval; |
79 | 74 | } |
80 | 75 | |
81 | 76 | |
82 | 77 | |
... | ... | @@ -158,12 +153,13 @@ |
158 | 153 | if (!capable(CAP_NET_ADMIN)) |
159 | 154 | return -EPERM; |
160 | 155 | |
156 | + if (mutex_lock_interruptible(&rfkill->mutex)) | |
157 | + return -ERESTARTSYS; | |
161 | 158 | error = rfkill_toggle_radio(rfkill, |
162 | 159 | state ? RFKILL_STATE_ON : RFKILL_STATE_OFF); |
163 | - if (error) | |
164 | - return error; | |
160 | + mutex_unlock(&rfkill->mutex); | |
165 | 161 | |
166 | - return count; | |
162 | + return error ? error : count; | |
167 | 163 | } |
168 | 164 | |
169 | 165 | static ssize_t rfkill_claim_show(struct device *dev, |