Commit ab1623da authored by Jeff Garzik's avatar Jeff Garzik

Merge branch 'master' into upstream

parents 5b85f29c dc710afe
...@@ -620,7 +620,7 @@ static int myri10ge_load_firmware(struct myri10ge_priv *mgp) ...@@ -620,7 +620,7 @@ static int myri10ge_load_firmware(struct myri10ge_priv *mgp)
return -ENXIO; return -ENXIO;
} }
dev_info(&mgp->pdev->dev, "handoff confirmed\n"); dev_info(&mgp->pdev->dev, "handoff confirmed\n");
myri10ge_dummy_rdma(mgp, mgp->tx.boundary != 4096); myri10ge_dummy_rdma(mgp, 1);
return 0; return 0;
} }
......
...@@ -516,10 +516,7 @@ static int skge_set_pauseparam(struct net_device *dev, ...@@ -516,10 +516,7 @@ static int skge_set_pauseparam(struct net_device *dev,
/* Chip internal frequency for clock calculations */ /* Chip internal frequency for clock calculations */
static inline u32 hwkhz(const struct skge_hw *hw) static inline u32 hwkhz(const struct skge_hw *hw)
{ {
if (hw->chip_id == CHIP_ID_GENESIS) return (hw->chip_id == CHIP_ID_GENESIS) ? 53125 : 78125;
return 53215; /* or: 53.125 MHz */
else
return 78215; /* or: 78.125 MHz */
} }
/* Chip HZ to microseconds */ /* Chip HZ to microseconds */
......
...@@ -2742,7 +2742,7 @@ static u32 check_connection_type(struct mac_regs __iomem * regs) ...@@ -2742,7 +2742,7 @@ static u32 check_connection_type(struct mac_regs __iomem * regs)
if (PHYSR0 & PHYSR0_SPDG) if (PHYSR0 & PHYSR0_SPDG)
status |= VELOCITY_SPEED_1000; status |= VELOCITY_SPEED_1000;
if (PHYSR0 & PHYSR0_SPD10) else if (PHYSR0 & PHYSR0_SPD10)
status |= VELOCITY_SPEED_10; status |= VELOCITY_SPEED_10;
else else
status |= VELOCITY_SPEED_100; status |= VELOCITY_SPEED_100;
...@@ -2851,8 +2851,17 @@ static int velocity_get_settings(struct net_device *dev, struct ethtool_cmd *cmd ...@@ -2851,8 +2851,17 @@ static int velocity_get_settings(struct net_device *dev, struct ethtool_cmd *cmd
u32 status; u32 status;
status = check_connection_type(vptr->mac_regs); status = check_connection_type(vptr->mac_regs);
cmd->supported = SUPPORTED_TP | SUPPORTED_Autoneg | SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full; cmd->supported = SUPPORTED_TP |
if (status & VELOCITY_SPEED_100) SUPPORTED_Autoneg |
SUPPORTED_10baseT_Half |
SUPPORTED_10baseT_Full |
SUPPORTED_100baseT_Half |
SUPPORTED_100baseT_Full |
SUPPORTED_1000baseT_Half |
SUPPORTED_1000baseT_Full;
if (status & VELOCITY_SPEED_1000)
cmd->speed = SPEED_1000;
else if (status & VELOCITY_SPEED_100)
cmd->speed = SPEED_100; cmd->speed = SPEED_100;
else else
cmd->speed = SPEED_10; cmd->speed = SPEED_10;
...@@ -2896,7 +2905,7 @@ static u32 velocity_get_link(struct net_device *dev) ...@@ -2896,7 +2905,7 @@ static u32 velocity_get_link(struct net_device *dev)
{ {
struct velocity_info *vptr = netdev_priv(dev); struct velocity_info *vptr = netdev_priv(dev);
struct mac_regs __iomem * regs = vptr->mac_regs; struct mac_regs __iomem * regs = vptr->mac_regs;
return BYTE_REG_BITS_IS_ON(PHYSR0_LINKGD, &regs->PHYSR0) ? 0 : 1; return BYTE_REG_BITS_IS_ON(PHYSR0_LINKGD, &regs->PHYSR0) ? 1 : 0;
} }
static void velocity_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) static void velocity_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info)
......
...@@ -447,6 +447,7 @@ config AIRO_CS ...@@ -447,6 +447,7 @@ config AIRO_CS
tristate "Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards" tristate "Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards"
depends on NET_RADIO && PCMCIA && (BROKEN || !M32R) depends on NET_RADIO && PCMCIA && (BROKEN || !M32R)
select CRYPTO select CRYPTO
select CRYPTO_AES
---help--- ---help---
This is the standard Linux driver to support Cisco/Aironet PCMCIA This is the standard Linux driver to support Cisco/Aironet PCMCIA
802.11 wireless cards. This driver is the same as the Aironet 802.11 wireless cards. This driver is the same as the Aironet
......
...@@ -3701,7 +3701,7 @@ static void bcm43xx_ieee80211_set_security(struct net_device *net_dev, ...@@ -3701,7 +3701,7 @@ static void bcm43xx_ieee80211_set_security(struct net_device *net_dev,
} }
if (sec->flags & SEC_AUTH_MODE) { if (sec->flags & SEC_AUTH_MODE) {
secinfo->auth_mode = sec->auth_mode; secinfo->auth_mode = sec->auth_mode;
dprintk(", .auth_mode = %d\n", sec->auth_mode); dprintk(", .auth_mode = %d", sec->auth_mode);
} }
dprintk("\n"); dprintk("\n");
if (bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED && if (bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED &&
......
...@@ -2875,7 +2875,7 @@ static int orinoco_ioctl_setiwencode(struct net_device *dev, ...@@ -2875,7 +2875,7 @@ static int orinoco_ioctl_setiwencode(struct net_device *dev,
if (orinoco_lock(priv, &flags) != 0) if (orinoco_lock(priv, &flags) != 0)
return -EBUSY; return -EBUSY;
if (erq->pointer) { if (erq->length > 0) {
if ((index < 0) || (index >= ORINOCO_MAX_KEYS)) if ((index < 0) || (index >= ORINOCO_MAX_KEYS))
index = priv->tx_key; index = priv->tx_key;
...@@ -2918,7 +2918,7 @@ static int orinoco_ioctl_setiwencode(struct net_device *dev, ...@@ -2918,7 +2918,7 @@ static int orinoco_ioctl_setiwencode(struct net_device *dev,
if (erq->flags & IW_ENCODE_RESTRICTED) if (erq->flags & IW_ENCODE_RESTRICTED)
restricted = 1; restricted = 1;
if (erq->pointer) { if (erq->pointer && erq->length > 0) {
priv->keys[index].len = cpu_to_le16(xlen); priv->keys[index].len = cpu_to_le16(xlen);
memset(priv->keys[index].data, 0, memset(priv->keys[index].data, 0,
sizeof(priv->keys[index].data)); sizeof(priv->keys[index].data));
......
...@@ -1820,6 +1820,8 @@ static int zd1201_probe(struct usb_interface *interface, ...@@ -1820,6 +1820,8 @@ static int zd1201_probe(struct usb_interface *interface,
zd->dev->name); zd->dev->name);
usb_set_intfdata(interface, zd); usb_set_intfdata(interface, zd);
zd1201_enable(zd); /* zd1201 likes to startup enabled, */
zd1201_disable(zd); /* interfering with all the wifis in range */
return 0; return 0;
err_net: err_net:
......
...@@ -58,6 +58,7 @@ config IEEE80211_CRYPT_TKIP ...@@ -58,6 +58,7 @@ config IEEE80211_CRYPT_TKIP
depends on IEEE80211 && NET_RADIO depends on IEEE80211 && NET_RADIO
select CRYPTO select CRYPTO
select CRYPTO_MICHAEL_MIC select CRYPTO_MICHAEL_MIC
select CRC32
---help--- ---help---
Include software based cipher suites in support of IEEE 802.11i Include software based cipher suites in support of IEEE 802.11i
(aka TGi, WPA, WPA2, WPA-PSK, etc.) for use with TKIP enabled (aka TGi, WPA, WPA2, WPA-PSK, etc.) for use with TKIP enabled
......
...@@ -116,6 +116,16 @@ ieee80211softmac_auth_queue(void *data) ...@@ -116,6 +116,16 @@ ieee80211softmac_auth_queue(void *data)
kfree(auth); kfree(auth);
} }
/* Sends a response to an auth challenge (for shared key auth). */
static void
ieee80211softmac_auth_challenge_response(void *_aq)
{
struct ieee80211softmac_auth_queue_item *aq = _aq;
/* Send our response */
ieee80211softmac_send_mgt_frame(aq->mac, aq->net, IEEE80211_STYPE_AUTH, aq->state);
}
/* Handle the auth response from the AP /* Handle the auth response from the AP
* This should be registered with ieee80211 as handle_auth * This should be registered with ieee80211 as handle_auth
*/ */
...@@ -197,24 +207,30 @@ ieee80211softmac_auth_resp(struct net_device *dev, struct ieee80211_auth *auth) ...@@ -197,24 +207,30 @@ ieee80211softmac_auth_resp(struct net_device *dev, struct ieee80211_auth *auth)
case IEEE80211SOFTMAC_AUTH_SHARED_CHALLENGE: case IEEE80211SOFTMAC_AUTH_SHARED_CHALLENGE:
/* Check to make sure we have a challenge IE */ /* Check to make sure we have a challenge IE */
data = (u8 *)auth->info_element; data = (u8 *)auth->info_element;
if(*data++ != MFIE_TYPE_CHALLENGE){ if (*data++ != MFIE_TYPE_CHALLENGE) {
printkl(KERN_NOTICE PFX "Shared Key Authentication failed due to a missing challenge.\n"); printkl(KERN_NOTICE PFX "Shared Key Authentication failed due to a missing challenge.\n");
break; break;
} }
/* Save the challenge */ /* Save the challenge */
spin_lock_irqsave(&mac->lock, flags); spin_lock_irqsave(&mac->lock, flags);
net->challenge_len = *data++; net->challenge_len = *data++;
if(net->challenge_len > WLAN_AUTH_CHALLENGE_LEN) if (net->challenge_len > WLAN_AUTH_CHALLENGE_LEN)
net->challenge_len = WLAN_AUTH_CHALLENGE_LEN; net->challenge_len = WLAN_AUTH_CHALLENGE_LEN;
if(net->challenge != NULL) if (net->challenge != NULL)
kfree(net->challenge); kfree(net->challenge);
net->challenge = kmalloc(net->challenge_len, GFP_ATOMIC); net->challenge = kmalloc(net->challenge_len, GFP_ATOMIC);
memcpy(net->challenge, data, net->challenge_len); memcpy(net->challenge, data, net->challenge_len);
aq->state = IEEE80211SOFTMAC_AUTH_SHARED_RESPONSE; aq->state = IEEE80211SOFTMAC_AUTH_SHARED_RESPONSE;
spin_unlock_irqrestore(&mac->lock, flags);
/* Send our response */ /* We reuse the work struct from the auth request here.
ieee80211softmac_send_mgt_frame(mac, aq->net, IEEE80211_STYPE_AUTH, aq->state); * It is safe to do so as each one is per-request, and
* at this point (dealing with authentication response)
* we have obviously already sent the initial auth
* request. */
cancel_delayed_work(&aq->work);
INIT_WORK(&aq->work, &ieee80211softmac_auth_challenge_response, (void *)aq);
schedule_work(&aq->work);
spin_unlock_irqrestore(&mac->lock, flags);
return 0; return 0;
case IEEE80211SOFTMAC_AUTH_SHARED_PASS: case IEEE80211SOFTMAC_AUTH_SHARED_PASS:
kfree(net->challenge); kfree(net->challenge);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment