The following changes since commit 59d4b684fbe74b25ac8593f39d2aaa86aa485b1f: John W. Linville: Merge branch 'upstream-fixes' into upstream
are found in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git upstream Arjan van de Ven: unused exports in wireless drivers Daniel Drake: set_security implementation inside softmac drivers/net/wireless/bcm43xx/bcm43xx_main.c | 38 +++---------------- drivers/net/wireless/hostap/hostap_80211_tx.c | 1 - drivers/net/wireless/hostap/hostap_ap.c | 11 ------ drivers/net/wireless/hostap/hostap_main.c | 2 - include/net/ieee80211softmac.h | 4 ++ net/ieee80211/softmac/ieee80211softmac_module.c | 46 +++++++++++++++++++++++ 6 files changed, 55 insertions(+), 47 deletions(-) diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/bcm43xx/bcm43xx_main.c index c050290..17b59ef 100644 --- a/drivers/net/wireless/bcm43xx/bcm43xx_main.c +++ b/drivers/net/wireless/bcm43xx/bcm43xx_main.c @@ -3547,8 +3547,7 @@ static void bcm43xx_ieee80211_set_chan(s } /* set_security() callback in struct ieee80211_device */ -static void bcm43xx_ieee80211_set_security(struct net_device *net_dev, - struct ieee80211_security *sec) +static void bcm43xx_ieee80211_set_security(struct net_device *net_dev) { struct bcm43xx_private *bcm = bcm43xx_priv(net_dev); struct ieee80211_security *secinfo = &bcm->ieee->sec; @@ -3559,42 +3558,15 @@ static void bcm43xx_ieee80211_set_securi bcm43xx_lock_mmio(bcm, flags); - for (keyidx = 0; keyidx<WEP_KEYS; keyidx++) - if (sec->flags & (1<<keyidx)) { - secinfo->encode_alg[keyidx] = sec->encode_alg[keyidx]; - secinfo->key_sizes[keyidx] = sec->key_sizes[keyidx]; - memcpy(secinfo->keys[keyidx], sec->keys[keyidx], SCM_KEY_LEN); - } - - if (sec->flags & SEC_ACTIVE_KEY) { - secinfo->active_key = sec->active_key; - dprintk(KERN_INFO PFX " .active_key = %d\n", sec->active_key); - } - if (sec->flags & SEC_UNICAST_GROUP) { - secinfo->unicast_uses_group = sec->unicast_uses_group; - dprintk(KERN_INFO PFX " .unicast_uses_group = %d\n", sec->unicast_uses_group); - } - if (sec->flags & SEC_LEVEL) { - secinfo->level = sec->level; - dprintk(KERN_INFO PFX " .level = %d\n", sec->level); - } - if (sec->flags & SEC_ENABLED) { - secinfo->enabled = sec->enabled; - dprintk(KERN_INFO PFX " .enabled = %d\n", sec->enabled); - } - if (sec->flags & SEC_ENCRYPT) { - secinfo->encrypt = sec->encrypt; - dprintk(KERN_INFO PFX " .encrypt = %d\n", sec->encrypt); - } if (bcm->initialized && !bcm->ieee->host_encrypt) { if (secinfo->enabled) { /* upload WEP keys to hardware */ char null_address[6] = { 0 }; u8 algorithm = 0; for (keyidx = 0; keyidx<WEP_KEYS; keyidx++) { - if (!(sec->flags & (1<<keyidx))) + if (!(secinfo->flags & (1<<keyidx))) continue; - switch (sec->encode_alg[keyidx]) { + switch (secinfo->encode_alg[keyidx]) { case SEC_ALG_NONE: algorithm = BCM43xx_SEC_ALGO_NONE; break; case SEC_ALG_WEP: algorithm = BCM43xx_SEC_ALGO_WEP; @@ -3613,7 +3585,7 @@ static void bcm43xx_ieee80211_set_securi assert(0); break; } - bcm43xx_key_write(bcm, keyidx, algorithm, sec->keys[keyidx], secinfo->key_sizes[keyidx], &null_address[0]); + bcm43xx_key_write(bcm, keyidx, algorithm, secinfo->keys[keyidx], secinfo->key_sizes[keyidx], &null_address[0]); bcm->key[keyidx].enabled = 1; bcm->key[keyidx].algorithm = algorithm; } @@ -3694,6 +3666,7 @@ static int bcm43xx_init_private(struct b bcm->ieee = netdev_priv(net_dev); bcm->softmac = ieee80211_priv(net_dev); bcm->softmac->set_channel = bcm43xx_ieee80211_set_chan; + bcm->softmac->set_security = bcm43xx_ieee80211_set_security; bcm->irq_savedstate = BCM43xx_IRQ_INITIAL; bcm->pci_dev = pci_dev; @@ -3729,7 +3702,6 @@ #endif /* CONFIG_BCM43XX_PIO */ bcm->ieee->iw_mode = BCM43xx_INITIAL_IWMODE; bcm->ieee->tx_headroom = sizeof(struct bcm43xx_txhdr); - bcm->ieee->set_security = bcm43xx_ieee80211_set_security; bcm->ieee->hard_start_xmit = bcm43xx_ieee80211_hard_start_xmit; return 0; diff --git a/drivers/net/wireless/hostap/hostap_80211_tx.c b/drivers/net/wireless/hostap/hostap_80211_tx.c index 06a5214..4a5be70 100644 --- a/drivers/net/wireless/hostap/hostap_80211_tx.c +++ b/drivers/net/wireless/hostap/hostap_80211_tx.c @@ -534,5 +534,4 @@ int hostap_master_start_xmit(struct sk_b } -EXPORT_SYMBOL(hostap_dump_tx_80211); EXPORT_SYMBOL(hostap_master_start_xmit); diff --git a/drivers/net/wireless/hostap/hostap_ap.c b/drivers/net/wireless/hostap/hostap_ap.c index 06c3fa3..ba13125 100644 --- a/drivers/net/wireless/hostap/hostap_ap.c +++ b/drivers/net/wireless/hostap/hostap_ap.c @@ -3276,17 +3276,6 @@ EXPORT_SYMBOL(hostap_init_data); EXPORT_SYMBOL(hostap_init_ap_proc); EXPORT_SYMBOL(hostap_free_data); EXPORT_SYMBOL(hostap_check_sta_fw_version); -EXPORT_SYMBOL(hostap_handle_sta_tx); -EXPORT_SYMBOL(hostap_handle_sta_release); EXPORT_SYMBOL(hostap_handle_sta_tx_exc); -EXPORT_SYMBOL(hostap_update_sta_ps); -EXPORT_SYMBOL(hostap_handle_sta_rx); -EXPORT_SYMBOL(hostap_is_sta_assoc); -EXPORT_SYMBOL(hostap_is_sta_authorized); -EXPORT_SYMBOL(hostap_add_sta); -EXPORT_SYMBOL(hostap_update_rates); -EXPORT_SYMBOL(hostap_add_wds_links); -EXPORT_SYMBOL(hostap_wds_link_oper); #ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT -EXPORT_SYMBOL(hostap_deauth_all_stas); #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ diff --git a/drivers/net/wireless/hostap/hostap_main.c b/drivers/net/wireless/hostap/hostap_main.c index 8dd4c44..93786f4 100644 --- a/drivers/net/wireless/hostap/hostap_main.c +++ b/drivers/net/wireless/hostap/hostap_main.c @@ -1125,11 +1125,9 @@ EXPORT_SYMBOL(hostap_set_auth_algs); EXPORT_SYMBOL(hostap_dump_rx_header); EXPORT_SYMBOL(hostap_dump_tx_header); EXPORT_SYMBOL(hostap_80211_header_parse); -EXPORT_SYMBOL(hostap_80211_prism_header_parse); EXPORT_SYMBOL(hostap_80211_get_hdrlen); EXPORT_SYMBOL(hostap_get_stats); EXPORT_SYMBOL(hostap_setup_dev); -EXPORT_SYMBOL(hostap_proc); EXPORT_SYMBOL(hostap_set_multicast_list_queue); EXPORT_SYMBOL(hostap_set_hostapd); EXPORT_SYMBOL(hostap_set_hostapd_sta); diff --git a/include/net/ieee80211softmac.h b/include/net/ieee80211softmac.h index 703463a..1729842 100644 --- a/include/net/ieee80211softmac.h +++ b/include/net/ieee80211softmac.h @@ -172,6 +172,10 @@ struct ieee80211softmac_device { void (*set_bssid_filter)(struct net_device *dev, const u8 *bssid); void (*set_channel)(struct net_device *dev, u8 channel); + /* implement this if you need to configure hardware encryption + * when the user changes security settings */ + void (*set_security)(struct net_device *dev); + /* assign if you need it, informational only */ void (*link_change)(struct net_device *dev); diff --git a/net/ieee80211/softmac/ieee80211softmac_module.c b/net/ieee80211/softmac/ieee80211softmac_module.c index 4b2e57d..03cd26c 100644 --- a/net/ieee80211/softmac/ieee80211softmac_module.c +++ b/net/ieee80211/softmac/ieee80211softmac_module.c @@ -27,6 +27,51 @@ #include "ieee80211softmac_priv.h" #include <linux/sort.h> #include <linux/etherdevice.h> +#include <net/ieee80211.h> + +static void set_security(struct net_device *dev, + struct ieee80211_security *sec) +{ + struct ieee80211softmac_device *mac = ieee80211_priv(dev); + struct ieee80211_device *ieee = mac->ieee; + struct ieee80211_security *secinfo = &ieee->sec; + int keyidx; + + dprintk(KERN_NOTICE PFX "set_security:\n"); + secinfo->flags = sec->flags; + + for (keyidx = 0; keyidx < WEP_KEYS; keyidx++) + if (sec->flags & (1 << keyidx)) { + secinfo->encode_alg[keyidx] = sec->encode_alg[keyidx]; + secinfo->key_sizes[keyidx] = sec->key_sizes[keyidx]; + memcpy(secinfo->keys[keyidx], sec->keys[keyidx], + SCM_KEY_LEN); + } + + if (sec->flags & SEC_ACTIVE_KEY) { + secinfo->active_key = sec->active_key; + dprintk(" .active_key = %d\n", sec->active_key); + } + if (sec->flags & SEC_UNICAST_GROUP) { + secinfo->unicast_uses_group = sec->unicast_uses_group; + dprintk(" .unicast_uses_group = %d\n", sec->unicast_uses_group); + } + if (sec->flags & SEC_LEVEL) { + secinfo->level = sec->level; + dprintk(" .level = %d\n", sec->level); + } + if (sec->flags & SEC_ENABLED) { + secinfo->enabled = sec->enabled; + dprintk(" .enabled = %d\n", sec->enabled); + } + if (sec->flags & SEC_ENCRYPT) { + secinfo->encrypt = sec->encrypt; + dprintk(" .encrypt = %d\n", sec->encrypt); + } + + if (mac->set_security) + mac->set_security(dev); +} struct net_device *alloc_ieee80211softmac(int sizeof_priv) { @@ -44,6 +89,7 @@ struct net_device *alloc_ieee80211softma softmac->ieee->handle_assoc_response = ieee80211softmac_handle_assoc_response; softmac->ieee->handle_reassoc_request = ieee80211softmac_handle_reassoc_req; softmac->ieee->handle_disassoc = ieee80211softmac_handle_disassoc; + softmac->ieee->set_security = set_security; softmac->scaninfo = NULL; softmac->associnfo.scan_retry = IEEE80211SOFTMAC_ASSOC_SCAN_RETRY_LIMIT; -- John W. Linville [EMAIL PROTECTED] - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html