cfg80211.c (6a98d64a27de16f88b97a493577a5fb9d18ec000) cfg80211.c (7d34b05605676736c6695ccdcec547055d07468f)
1/*
2 * Copyright (c) 2010 Broadcom Corporation
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES

--- 222 unchanged lines hidden (view full) ---

231 struct brcmf_vs_tlv vndrie;
232};
233
234struct parsed_vndr_ies {
235 u32 count;
236 struct parsed_vndr_ie_info ie_info[VNDR_IE_PARSE_LIMIT];
237};
238
1/*
2 * Copyright (c) 2010 Broadcom Corporation
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES

--- 222 unchanged lines hidden (view full) ---

231 struct brcmf_vs_tlv vndrie;
232};
233
234struct parsed_vndr_ies {
235 u32 count;
236 struct parsed_vndr_ie_info ie_info[VNDR_IE_PARSE_LIMIT];
237};
238
239static int brcmf_roamoff;
240module_param_named(roamoff, brcmf_roamoff, int, S_IRUSR);
241MODULE_PARM_DESC(roamoff, "do not use internal roaming engine");
242
239
243
244static u16 chandef_to_chanspec(struct brcmu_d11inf *d11inf,
245 struct cfg80211_chan_def *ch)
246{
247 struct brcmu_chan ch_inf;
248 s32 primary_offset;
249
250 brcmf_dbg(TRACE, "chandef: control %d center %d width %d\n",
251 ch->chan->center_freq, ch->center_freq1, ch->width);

--- 5138 unchanged lines hidden (view full) ---

5390static s32 brcmf_dongle_roam(struct brcmf_if *ifp)
5391{
5392 s32 err;
5393 u32 bcn_timeout;
5394 __le32 roamtrigger[2];
5395 __le32 roam_delta[2];
5396
5397 /* Configure beacon timeout value based upon roaming setting */
240static u16 chandef_to_chanspec(struct brcmu_d11inf *d11inf,
241 struct cfg80211_chan_def *ch)
242{
243 struct brcmu_chan ch_inf;
244 s32 primary_offset;
245
246 brcmf_dbg(TRACE, "chandef: control %d center %d width %d\n",
247 ch->chan->center_freq, ch->center_freq1, ch->width);

--- 5138 unchanged lines hidden (view full) ---

5386static s32 brcmf_dongle_roam(struct brcmf_if *ifp)
5387{
5388 s32 err;
5389 u32 bcn_timeout;
5390 __le32 roamtrigger[2];
5391 __le32 roam_delta[2];
5392
5393 /* Configure beacon timeout value based upon roaming setting */
5398 if (brcmf_roamoff)
5394 if (ifp->drvr->settings->roamoff)
5399 bcn_timeout = BRCMF_DEFAULT_BCN_TIMEOUT_ROAM_OFF;
5400 else
5401 bcn_timeout = BRCMF_DEFAULT_BCN_TIMEOUT_ROAM_ON;
5402 err = brcmf_fil_iovar_int_set(ifp, "bcn_timeout", bcn_timeout);
5403 if (err) {
5404 brcmf_err("bcn_timeout error (%d)\n", err);
5405 goto roam_setup_done;
5406 }
5407
5408 /* Enable/Disable built-in roaming to allow supplicant to take care of
5409 * roaming.
5410 */
5411 brcmf_dbg(INFO, "Internal Roaming = %s\n",
5395 bcn_timeout = BRCMF_DEFAULT_BCN_TIMEOUT_ROAM_OFF;
5396 else
5397 bcn_timeout = BRCMF_DEFAULT_BCN_TIMEOUT_ROAM_ON;
5398 err = brcmf_fil_iovar_int_set(ifp, "bcn_timeout", bcn_timeout);
5399 if (err) {
5400 brcmf_err("bcn_timeout error (%d)\n", err);
5401 goto roam_setup_done;
5402 }
5403
5404 /* Enable/Disable built-in roaming to allow supplicant to take care of
5405 * roaming.
5406 */
5407 brcmf_dbg(INFO, "Internal Roaming = %s\n",
5412 brcmf_roamoff ? "Off" : "On");
5413 err = brcmf_fil_iovar_int_set(ifp, "roam_off", !!(brcmf_roamoff));
5408 ifp->drvr->settings->roamoff ? "Off" : "On");
5409 err = brcmf_fil_iovar_int_set(ifp, "roam_off",
5410 ifp->drvr->settings->roamoff);
5414 if (err) {
5415 brcmf_err("roam_off error (%d)\n", err);
5416 goto roam_setup_done;
5417 }
5418
5419 roamtrigger[0] = cpu_to_le32(WL_ROAM_TRIGGER_LEVEL);
5420 roamtrigger[1] = cpu_to_le32(BRCM_BAND_ALL);
5421 err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_ROAM_TRIGGER,

--- 655 unchanged lines hidden (view full) ---

6077 wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM;
6078 wiphy->cipher_suites = __wl_cipher_suites;
6079 wiphy->n_cipher_suites = ARRAY_SIZE(__wl_cipher_suites);
6080 wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT |
6081 WIPHY_FLAG_OFFCHAN_TX |
6082 WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
6083 if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_TDLS))
6084 wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS;
5411 if (err) {
5412 brcmf_err("roam_off error (%d)\n", err);
5413 goto roam_setup_done;
5414 }
5415
5416 roamtrigger[0] = cpu_to_le32(WL_ROAM_TRIGGER_LEVEL);
5417 roamtrigger[1] = cpu_to_le32(BRCM_BAND_ALL);
5418 err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_ROAM_TRIGGER,

--- 655 unchanged lines hidden (view full) ---

6074 wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM;
6075 wiphy->cipher_suites = __wl_cipher_suites;
6076 wiphy->n_cipher_suites = ARRAY_SIZE(__wl_cipher_suites);
6077 wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT |
6078 WIPHY_FLAG_OFFCHAN_TX |
6079 WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
6080 if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_TDLS))
6081 wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS;
6085 if (!brcmf_roamoff)
6082 if (!ifp->drvr->settings->roamoff)
6086 wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM;
6087 wiphy->mgmt_stypes = brcmf_txrx_stypes;
6088 wiphy->max_remain_on_channel_duration = 5000;
6089 if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_PNO))
6090 brcmf_wiphy_pno_params(wiphy);
6091
6092 /* vendor commands/events support */
6093 wiphy->vendor_commands = brcmf_vendor_cmds;

--- 432 unchanged lines hidden ---
6083 wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM;
6084 wiphy->mgmt_stypes = brcmf_txrx_stypes;
6085 wiphy->max_remain_on_channel_duration = 5000;
6086 if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_PNO))
6087 brcmf_wiphy_pno_params(wiphy);
6088
6089 /* vendor commands/events support */
6090 wiphy->vendor_commands = brcmf_vendor_cmds;

--- 432 unchanged lines hidden ---