diff options
author | Arend van Spriel <arend@broadcom.com> | 2014-03-15 12:18:21 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-03-17 13:44:14 -0400 |
commit | 967fe2c82dd8f8d16e873ebdf2328ec4d3258930 (patch) | |
tree | 688f1bac2080d4c2c011be1e6fb8ecb65ba1b08d | |
parent | 8a385ba542dd6d20e3067d486f5f75ff71baa4db (diff) |
brcmfmac: remove mode field from brcmf_cfg80211_vif structure
The nl80211 iftype was converted to a mode value and stored in
brcmf_cfg80211_vif structure. The value was used only within
brcmfmac driver to decide execution of conditional code. Better
use wireless_dev::iftype for that as the wdev is contained in
the brcmf_cfg80211_vif structure.
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 60 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h | 17 |
3 files changed, 21 insertions, 62 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c index fc4f98b275d7..f3445ac627e4 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c | |||
@@ -797,7 +797,8 @@ static s32 brcmf_p2p_run_escan(struct brcmf_cfg80211_info *cfg, | |||
797 | /* SOCIAL CHANNELS 1, 6, 11 */ | 797 | /* SOCIAL CHANNELS 1, 6, 11 */ |
798 | search_state = WL_P2P_DISC_ST_SEARCH; | 798 | search_state = WL_P2P_DISC_ST_SEARCH; |
799 | brcmf_dbg(INFO, "P2P SEARCH PHASE START\n"); | 799 | brcmf_dbg(INFO, "P2P SEARCH PHASE START\n"); |
800 | } else if (dev != NULL && vif->mode == WL_MODE_AP) { | 800 | } else if (dev != NULL && |
801 | vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) { | ||
801 | /* If you are already a GO, then do SEARCH only */ | 802 | /* If you are already a GO, then do SEARCH only */ |
802 | brcmf_dbg(INFO, "Already a GO. Do SEARCH Only\n"); | 803 | brcmf_dbg(INFO, "Already a GO. Do SEARCH Only\n"); |
803 | search_state = WL_P2P_DISC_ST_SEARCH; | 804 | search_state = WL_P2P_DISC_ST_SEARCH; |
@@ -2256,7 +2257,6 @@ struct wireless_dev *brcmf_p2p_add_vif(struct wiphy *wiphy, const char *name, | |||
2256 | struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); | 2257 | struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); |
2257 | struct brcmf_cfg80211_vif *vif; | 2258 | struct brcmf_cfg80211_vif *vif; |
2258 | enum brcmf_fil_p2p_if_types iftype; | 2259 | enum brcmf_fil_p2p_if_types iftype; |
2259 | enum wl_mode mode; | ||
2260 | int err; | 2260 | int err; |
2261 | 2261 | ||
2262 | if (brcmf_cfg80211_vif_event_armed(cfg)) | 2262 | if (brcmf_cfg80211_vif_event_armed(cfg)) |
@@ -2267,11 +2267,9 @@ struct wireless_dev *brcmf_p2p_add_vif(struct wiphy *wiphy, const char *name, | |||
2267 | switch (type) { | 2267 | switch (type) { |
2268 | case NL80211_IFTYPE_P2P_CLIENT: | 2268 | case NL80211_IFTYPE_P2P_CLIENT: |
2269 | iftype = BRCMF_FIL_P2P_IF_CLIENT; | 2269 | iftype = BRCMF_FIL_P2P_IF_CLIENT; |
2270 | mode = WL_MODE_BSS; | ||
2271 | break; | 2270 | break; |
2272 | case NL80211_IFTYPE_P2P_GO: | 2271 | case NL80211_IFTYPE_P2P_GO: |
2273 | iftype = BRCMF_FIL_P2P_IF_GO; | 2272 | iftype = BRCMF_FIL_P2P_IF_GO; |
2274 | mode = WL_MODE_AP; | ||
2275 | break; | 2273 | break; |
2276 | case NL80211_IFTYPE_P2P_DEVICE: | 2274 | case NL80211_IFTYPE_P2P_DEVICE: |
2277 | return brcmf_p2p_create_p2pdev(&cfg->p2p, wiphy, | 2275 | return brcmf_p2p_create_p2pdev(&cfg->p2p, wiphy, |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index adbd5b733147..9f75afb3baa0 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | |||
@@ -494,6 +494,19 @@ brcmf_configure_arp_offload(struct brcmf_if *ifp, bool enable) | |||
494 | return err; | 494 | return err; |
495 | } | 495 | } |
496 | 496 | ||
497 | static bool brcmf_is_apmode(struct brcmf_cfg80211_vif *vif) | ||
498 | { | ||
499 | enum nl80211_iftype iftype; | ||
500 | |||
501 | iftype = vif->wdev.iftype; | ||
502 | return iftype == NL80211_IFTYPE_AP || iftype == NL80211_IFTYPE_P2P_GO; | ||
503 | } | ||
504 | |||
505 | static bool brcmf_is_ibssmode(struct brcmf_cfg80211_vif *vif) | ||
506 | { | ||
507 | return vif->wdev.iftype == NL80211_IFTYPE_ADHOC; | ||
508 | } | ||
509 | |||
497 | static struct wireless_dev *brcmf_cfg80211_add_iface(struct wiphy *wiphy, | 510 | static struct wireless_dev *brcmf_cfg80211_add_iface(struct wiphy *wiphy, |
498 | const char *name, | 511 | const char *name, |
499 | enum nl80211_iftype type, | 512 | enum nl80211_iftype type, |
@@ -654,7 +667,6 @@ brcmf_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev, | |||
654 | type); | 667 | type); |
655 | return -EOPNOTSUPP; | 668 | return -EOPNOTSUPP; |
656 | case NL80211_IFTYPE_ADHOC: | 669 | case NL80211_IFTYPE_ADHOC: |
657 | vif->mode = WL_MODE_IBSS; | ||
658 | infra = 0; | 670 | infra = 0; |
659 | break; | 671 | break; |
660 | case NL80211_IFTYPE_STATION: | 672 | case NL80211_IFTYPE_STATION: |
@@ -670,12 +682,10 @@ brcmf_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev, | |||
670 | */ | 682 | */ |
671 | return 0; | 683 | return 0; |
672 | } | 684 | } |
673 | vif->mode = WL_MODE_BSS; | ||
674 | infra = 1; | 685 | infra = 1; |
675 | break; | 686 | break; |
676 | case NL80211_IFTYPE_AP: | 687 | case NL80211_IFTYPE_AP: |
677 | case NL80211_IFTYPE_P2P_GO: | 688 | case NL80211_IFTYPE_P2P_GO: |
678 | vif->mode = WL_MODE_AP; | ||
679 | ap = 1; | 689 | ap = 1; |
680 | break; | 690 | break; |
681 | default: | 691 | default: |
@@ -699,7 +709,7 @@ brcmf_cfg80211_change_iface(struct wiphy *wiphy, struct net_device *ndev, | |||
699 | err = -EAGAIN; | 709 | err = -EAGAIN; |
700 | goto done; | 710 | goto done; |
701 | } | 711 | } |
702 | brcmf_dbg(INFO, "IF Type = %s\n", (vif->mode == WL_MODE_IBSS) ? | 712 | brcmf_dbg(INFO, "IF Type = %s\n", brcmf_is_ibssmode(vif) ? |
703 | "Adhoc" : "Infra"); | 713 | "Adhoc" : "Infra"); |
704 | } | 714 | } |
705 | ndev->ieee80211_ptr->iftype = type; | 715 | ndev->ieee80211_ptr->iftype = type; |
@@ -1923,7 +1933,7 @@ brcmf_add_keyext(struct wiphy *wiphy, struct net_device *ndev, | |||
1923 | brcmf_dbg(CONN, "Setting the key index %d\n", key.index); | 1933 | brcmf_dbg(CONN, "Setting the key index %d\n", key.index); |
1924 | memcpy(key.data, params->key, key.len); | 1934 | memcpy(key.data, params->key, key.len); |
1925 | 1935 | ||
1926 | if ((ifp->vif->mode != WL_MODE_AP) && | 1936 | if (!brcmf_is_apmode(ifp->vif) && |
1927 | (params->cipher == WLAN_CIPHER_SUITE_TKIP)) { | 1937 | (params->cipher == WLAN_CIPHER_SUITE_TKIP)) { |
1928 | brcmf_dbg(CONN, "Swapping RX/TX MIC key\n"); | 1938 | brcmf_dbg(CONN, "Swapping RX/TX MIC key\n"); |
1929 | memcpy(keybuf, &key.data[24], sizeof(keybuf)); | 1939 | memcpy(keybuf, &key.data[24], sizeof(keybuf)); |
@@ -2022,7 +2032,7 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev, | |||
2022 | brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_WEP104\n"); | 2032 | brcmf_dbg(CONN, "WLAN_CIPHER_SUITE_WEP104\n"); |
2023 | break; | 2033 | break; |
2024 | case WLAN_CIPHER_SUITE_TKIP: | 2034 | case WLAN_CIPHER_SUITE_TKIP: |
2025 | if (ifp->vif->mode != WL_MODE_AP) { | 2035 | if (!brcmf_is_apmode(ifp->vif)) { |
2026 | brcmf_dbg(CONN, "Swapping RX/TX MIC key\n"); | 2036 | brcmf_dbg(CONN, "Swapping RX/TX MIC key\n"); |
2027 | memcpy(keybuf, &key.data[24], sizeof(keybuf)); | 2037 | memcpy(keybuf, &key.data[24], sizeof(keybuf)); |
2028 | memcpy(&key.data[24], &key.data[16], sizeof(keybuf)); | 2038 | memcpy(&key.data[24], &key.data[16], sizeof(keybuf)); |
@@ -2183,7 +2193,7 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, | |||
2183 | if (!check_vif_up(ifp->vif)) | 2193 | if (!check_vif_up(ifp->vif)) |
2184 | return -EIO; | 2194 | return -EIO; |
2185 | 2195 | ||
2186 | if (ifp->vif->mode == WL_MODE_AP) { | 2196 | if (brcmf_is_apmode(ifp->vif)) { |
2187 | memcpy(&sta_info_le, mac, ETH_ALEN); | 2197 | memcpy(&sta_info_le, mac, ETH_ALEN); |
2188 | err = brcmf_fil_iovar_data_get(ifp, "sta_info", | 2198 | err = brcmf_fil_iovar_data_get(ifp, "sta_info", |
2189 | &sta_info_le, | 2199 | &sta_info_le, |
@@ -2200,7 +2210,7 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, | |||
2200 | } | 2210 | } |
2201 | brcmf_dbg(TRACE, "STA idle time : %d ms, connected time :%d sec\n", | 2211 | brcmf_dbg(TRACE, "STA idle time : %d ms, connected time :%d sec\n", |
2202 | sinfo->inactive_time, sinfo->connected_time); | 2212 | sinfo->inactive_time, sinfo->connected_time); |
2203 | } else if (ifp->vif->mode == WL_MODE_BSS) { | 2213 | } else if (ifp->vif->wdev.iftype == NL80211_IFTYPE_STATION) { |
2204 | if (memcmp(mac, bssid, ETH_ALEN)) { | 2214 | if (memcmp(mac, bssid, ETH_ALEN)) { |
2205 | brcmf_err("Wrong Mac address cfg_mac-%pM wl_bssid-%pM\n", | 2215 | brcmf_err("Wrong Mac address cfg_mac-%pM wl_bssid-%pM\n", |
2206 | mac, bssid); | 2216 | mac, bssid); |
@@ -2482,11 +2492,6 @@ CleanUp: | |||
2482 | return err; | 2492 | return err; |
2483 | } | 2493 | } |
2484 | 2494 | ||
2485 | static bool brcmf_is_ibssmode(struct brcmf_cfg80211_vif *vif) | ||
2486 | { | ||
2487 | return vif->mode == WL_MODE_IBSS; | ||
2488 | } | ||
2489 | |||
2490 | static s32 brcmf_update_bss_info(struct brcmf_cfg80211_info *cfg, | 2495 | static s32 brcmf_update_bss_info(struct brcmf_cfg80211_info *cfg, |
2491 | struct brcmf_if *ifp) | 2496 | struct brcmf_if *ifp) |
2492 | { | 2497 | { |
@@ -4259,32 +4264,6 @@ static struct cfg80211_ops wl_cfg80211_ops = { | |||
4259 | CFG80211_TESTMODE_CMD(brcmf_cfg80211_testmode) | 4264 | CFG80211_TESTMODE_CMD(brcmf_cfg80211_testmode) |
4260 | }; | 4265 | }; |
4261 | 4266 | ||
4262 | static s32 brcmf_nl80211_iftype_to_mode(enum nl80211_iftype type) | ||
4263 | { | ||
4264 | switch (type) { | ||
4265 | case NL80211_IFTYPE_AP_VLAN: | ||
4266 | case NL80211_IFTYPE_WDS: | ||
4267 | case NL80211_IFTYPE_MONITOR: | ||
4268 | case NL80211_IFTYPE_MESH_POINT: | ||
4269 | return -ENOTSUPP; | ||
4270 | case NL80211_IFTYPE_ADHOC: | ||
4271 | return WL_MODE_IBSS; | ||
4272 | case NL80211_IFTYPE_STATION: | ||
4273 | case NL80211_IFTYPE_P2P_CLIENT: | ||
4274 | return WL_MODE_BSS; | ||
4275 | case NL80211_IFTYPE_AP: | ||
4276 | case NL80211_IFTYPE_P2P_GO: | ||
4277 | return WL_MODE_AP; | ||
4278 | case NL80211_IFTYPE_P2P_DEVICE: | ||
4279 | return WL_MODE_P2P; | ||
4280 | case NL80211_IFTYPE_UNSPECIFIED: | ||
4281 | default: | ||
4282 | break; | ||
4283 | } | ||
4284 | |||
4285 | return -EINVAL; | ||
4286 | } | ||
4287 | |||
4288 | static void brcmf_wiphy_pno_params(struct wiphy *wiphy) | 4267 | static void brcmf_wiphy_pno_params(struct wiphy *wiphy) |
4289 | { | 4268 | { |
4290 | /* scheduled scan settings */ | 4269 | /* scheduled scan settings */ |
@@ -4409,7 +4388,6 @@ struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg, | |||
4409 | vif->wdev.wiphy = cfg->wiphy; | 4388 | vif->wdev.wiphy = cfg->wiphy; |
4410 | vif->wdev.iftype = type; | 4389 | vif->wdev.iftype = type; |
4411 | 4390 | ||
4412 | vif->mode = brcmf_nl80211_iftype_to_mode(type); | ||
4413 | vif->pm_block = pm_block; | 4391 | vif->pm_block = pm_block; |
4414 | vif->roam_off = -1; | 4392 | vif->roam_off = -1; |
4415 | 4393 | ||
@@ -4703,7 +4681,7 @@ brcmf_notify_connect_status(struct brcmf_if *ifp, | |||
4703 | s32 err = 0; | 4681 | s32 err = 0; |
4704 | u16 reason; | 4682 | u16 reason; |
4705 | 4683 | ||
4706 | if (ifp->vif->mode == WL_MODE_AP) { | 4684 | if (brcmf_is_apmode(ifp->vif)) { |
4707 | err = brcmf_notify_connect_status_ap(cfg, ndev, e, data); | 4685 | err = brcmf_notify_connect_status_ap(cfg, ndev, e, data); |
4708 | } else if (brcmf_is_linkup(e)) { | 4686 | } else if (brcmf_is_linkup(e)) { |
4709 | brcmf_dbg(CONN, "Linkup\n"); | 4687 | brcmf_dbg(CONN, "Linkup\n"); |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h index 5715bb0708cf..283c525a44f7 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h | |||
@@ -89,21 +89,6 @@ enum brcmf_scan_status { | |||
89 | BRCMF_SCAN_STATUS_SUPPRESS, | 89 | BRCMF_SCAN_STATUS_SUPPRESS, |
90 | }; | 90 | }; |
91 | 91 | ||
92 | /** | ||
93 | * enum wl_mode - driver mode of virtual interface. | ||
94 | * | ||
95 | * @WL_MODE_BSS: connects to BSS. | ||
96 | * @WL_MODE_IBSS: operate as ad-hoc. | ||
97 | * @WL_MODE_AP: operate as access-point. | ||
98 | * @WL_MODE_P2P: provide P2P discovery. | ||
99 | */ | ||
100 | enum wl_mode { | ||
101 | WL_MODE_BSS, | ||
102 | WL_MODE_IBSS, | ||
103 | WL_MODE_AP, | ||
104 | WL_MODE_P2P | ||
105 | }; | ||
106 | |||
107 | /* dongle configuration */ | 92 | /* dongle configuration */ |
108 | struct brcmf_cfg80211_conf { | 93 | struct brcmf_cfg80211_conf { |
109 | u32 frag_threshold; | 94 | u32 frag_threshold; |
@@ -193,7 +178,6 @@ struct vif_saved_ie { | |||
193 | * @ifp: lower layer interface pointer | 178 | * @ifp: lower layer interface pointer |
194 | * @wdev: wireless device. | 179 | * @wdev: wireless device. |
195 | * @profile: profile information. | 180 | * @profile: profile information. |
196 | * @mode: operating mode. | ||
197 | * @roam_off: roaming state. | 181 | * @roam_off: roaming state. |
198 | * @sme_state: SME state using enum brcmf_vif_status bits. | 182 | * @sme_state: SME state using enum brcmf_vif_status bits. |
199 | * @pm_block: power-management blocked. | 183 | * @pm_block: power-management blocked. |
@@ -204,7 +188,6 @@ struct brcmf_cfg80211_vif { | |||
204 | struct brcmf_if *ifp; | 188 | struct brcmf_if *ifp; |
205 | struct wireless_dev wdev; | 189 | struct wireless_dev wdev; |
206 | struct brcmf_cfg80211_profile profile; | 190 | struct brcmf_cfg80211_profile profile; |
207 | s32 mode; | ||
208 | s32 roam_off; | 191 | s32 roam_off; |
209 | unsigned long sme_state; | 192 | unsigned long sme_state; |
210 | bool pm_block; | 193 | bool pm_block; |