aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/cfg.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-11-04 06:18:11 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-11-09 16:05:49 -0500
commit665c93a93e35cafcd8c84073824f1ef1b19f0a7d (patch)
treef466c5d30e1afd4e8201c916523574d563530785 /net/mac80211/cfg.c
parent6096de7fd4eeda305e114e7d74e6f47404590425 (diff)
mac80211: add support for control port protocol in AP mode
This will allow us to support dynamic WEP with 802.1X properly in mac80211 by not encrypting outgoing and accepting unencrypted incoming frames. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/cfg.c')
-rw-r--r--net/mac80211/cfg.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 65b72ae2b4e0..1f1056172ef1 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -594,6 +594,8 @@ static int ieee80211_add_beacon(struct wiphy *wiphy, struct net_device *dev,
594{ 594{
595 struct ieee80211_sub_if_data *sdata; 595 struct ieee80211_sub_if_data *sdata;
596 struct beacon_data *old; 596 struct beacon_data *old;
597 struct ieee80211_sub_if_data *vlan;
598 int ret;
597 599
598 sdata = IEEE80211_DEV_TO_SUB_IF(dev); 600 sdata = IEEE80211_DEV_TO_SUB_IF(dev);
599 601
@@ -601,7 +603,24 @@ static int ieee80211_add_beacon(struct wiphy *wiphy, struct net_device *dev,
601 if (old) 603 if (old)
602 return -EALREADY; 604 return -EALREADY;
603 605
604 return ieee80211_config_beacon(sdata, params); 606 ret = ieee80211_config_beacon(sdata, params);
607 if (ret)
608 return ret;
609
610 /*
611 * Apply control port protocol, this allows us to
612 * not encrypt dynamic WEP control frames.
613 */
614 sdata->control_port_protocol = params->crypto.control_port_ethertype;
615 sdata->control_port_no_encrypt = params->crypto.control_port_no_encrypt;
616 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) {
617 vlan->control_port_protocol =
618 params->crypto.control_port_ethertype;
619 vlan->control_port_no_encrypt =
620 params->crypto.control_port_no_encrypt;
621 }
622
623 return 0;
605} 624}
606 625
607static int ieee80211_set_beacon(struct wiphy *wiphy, struct net_device *dev, 626static int ieee80211_set_beacon(struct wiphy *wiphy, struct net_device *dev,