| OLD | NEW |
| 1 /****************************************************************************** | 1 /****************************************************************************** |
| 2 * | 2 * |
| 3 * GPL LICENSE SUMMARY | 3 * GPL LICENSE SUMMARY |
| 4 * | 4 * |
| 5 * Copyright(c) 2008 - 2010 Intel Corporation. All rights reserved. | 5 * Copyright(c) 2008 - 2010 Intel Corporation. All rights reserved. |
| 6 * | 6 * |
| 7 * This program is free software; you can redistribute it and/or modify | 7 * This program is free software; you can redistribute it and/or modify |
| 8 * it under the terms of version 2 of the GNU General Public License as | 8 * it under the terms of version 2 of the GNU General Public License as |
| 9 * published by the Free Software Foundation. | 9 * published by the Free Software Foundation. |
| 10 * | 10 * |
| (...skipping 1310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1321 /* Disable L1-Active */ | 1321 /* Disable L1-Active */ |
| 1322 iwl_set_bits_prph(priv, APMG_PCIDEV_STT_REG, | 1322 iwl_set_bits_prph(priv, APMG_PCIDEV_STT_REG, |
| 1323 APMG_PCIDEV_STT_VAL_L1_ACT_DIS); | 1323 APMG_PCIDEV_STT_VAL_L1_ACT_DIS); |
| 1324 | 1324 |
| 1325 out: | 1325 out: |
| 1326 return ret; | 1326 return ret; |
| 1327 } | 1327 } |
| 1328 EXPORT_SYMBOL(iwl_apm_init); | 1328 EXPORT_SYMBOL(iwl_apm_init); |
| 1329 | 1329 |
| 1330 | 1330 |
| 1331 | |
| 1332 void iwl_configure_filter(struct ieee80211_hw *hw, | |
| 1333 unsigned int changed_flags, | |
| 1334 unsigned int *total_flags, | |
| 1335 u64 multicast) | |
| 1336 { | |
| 1337 struct iwl_priv *priv = hw->priv; | |
| 1338 __le32 filter_or = 0, filter_nand = 0; | |
| 1339 | |
| 1340 #define CHK(test, flag) do { \ | |
| 1341 if (*total_flags & (test)) \ | |
| 1342 filter_or |= (flag); \ | |
| 1343 else \ | |
| 1344 filter_nand |= (flag); \ | |
| 1345 } while (0) | |
| 1346 | |
| 1347 IWL_DEBUG_MAC80211(priv, "Enter: changed: 0x%x, total: 0x%x\n", | |
| 1348 changed_flags, *total_flags); | |
| 1349 | |
| 1350 CHK(FIF_OTHER_BSS | FIF_PROMISC_IN_BSS, RXON_FILTER_PROMISC_MSK); | |
| 1351 CHK(FIF_CONTROL, RXON_FILTER_CTL2HOST_MSK); | |
| 1352 CHK(FIF_BCN_PRBRESP_PROMISC, RXON_FILTER_BCON_AWARE_MSK); | |
| 1353 | |
| 1354 #undef CHK | |
| 1355 | |
| 1356 mutex_lock(&priv->mutex); | |
| 1357 | |
| 1358 priv->staging_rxon.filter_flags &= ~filter_nand; | |
| 1359 priv->staging_rxon.filter_flags |= filter_or; | |
| 1360 | |
| 1361 iwlcore_commit_rxon(priv); | |
| 1362 | |
| 1363 mutex_unlock(&priv->mutex); | |
| 1364 | |
| 1365 /* | |
| 1366 * Receiving all multicast frames is always enabled by the | |
| 1367 * default flags setup in iwl_connection_init_rx_config() | |
| 1368 * since we currently do not support programming multicast | |
| 1369 * filters into the device. | |
| 1370 */ | |
| 1371 *total_flags &= FIF_OTHER_BSS | FIF_ALLMULTI | FIF_PROMISC_IN_BSS | | |
| 1372 FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL; | |
| 1373 } | |
| 1374 EXPORT_SYMBOL(iwl_configure_filter); | |
| 1375 | |
| 1376 int iwl_set_hw_params(struct iwl_priv *priv) | 1331 int iwl_set_hw_params(struct iwl_priv *priv) |
| 1377 { | 1332 { |
| 1378 priv->hw_params.max_rxq_size = RX_QUEUE_SIZE; | 1333 priv->hw_params.max_rxq_size = RX_QUEUE_SIZE; |
| 1379 priv->hw_params.max_rxq_log = RX_QUEUE_SIZE_LOG; | 1334 priv->hw_params.max_rxq_log = RX_QUEUE_SIZE_LOG; |
| 1380 if (priv->cfg->mod_params->amsdu_size_8K) | 1335 if (priv->cfg->mod_params->amsdu_size_8K) |
| 1381 priv->hw_params.rx_page_order = get_order(IWL_RX_BUF_SIZE_8K); | 1336 priv->hw_params.rx_page_order = get_order(IWL_RX_BUF_SIZE_8K); |
| 1382 else | 1337 else |
| 1383 priv->hw_params.rx_page_order = get_order(IWL_RX_BUF_SIZE_4K); | 1338 priv->hw_params.rx_page_order = get_order(IWL_RX_BUF_SIZE_4K); |
| 1384 | 1339 |
| 1385 priv->hw_params.max_beacon_itrvl = IWL_MAX_UCODE_BEACON_INTERVAL; | 1340 priv->hw_params.max_beacon_itrvl = IWL_MAX_UCODE_BEACON_INTERVAL; |
| (...skipping 1265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2651 } | 2606 } |
| 2652 | 2607 |
| 2653 | 2608 |
| 2654 int iwl_force_reset(struct iwl_priv *priv, int mode, bool external) | 2609 int iwl_force_reset(struct iwl_priv *priv, int mode, bool external) |
| 2655 { | 2610 { |
| 2656 struct iwl_force_reset *force_reset; | 2611 struct iwl_force_reset *force_reset; |
| 2657 | 2612 |
| 2658 if (test_bit(STATUS_EXIT_PENDING, &priv->status)) | 2613 if (test_bit(STATUS_EXIT_PENDING, &priv->status)) |
| 2659 return -EINVAL; | 2614 return -EINVAL; |
| 2660 | 2615 |
| 2616 if (test_bit(STATUS_SCANNING, &priv->status)) { |
| 2617 IWL_DEBUG_INFO(priv, "scan in progress.\n"); |
| 2618 return -EINVAL; |
| 2619 } |
| 2620 |
| 2661 if (mode >= IWL_MAX_FORCE_RESET) { | 2621 if (mode >= IWL_MAX_FORCE_RESET) { |
| 2662 IWL_DEBUG_INFO(priv, "invalid reset request.\n"); | 2622 IWL_DEBUG_INFO(priv, "invalid reset request.\n"); |
| 2663 return -EINVAL; | 2623 return -EINVAL; |
| 2664 } | 2624 } |
| 2665 force_reset = &priv->force_reset[mode]; | 2625 force_reset = &priv->force_reset[mode]; |
| 2666 force_reset->reset_request_count++; | 2626 force_reset->reset_request_count++; |
| 2667 if (!external) { | 2627 if (!external) { |
| 2668 if (force_reset->last_force_reset_jiffies && | 2628 if (force_reset->last_force_reset_jiffies && |
| 2669 time_after(force_reset->last_force_reset_jiffies + | 2629 time_after(force_reset->last_force_reset_jiffies + |
| 2670 force_reset->reset_duration, jiffies)) { | 2630 force_reset->reset_duration, jiffies)) { |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2908 else | 2868 else |
| 2909 clear_bit(STATUS_RF_KILL_HW, &priv->status); | 2869 clear_bit(STATUS_RF_KILL_HW, &priv->status); |
| 2910 | 2870 |
| 2911 wiphy_rfkill_set_hw_state(priv->hw->wiphy, hw_rfkill); | 2871 wiphy_rfkill_set_hw_state(priv->hw->wiphy, hw_rfkill); |
| 2912 | 2872 |
| 2913 return 0; | 2873 return 0; |
| 2914 } | 2874 } |
| 2915 EXPORT_SYMBOL(iwl_pci_resume); | 2875 EXPORT_SYMBOL(iwl_pci_resume); |
| 2916 | 2876 |
| 2917 #endif /* CONFIG_PM */ | 2877 #endif /* CONFIG_PM */ |
| OLD | NEW |