1. 10 12月, 2013 10 次提交
  2. 26 11月, 2013 8 次提交
    • L
      iwlwifi: mvm: use a cast to calculate the last seqno from the next one · 3c5da7ee
      Luciano Coelho 提交于
      If the next seqno returned by the firmware is 0, we return an error
      (-16) in the iwl_mvm_get_last_nonqos_seq() function.  This is because
      we return an integer and don't use any casting when calculating the
      last seqno from the one we received.  Fix this by using a cast to u16
      when doing the calculation, so we return 0xfff0, as we should.
      Signed-off-by: NLuciano Coelho <luciano.coelho@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      3c5da7ee
    • L
      iwlwifi: mvm: set seqno also when no keys are set · cfa88893
      Luciano Coelho 提交于
      In an open BSS, after suspend/resume, we don't set the last seqno
      because the iwl_mvm_setup_connection_keep() returns too early.  This
      happens because the check to see if we have any keys was returning
      immediately, without setting seqno and seqno_valid.  Fix this.
      Signed-off-by: NLuciano Coelho <luciano.coelho@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      cfa88893
    • E
      iwlwifi: mvm: don't WARN about unsuccessful time event · 9fc3fe96
      Emmanuel Grumbach 提交于
      Time event notification can have a failure status even if
      the time event was scheduled:
      * in START notification, this can happen if the time event
        was scheduled later than the requested apply time.
      * in STOP notification, this can happen if the time event
        is truncated.
      
      Even if both happened, the offchannel packets sent during
      the remain on channel are very likely to have been sent.
      Hence, don't WARN when this happens, but rather print a
      discrete line in the kernel log.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Reviewed-by: NJohannes Berg <johannes.berg@intel.com>
      9fc3fe96
    • E
      iwlwifi: mvm: BT Coex fix another NULL pointer dereference · 56c07a9c
      Emmanuel Grumbach 提交于
      This patch is very similar to a previous fix: 22cba0c0
      
      When we disassociate, mac80211 removes the station and
      then, it sets the bss it unsets the assoc bool in bss_info.
      
      Since the firwmware wants it the opposite (first set the
      MAC context as unassoc, and only then, remove the STA of
      the API), we have a small period of time in which the STA
      in firmware doesn't have a valid ieee80211_sta pointer.
      During that time, iwl_mvm_vif->ap_sta_id, is still set
      to the STA in firmware that represent the AP.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      56c07a9c
    • E
      iwlwifi: mvm: BT Coex - don't enable MULTI_PRIO_LUT · a338f1ef
      Emmanuel Grumbach 提交于
      This feature isn't supported by the firmware (yet).
      Note that settingt he values to BT_CFG_CMD is harmless if
      the validity bit is clear - so keep the configuration
      values in BT_CFG_CMD, but clear the validity bit until thes
      feature is enabled in the firmware.
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      a338f1ef
    • J
      iwlwifi: mvm: check sta_id/drain values in debugfs · 60765a47
      Johannes Berg 提交于
      The station ID must be valid, if it's out of range then
      the array access may crash. Validate the station ID to
      the array length, and also validate the drain value even
      if that doesn't matter all that much.
      
      Cc: stable@vger.kernel.org
      Fixes: 8ca151b5 ("iwlwifi: add the MVM driver")
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      60765a47
    • L
      cfg80211: move regulatory flags to their own variable · a2f73b6c
      Luis R. Rodriguez 提交于
      We'll expand this later, this will make it easier to
      classify and review what things are related to regulatory
      or not.
      
      Coccinelle only missed 4 hits, which I had to do manually,
      supplying the SmPL in case of merge conflicts.
      
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY
      +wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG
      @@
      expression e;
      @@
      -e->flags |= WIPHY_FLAG_CUSTOM_REGULATORY
      +e->regulatory_flags |= REGULATORY_CUSTOM_REG
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags &= ~WIPHY_FLAG_CUSTOM_REGULATORY
      +wiphy->regulatory_flags &= ~REGULATORY_CUSTOM_REG
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags & WIPHY_FLAG_CUSTOM_REGULATORY
      +wiphy->regulatory_flags & REGULATORY_CUSTOM_REG
      
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY
      +wiphy->regulatory_flags |= REGULATORY_STRICT_REG
      @@
      expression e;
      @@
      -e->flags |= WIPHY_FLAG_STRICT_REGULATORY
      +e->regulatory_flags |= REGULATORY_STRICT_REG
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY
      +wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY
      +wiphy->regulatory_flags & REGULATORY_STRICT_REG
      
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags |= WIPHY_FLAG_DISABLE_BEACON_HINTS
      +wiphy->regulatory_flags |= REGULATORY_DISABLE_BEACON_HINTS
      @@
      expression e;
      @@
      -e->flags |= WIPHY_FLAG_DISABLE_BEACON_HINTS
      +e->regulatory_flags |= REGULATORY_DISABLE_BEACON_HINTS
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS
      +wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags & WIPHY_FLAG_DISABLE_BEACON_HINTS
      +wiphy->regulatory_flags & REGULATORY_DISABLE_BEACON_HINTS
      
      Generated-by: Coccinelle SmPL
      Cc: Julia Lawall <julia.lawall@lip6.fr>
      Cc: Peter Senna Tschudin <peter.senna@gmail.com>
      Cc: Mihir Shete <smihir@qti.qualcomm.com>
      Cc: Henri Bahini <hbahini@qca.qualcomm.com>
      Cc: Tushnim Bhattacharyya <tushnimb@qca.qualcomm.com>
      Signed-off-by: NLuis R. Rodriguez <mcgrof@do-not-panic.com>
      [fix up whitespace damage, overly long lines]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      a2f73b6c
    • L
      cfg80211: consolidate passive-scan and no-ibss flags · 8fe02e16
      Luis R. Rodriguez 提交于
      These two flags are used for the same purpose, just
      combine them into a no-ir flag to annotate no initiating
      radiation is allowed.
      
      Old userspace sending either flag will have it treated as
      the no-ir flag. To be considerate to older userspace we
      also send both the no-ir flag and the old no-ibss flags.
      Newer userspace will have to be aware of older kernels.
      
      Update all places in the tree using these flags with the
      following semantic patch:
      
      @@
      @@
      -NL80211_RRF_PASSIVE_SCAN
      +NL80211_RRF_NO_IR
      @@
      @@
      -NL80211_RRF_NO_IBSS
      +NL80211_RRF_NO_IR
      @@
      @@
      -IEEE80211_CHAN_PASSIVE_SCAN
      +IEEE80211_CHAN_NO_IR
      @@
      @@
      -IEEE80211_CHAN_NO_IBSS
      +IEEE80211_CHAN_NO_IR
      @@
      @@
      -NL80211_RRF_NO_IR | NL80211_RRF_NO_IR
      +NL80211_RRF_NO_IR
      @@
      @@
      -IEEE80211_CHAN_NO_IR | IEEE80211_CHAN_NO_IR
      +IEEE80211_CHAN_NO_IR
      @@
      @@
      -(NL80211_RRF_NO_IR)
      +NL80211_RRF_NO_IR
      @@
      @@
      -(IEEE80211_CHAN_NO_IR)
      +IEEE80211_CHAN_NO_IR
      
      Along with some hand-optimisations in documentation, to
      remove duplicates and to fix some indentation.
      Signed-off-by: NLuis R. Rodriguez <mcgrof@do-not-panic.com>
      [do all the driver updates in one go]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      8fe02e16
  3. 31 10月, 2013 1 次提交
  4. 30 10月, 2013 1 次提交
  5. 29 10月, 2013 5 次提交
    • J
      iwlwifi: warn if firmware image doesn't exist · befe9b6f
      Johannes Berg 提交于
      If the firmware image that we attempt to load doesn't
      actually exist we have a broken firmware file or other
      code not checking things correctly, so warn in such a
      case. Also avoid assigning cur_ucode/ucode_loaded then.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      befe9b6f
    • J
      iwlwifi: mvm: add missing break in debugfs · cbb346f2
      Johannes Berg 提交于
      When writing the disable_power_off value, the LPRX
      enable value also gets written unintentionally, so
      fix that by adding the missing break statement.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      cbb346f2
    • J
      iwlwifi: mvm: capture the FCS in monitor mode · fb8b8ee1
      Johannes Berg 提交于
      This can be useful when using the device as a sniffer.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      fb8b8ee1
    • E
      iwlwifi: mvm: BT Coex fix NULL pointer dereference · 22cba0c0
      Emmanuel Grumbach 提交于
      When we disassociate, mac80211 removes the station and
      then, it sets the bss it unsets the assoc bool in bss_info.
      
      Since the firwmware wants it the opposite (first set the
      MAC context as unassoc, and only then, remove the STA of
      the API), we have a small period of time in which the STA
      in firmware doesn't have a valid ieee80211_sta pointer.
      During that time, iwl_mvm_vif->ap_sta_id, is still set
      to the STA in firmware that represent the AP.
      
      This avoids:
      
      [ 4481.476246] BUG: unable to handle kernel NULL pointer dereference at 00000045
      [ 4481.479521] IP: [<f8416a6a>] iwl_mvm_bt_coex_reduced_txp+0x7a/0x190 [iwlmvm]
      [ 4481.482023] *pde = 00000000
      [ 4481.484332] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
      [ 4481.486897] Modules linked in: netconsole configfs autofs4 rfcomm(O) bnep(O) nfsd nfs_acl auth_rpcgss exportfs nfs lockd binfmt_misc sunrpc fscache arc4 iwlmvm(O) mac80211(O) btusb(O) iwlwifi(O) bluetooth(O) cfg80211(O) snd_hda_codec_hdmi coretemp dell_wmi snd_hda_codec_idt compat(O) dell_laptop aesni_intel i915 sparse_keymap dcdbas cryptd psmouse serio_raw aes_i586 microcode snd_hda_intel drm_kms_helper snd_hda_codec drm snd_pcm snd_timer i2c_algo_bit video intel_agp intel_gtt snd soundcore snd_page_alloc crc32c_intel ahci sdhci_pci libahci sdhci mmc_core e1000e xhci_hcd [last unloaded: configfs]
      [ 4481.502983]
      [ 4481.505599] Pid: 6507, comm: kworker/0:1 Tainted: G           O 3.4.43-dev #1 Dell Inc. Latitude E6430/0CMDYV
      [ 4481.508575] EIP: 0060:[<f8416a6a>] EFLAGS: 00010246 CPU: 0
      [ 4481.511248] EIP is at iwl_mvm_bt_coex_reduced_txp+0x7a/0x190 [iwlmvm]
      [ 4481.513947] EAX: ffffffea EBX: 00000002 ECX: 00000001 EDX: 00000001
      [ 4481.516710] ESI: ec6f0f28 EDI: 00000000 EBP: e8175dfc ESP: e8175d9c
      [ 4481.519445]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
      [ 4481.522185] CR0: 8005003b CR2: 00000045 CR3: 01a5e000 CR4: 001407d0
      [ 4481.524950] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
      [ 4481.527768] DR6: ffff0ff0 DR7: 00000400
      [ 4481.530565] Process kworker/0:1 (pid: 6507, ti=e8174000 task=e8032b20 task.ti=e8174000)
      [ 4481.533447] Stack:
      [ 4481.536379]  e472439f 00003a12 e8032b20 e8033048 00000001 e8175ddc 00000246 e8033040
      [ 4481.540132]  00000002 01814990 ec4d1ddc e8175dcc 00000000 00000000 00000000 00000000
      [ 4481.543867]  00000000 00000000 00000001 000001c8 009b0002 ec4d1ddc ec6f0f28 00000000
      [ 4481.547633] Call Trace:
      [ 4481.550578]  [<f8418027>] iwl_mvm_bt_rssi_event+0x197/0x220 [iwlmvm]
      [ 4481.553537]  [<f840919c>] iwl_mvm_stat_iterator+0xdc/0x240 [iwlmvm]
      [ 4481.556582]  [<f8d129c2>] __iterate_active_interfaces+0xe2/0x1f0 [mac80211]
      [ 4481.559544]  [<f84090c0>] ? iwl_mvm_update_smps+0x90/0x90 [iwlmvm]
      [ 4481.562519]  [<f84090c0>] ? iwl_mvm_update_smps+0x90/0x90 [iwlmvm]
      [ 4481.565498]  [<f8d12b0c>] ieee80211_iterate_active_interfaces+0x3c/0x50 [mac80211]
      [ 4481.568421]  [<f8409b43>] iwl_mvm_rx_statistics+0xb3/0x130 [iwlmvm]
      [ 4481.571349]  [<f8405431>] iwl_mvm_async_handlers_wk+0xc1/0xf0 [iwlmvm]
      [ 4481.574251]  [<c1052915>] ? process_one_work+0x105/0x5c0
      [ 4481.577162]  [<c1052991>] process_one_work+0x181/0x5c0
      [ 4481.580025]  [<c1052915>] ? process_one_work+0x105/0x5c0
      [ 4481.582861]  [<f8405370>] ? iwl_mvm_rx_fw_logs+0x20/0x20 [iwlmvm]
      [ 4481.585722]  [<c10530f1>] worker_thread+0x121/0x2c0
      [ 4481.588536]  [<c1052fd0>] ? rescuer_thread+0x1d0/0x1d0
      [ 4481.591323]  [<c105af0d>] kthread+0x7d/0x90
      [ 4481.594059]  [<c105ae90>] ? flush_kthread_worker+0x120/0x120
      [ 4481.596868]  [<c15b7cc2>] kernel_thread_helper+0x6/0x10
      [ 4481.599605] Code: 9d de c3 c8 85 c0 74 0d 80 3d f8 ae 42 f8 00 0f 84 dc 00 00 00 8b 45 c8 0f b6 d3 31 ff 89 55 c0 8b 84 90 d8 03 00 00 0f b6 55 c7 <38> 50 5b 89 45 bc 0f 84 a8 00 00 00 a1 e4 d2 04 c2 85 c0 0f 84
      [ 4481.611782] EIP: [<f8416a6a>] iwl_mvm_bt_coex_reduced_txp+0x7a/0x190 [iwlmvm] SS:ESP 0068:e8175d9c
      [ 4481.614985] CR2: 0000000000000045
      [ 4481.687441] ---[ end trace b11bc915fbac4412 ]---
      Reviewed-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      22cba0c0
    • A
      iwlwifi: mvm: update UAPSD support TLV bits · e8e626ad
      Alexander Bondar 提交于
      Change old UAPSD bit to PM_CMD_SUPPORT, and add a new bit to indicate
      real UAPSD support.
      Don't use UAPSD when the firmware doesn't support it.
      Signed-off-by: NDavid Spinadel <david.spinadel@intel.com>
      Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      e8e626ad
  6. 18 10月, 2013 5 次提交
  7. 11 10月, 2013 10 次提交