Merge tag 'mac80211-next-for-davem-2015-05-06' into iwlwifi-next
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 28 May 2015 10:36:49 +0000 (13:36 +0300)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 28 May 2015 10:36:49 +0000 (13:36 +0300)
Lots of updates for net-next for this cycle. As usual, we have
a lot of small fixes and cleanups, the bigger items are:
 * proper mac80211 rate control locking, to fix some random crashes
   (this required changing other locking as well)
 * mac80211 "fast-xmit", a mechanism to reduce, in most cases, the
   amount of code we execute while going from ndo_start_xmit() to
   the driver
 * this also clears the way for properly supporting S/G and checksum
   and segmentation offloads

1  2 
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c

index 75e96db6626b185684c93687e5f4d020b60dc50e,0b5a81d52a3ed30e82b803a24c5c4ee6760bb066..830dfec66a44ef80a4822edf02dd09bd0767043d
@@@ -6,7 -6,7 +6,7 @@@
   * GPL LICENSE SUMMARY
   *
   * Copyright(c) 2008 - 2014 Intel Corporation. All rights reserved.
 - * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH
 + * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of version 2 of the GNU General Public License as
@@@ -32,7 -32,7 +32,7 @@@
   * BSD LICENSE
   *
   * Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
 - * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH
 + * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
@@@ -116,11 -116,10 +116,11 @@@ enum family_8000_nvm_offsets 
  
  /* SKU Capabilities (actual values from NVM definition) */
  enum nvm_sku_bits {
 -      NVM_SKU_CAP_BAND_24GHZ  = BIT(0),
 -      NVM_SKU_CAP_BAND_52GHZ  = BIT(1),
 -      NVM_SKU_CAP_11N_ENABLE  = BIT(2),
 -      NVM_SKU_CAP_11AC_ENABLE = BIT(3),
 +      NVM_SKU_CAP_BAND_24GHZ          = BIT(0),
 +      NVM_SKU_CAP_BAND_52GHZ          = BIT(1),
 +      NVM_SKU_CAP_11N_ENABLE          = BIT(2),
 +      NVM_SKU_CAP_11AC_ENABLE         = BIT(3),
 +      NVM_SKU_CAP_MIMO_DISABLE        = BIT(5),
  };
  
  /*
@@@ -249,7 -248,7 +249,7 @@@ static u32 iwl_get_channel_flags(u8 ch_
         */
        if ((nvm_flags & NVM_CHANNEL_GO_CONCURRENT) &&
            (flags & IEEE80211_CHAN_NO_IR))
-               flags |= IEEE80211_CHAN_GO_CONCURRENT;
+               flags |= IEEE80211_CHAN_IR_CONCURRENT;
  
        return flags;
  }
@@@ -369,11 -368,6 +369,11 @@@ static void iwl_init_vht_hw_capab(cons
        if (cfg->ht_params->ldpc)
                vht_cap->cap |= IEEE80211_VHT_CAP_RXLDPC;
  
 +      if (data->sku_cap_mimo_disabled) {
 +              num_rx_ants = 1;
 +              num_tx_ants = 1;
 +      }
 +
        if (num_tx_ants > 1)
                vht_cap->cap |= IEEE80211_VHT_CAP_TXSTBC;
        else
@@@ -533,10 -527,6 +533,10 @@@ static void iwl_set_hw_address_family_8
        const u8 *hw_addr;
  
        if (mac_override) {
 +              static const u8 reserved_mac[] = {
 +                      0x02, 0xcc, 0xaa, 0xff, 0xee, 0x00
 +              };
 +
                hw_addr = (const u8 *)(mac_override +
                                 MAC_ADDRESS_OVERRIDE_FAMILY_8000);
  
                data->hw_addr[4] = hw_addr[5];
                data->hw_addr[5] = hw_addr[4];
  
 -              if (is_valid_ether_addr(data->hw_addr))
 +              /*
 +               * Force the use of the OTP MAC address in case of reserved MAC
 +               * address in the NVM, or if address is given but invalid.
 +               */
 +              if (is_valid_ether_addr(data->hw_addr) &&
 +                  memcmp(reserved_mac, hw_addr, ETH_ALEN) != 0)
                        return;
  
                IWL_ERR_DEV(dev,
@@@ -625,7 -610,6 +625,7 @@@ iwl_parse_nvm_data(struct device *dev, 
                data->sku_cap_11n_enable = false;
        data->sku_cap_11ac_enable = data->sku_cap_11n_enable &&
                                    (sku & NVM_SKU_CAP_11AC_ENABLE);
 +      data->sku_cap_mimo_disabled = sku & NVM_SKU_CAP_MIMO_DISABLE;
  
        data->n_hw_addrs = iwl_get_n_hw_addrs(cfg, nvm_sw);