Merge branch 'fixes-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
@@ -144,7 +144,8 @@ static int ieee80211_copy_snap(u8 * data, u16 h_proto)
|
|||||||
snap->oui[1] = oui[1];
|
snap->oui[1] = oui[1];
|
||||||
snap->oui[2] = oui[2];
|
snap->oui[2] = oui[2];
|
||||||
|
|
||||||
*(u16 *) (data + SNAP_SIZE) = htons(h_proto);
|
h_proto = htons(h_proto);
|
||||||
|
memcpy(data + SNAP_SIZE, &h_proto, sizeof(u16));
|
||||||
|
|
||||||
return SNAP_SIZE + sizeof(u16);
|
return SNAP_SIZE + sizeof(u16);
|
||||||
}
|
}
|
||||||
|
@@ -216,6 +216,7 @@ static int ieee80211_open(struct net_device *dev)
|
|||||||
res = local->ops->start(local_to_hw(local));
|
res = local->ops->start(local_to_hw(local));
|
||||||
if (res)
|
if (res)
|
||||||
return res;
|
return res;
|
||||||
|
ieee80211_hw_config(local);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (sdata->type) {
|
switch (sdata->type) {
|
||||||
@@ -232,7 +233,6 @@ static int ieee80211_open(struct net_device *dev)
|
|||||||
netif_tx_unlock_bh(local->mdev);
|
netif_tx_unlock_bh(local->mdev);
|
||||||
|
|
||||||
local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP;
|
local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP;
|
||||||
ieee80211_hw_config(local);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IEEE80211_IF_TYPE_STA:
|
case IEEE80211_IF_TYPE_STA:
|
||||||
@@ -334,8 +334,7 @@ static int ieee80211_stop(struct net_device *dev)
|
|||||||
ieee80211_configure_filter(local);
|
ieee80211_configure_filter(local);
|
||||||
netif_tx_unlock_bh(local->mdev);
|
netif_tx_unlock_bh(local->mdev);
|
||||||
|
|
||||||
local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP;
|
local->hw.conf.flags &= ~IEEE80211_CONF_RADIOTAP;
|
||||||
ieee80211_hw_config(local);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IEEE80211_IF_TYPE_STA:
|
case IEEE80211_IF_TYPE_STA:
|
||||||
@@ -357,6 +356,11 @@ static int ieee80211_stop(struct net_device *dev)
|
|||||||
cancel_delayed_work(&local->scan_work);
|
cancel_delayed_work(&local->scan_work);
|
||||||
}
|
}
|
||||||
flush_workqueue(local->hw.workqueue);
|
flush_workqueue(local->hw.workqueue);
|
||||||
|
|
||||||
|
sdata->u.sta.flags &= ~IEEE80211_STA_PRIVACY_INVOKED;
|
||||||
|
kfree(sdata->u.sta.extra_ie);
|
||||||
|
sdata->u.sta.extra_ie = NULL;
|
||||||
|
sdata->u.sta.extra_ie_len = 0;
|
||||||
/* fall through */
|
/* fall through */
|
||||||
default:
|
default:
|
||||||
conf.if_id = dev->ifindex;
|
conf.if_id = dev->ifindex;
|
||||||
|
@@ -997,7 +997,7 @@ ieee80211_rx_h_drop_unencrypted(struct ieee80211_txrx_data *rx)
|
|||||||
if (unlikely(!(rx->fc & IEEE80211_FCTL_PROTECTED) &&
|
if (unlikely(!(rx->fc & IEEE80211_FCTL_PROTECTED) &&
|
||||||
(rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
|
(rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA &&
|
||||||
(rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC &&
|
(rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC &&
|
||||||
rx->sdata->drop_unencrypted &&
|
(rx->key || rx->sdata->drop_unencrypted) &&
|
||||||
(rx->sdata->eapol == 0 || !ieee80211_is_eapol(rx->skb)))) {
|
(rx->sdata->eapol == 0 || !ieee80211_is_eapol(rx->skb)))) {
|
||||||
if (net_ratelimit())
|
if (net_ratelimit())
|
||||||
printk(KERN_DEBUG "%s: RX non-WEP frame, but expected "
|
printk(KERN_DEBUG "%s: RX non-WEP frame, but expected "
|
||||||
|
@@ -265,7 +265,8 @@ int ieee80211_wep_decrypt(struct ieee80211_local *local, struct sk_buff *skb,
|
|||||||
if (ieee80211_wep_decrypt_data(local->wep_rx_tfm, rc4key, klen,
|
if (ieee80211_wep_decrypt_data(local->wep_rx_tfm, rc4key, klen,
|
||||||
skb->data + hdrlen + WEP_IV_LEN,
|
skb->data + hdrlen + WEP_IV_LEN,
|
||||||
len)) {
|
len)) {
|
||||||
printk(KERN_DEBUG "WEP decrypt failed (ICV)\n");
|
if (net_ratelimit())
|
||||||
|
printk(KERN_DEBUG "WEP decrypt failed (ICV)\n");
|
||||||
ret = -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -60,11 +60,7 @@ static void rfkill_led_trigger(struct rfkill *rfkill,
|
|||||||
static int rfkill_toggle_radio(struct rfkill *rfkill,
|
static int rfkill_toggle_radio(struct rfkill *rfkill,
|
||||||
enum rfkill_state state)
|
enum rfkill_state state)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval = 0;
|
||||||
|
|
||||||
retval = mutex_lock_interruptible(&rfkill->mutex);
|
|
||||||
if (retval)
|
|
||||||
return retval;
|
|
||||||
|
|
||||||
if (state != rfkill->state) {
|
if (state != rfkill->state) {
|
||||||
retval = rfkill->toggle_radio(rfkill->data, state);
|
retval = rfkill->toggle_radio(rfkill->data, state);
|
||||||
@@ -74,7 +70,6 @@ static int rfkill_toggle_radio(struct rfkill *rfkill,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_unlock(&rfkill->mutex);
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,12 +153,13 @@ static ssize_t rfkill_state_store(struct device *dev,
|
|||||||
if (!capable(CAP_NET_ADMIN))
|
if (!capable(CAP_NET_ADMIN))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
|
if (mutex_lock_interruptible(&rfkill->mutex))
|
||||||
|
return -ERESTARTSYS;
|
||||||
error = rfkill_toggle_radio(rfkill,
|
error = rfkill_toggle_radio(rfkill,
|
||||||
state ? RFKILL_STATE_ON : RFKILL_STATE_OFF);
|
state ? RFKILL_STATE_ON : RFKILL_STATE_OFF);
|
||||||
if (error)
|
mutex_unlock(&rfkill->mutex);
|
||||||
return error;
|
|
||||||
|
|
||||||
return count;
|
return error ? error : count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t rfkill_claim_show(struct device *dev,
|
static ssize_t rfkill_claim_show(struct device *dev,
|
||||||
|
Reference in New Issue
Block a user