]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Jan 2011 18:05:56 +0000 (10:05 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Jan 2011 18:05:56 +0000 (10:05 -0800)
* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)
  Documentation/trace/events.txt: Remove obsolete sched_signal_send.
  writeback: fix global_dirty_limits comment runtime -> real-time
  ppc: fix comment typo singal -> signal
  drivers: fix comment typo diable -> disable.
  m68k: fix comment typo diable -> disable.
  wireless: comment typo fix diable -> disable.
  media: comment typo fix diable -> disable.
  remove doc for obsolete dynamic-printk kernel-parameter
  remove extraneous 'is' from Documentation/iostats.txt
  Fix spelling milisec -> ms in snd_ps3 module parameter description
  Fix spelling mistakes in comments
  Revert conflicting V4L changes
  i7core_edac: fix typos in comments
  mm/rmap.c: fix comment
  sound, ca0106: Fix assignment to 'channel'.
  hrtimer: fix a typo in comment
  init/Kconfig: fix typo
  anon_inodes: fix wrong function name in comment
  fix comment typos concerning "consistent"
  poll: fix a typo in comment
  ...

Fix up trivial conflicts in:
 - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)
 - fs/ext4/ext4.h

Also fix missed 'diabled' typo in drivers/net/bnx2x/bnx2x.h while at it.

112 files changed:
1  2 
Documentation/kernel-parameters.txt
Documentation/networking/dccp.txt
Documentation/powerpc/booting-without-of.txt
MAINTAINERS
arch/arm/common/it8152.c
arch/arm/mach-imx/pm-imx27.c
arch/arm/mach-msm/io.c
arch/arm/mach-omap1/pm.c
arch/arm/mach-omap2/cpuidle34xx.c
arch/arm/mach-omap2/pm24xx.c
arch/arm/mach-omap2/pm34xx.c
arch/arm/mach-omap2/pm44xx.c
arch/arm/mach-omap2/serial.c
arch/arm/mach-pxa/sharpsl_pm.c
arch/arm/mm/flush.c
arch/arm/plat-mxc/include/mach/irqs.h
arch/arm/plat-omap/include/plat/omap_hwmod.h
arch/blackfin/mach-bf537/include/mach/defBF534.h
arch/blackfin/mach-common/pm.c
arch/x86/include/asm/processor.h
arch/x86/kernel/head_32.S
arch/x86/platform/mrst/early_printk_mrst.c
drivers/ata/libata-core.c
drivers/base/bus.c
drivers/base/power/main.c
drivers/edac/edac_core.h
drivers/gpu/drm/nouveau/nouveau_bios.c
drivers/gpu/drm/radeon/atombios.h
drivers/infiniband/hw/cxgb4/iw_cxgb4.h
drivers/infiniband/hw/qib/qib_iba7322.c
drivers/input/serio/Kconfig
drivers/input/touchscreen/Kconfig
drivers/media/video/cx25840/cx25840-ir.c
drivers/media/video/omap/omap_vout.c
drivers/media/video/saa7164/saa7164-core.c
drivers/media/video/via-camera.c
drivers/mmc/host/Kconfig
drivers/net/bnx2x/bnx2x.h
drivers/net/bnx2x/bnx2x_main.c
drivers/net/bnx2x/bnx2x_reg.h
drivers/net/bonding/bond_3ad.c
drivers/net/cxgb3/t3_hw.c
drivers/net/e1000/e1000_hw.h
drivers/net/e1000/e1000_main.c
drivers/net/e1000e/82571.c
drivers/net/e1000e/ich8lan.c
drivers/net/e1000e/phy.c
drivers/net/eepro.c
drivers/net/ixgbe/ixgbe_82599.c
drivers/net/ll_temac_main.c
drivers/net/tehuti.c
drivers/net/tun.c
drivers/net/vxge/vxge-traffic.h
drivers/net/wan/dscc4.c
drivers/net/wimax/i2400m/driver.c
drivers/net/wimax/i2400m/i2400m.h
drivers/net/wireless/ath/ath5k/reg.h
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-legacy.c
drivers/net/wireless/iwlwifi/iwl-sta.c
drivers/net/wireless/rt2x00/rt2x00mac.c
drivers/net/wireless/wl1251/wl1251.h
drivers/net/wireless/wl12xx/acx.h
drivers/net/wireless/wl12xx/wl12xx.h
drivers/platform/x86/acer-wmi.c
drivers/platform/x86/eeepc-laptop.c
drivers/platform/x86/fujitsu-laptop.c
drivers/platform/x86/sony-laptop.c
drivers/platform/x86/thinkpad_acpi.c
drivers/s390/net/lcs.c
drivers/s390/scsi/zfcp_cfdc.c
drivers/scsi/bfa/bfa_fcpim.c
drivers/scsi/bfa/bfa_fcs_lport.c
drivers/scsi/libfc/fc_fcp.c
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_hbadisc.c
drivers/scsi/lpfc/lpfc_init.c
drivers/scsi/lpfc/lpfc_sli.c
drivers/scsi/scsi_sysfs.c
drivers/staging/olpc_dcon/olpc_dcon.c
drivers/telephony/ixj.c
drivers/usb/gadget/imx_udc.c
drivers/usb/gadget/langwell_udc.c
drivers/usb/musb/musb_gadget.c
drivers/video/aty/atyfb_base.c
fs/anon_inodes.c
fs/coda/inode.c
fs/ext4/ext4.h
fs/ext4/extents.c
fs/ext4/inode.c
fs/jbd2/transaction.c
fs/xfs/linux-2.6/xfs_super.c
include/linux/suspend.h
init/Kconfig
kernel/hrtimer.c
kernel/perf_event.c
kernel/power/hibernate.c
kernel/power/suspend.c
kernel/sched.c
kernel/sysctl_binary.c
kernel/time/clocksource.c
lib/nlattr.c
mm/page-writeback.c
mm/percpu.c
net/Kconfig
net/core/dev.c
net/decnet/dn_dev.c
net/ipv4/tcp_output.c
net/ipv6/af_inet6.c
scripts/mod/modpost.c
security/apparmor/include/match.h
sound/soc/codecs/max98088.c

Simple merge
Simple merge
diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index dac2d1d9987dfc205faca395c9e9961f64220652,f3f3bfa230d7218d4a0cd4a87db660ac5fec0710..9e5dc8ed51e9a0530a87361bfcd571c91a36c6f8
@@@ -347,12 -352,18 +347,12 @@@ static int omap2_pm_enter(suspend_state
  static void omap2_pm_end(void)
  {
        suspend_state = PM_SUSPEND_ON;
 +      enable_hlt();
  }
  
- static struct platform_suspend_ops omap_pm_ops = {
+ static const struct platform_suspend_ops omap_pm_ops = {
        .begin          = omap2_pm_begin,
 -      .prepare        = omap2_pm_prepare,
        .enter          = omap2_pm_enter,
 -      .finish         = omap2_pm_finish,
        .end            = omap2_pm_end,
        .valid          = suspend_valid_only_mem,
  };
index 5b323f28da2dce177c49da1729ed884a0d741e96,0cb20d29f70c006f3fb09d61f669d474de36772a..8cbbeade4b8a87df8eafe3de9ce7292131947969
@@@ -605,10 -617,12 +605,10 @@@ static void omap3_pm_end(void
        return;
  }
  
- static struct platform_suspend_ops omap_pm_ops = {
+ static const struct platform_suspend_ops omap_pm_ops = {
        .begin          = omap3_pm_begin,
        .end            = omap3_pm_end,
 -      .prepare        = omap3_pm_prepare,
        .enter          = omap3_pm_enter,
 -      .finish         = omap3_pm_finish,
        .valid          = suspend_valid_only_mem,
  };
  #endif /* CONFIG_SUSPEND */
index e9f4862c4de4f4e2f54d1162ff536c05ac67af73,dc8b1ef9f84c4c4f11496f1a05b549f63f054291..76cfff2db5141e26b2b0b7a0396abb37f342ec92
@@@ -65,10 -75,12 +65,10 @@@ static void omap4_pm_end(void
        return;
  }
  
- static struct platform_suspend_ops omap_pm_ops = {
+ static const struct platform_suspend_ops omap_pm_ops = {
        .begin          = omap4_pm_begin,
        .end            = omap4_pm_end,
 -      .prepare        = omap4_pm_prepare,
        .enter          = omap4_pm_enter,
 -      .finish         = omap4_pm_finish,
        .valid          = suspend_valid_only_mem,
  };
  #endif /* CONFIG_SUSPEND */
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 6a858a29db56127d3f9346adb6b7ab31c617cf0c,d255428122fc0b87d3e4ff2925410b5b2d5f6a47..a6cd335c943656a9ac67d37c15ea5d9eea3cc899
@@@ -1377,54 -1280,11 +1377,54 @@@ struct bnx2x_func_init_params 
        u16             spq_prod;       /* valid iff FUNC_FLG_SPQ */
  };
  
 +#define for_each_eth_queue(bp, var) \
 +                      for (var = 0; var < BNX2X_NUM_ETH_QUEUES(bp); var++)
 +
 +#define for_each_nondefault_eth_queue(bp, var) \
 +                      for (var = 1; var < BNX2X_NUM_ETH_QUEUES(bp); var++)
 +
 +#define for_each_napi_queue(bp, var) \
 +      for (var = 0; \
 +              var < BNX2X_NUM_ETH_QUEUES(bp) + FCOE_CONTEXT_USE; var++) \
 +              if (skip_queue(bp, var))        \
 +                      continue;               \
 +              else
 +
  #define for_each_queue(bp, var) \
 -                      for (var = 0; var < BNX2X_NUM_QUEUES(bp); var++)
 +      for (var = 0; var < BNX2X_NUM_QUEUES(bp); var++) \
 +              if (skip_queue(bp, var))        \
 +                      continue;               \
 +              else
 +
 +#define for_each_rx_queue(bp, var) \
 +      for (var = 0; var < BNX2X_NUM_QUEUES(bp); var++) \
 +              if (skip_rx_queue(bp, var))     \
 +                      continue;               \
 +              else
 +
 +#define for_each_tx_queue(bp, var) \
 +      for (var = 0; var < BNX2X_NUM_QUEUES(bp); var++) \
 +              if (skip_tx_queue(bp, var))     \
 +                      continue;               \
 +              else
 +
  #define for_each_nondefault_queue(bp, var) \
 -                      for (var = 1; var < BNX2X_NUM_QUEUES(bp); var++)
 +      for (var = 1; var < BNX2X_NUM_QUEUES(bp); var++) \
 +              if (skip_queue(bp, var))        \
 +                      continue;               \
 +              else
 +
 +/* skip rx queue
-  * if FCOE l2 support is diabled and this is the fcoe L2 queue
++ * if FCOE l2 support is disabled and this is the fcoe L2 queue
 + */
 +#define skip_rx_queue(bp, idx)        (NO_FCOE(bp) && IS_FCOE_IDX(idx))
  
-  * if FCOE l2 support is diabled and this is the fcoe L2 queue
 +/* skip tx queue
++ * if FCOE l2 support is disabled and this is the fcoe L2 queue
 + */
 +#define skip_tx_queue(bp, idx)        (NO_FCOE(bp) && IS_FCOE_IDX(idx))
 +
 +#define skip_queue(bp, idx)   (NO_FCOE(bp) && IS_FCOE_IDX(idx))
  
  #define WAIT_RAMROD_POLL      0x01
  #define WAIT_RAMROD_COMMON    0x02
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index a08b4e56e6b169dad9ab17b6039beb41e2485c8f,0000000000000000000000000000000000000000..bb1a742a98a0ed86b95f0643b2747a7e37b69ca3
mode 100644,000000..100644
--- /dev/null
@@@ -1,662 -1,0 +1,662 @@@
-       /* only Re-enable if diabled by irq */
 +/******************************************************************************
 + *
 + * GPL LICENSE SUMMARY
 + *
 + * Copyright(c) 2008 - 2010 Intel Corporation. All rights reserved.
 + *
 + * 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
 + * published by the Free Software Foundation.
 + *
 + * This program is distributed in the hope that it will be useful, but
 + * WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 + * General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software
 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110,
 + * USA
 + *
 + * The full GNU General Public License is included in this distribution
 + * in the file called LICENSE.GPL.
 + *
 + * Contact Information:
 + *  Intel Linux Wireless <ilw@linux.intel.com>
 + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
 + *****************************************************************************/
 +
 +#include <linux/kernel.h>
 +#include <net/mac80211.h>
 +
 +#include "iwl-dev.h"
 +#include "iwl-core.h"
 +#include "iwl-helpers.h"
 +#include "iwl-legacy.h"
 +
 +static void iwl_update_qos(struct iwl_priv *priv, struct iwl_rxon_context *ctx)
 +{
 +      if (test_bit(STATUS_EXIT_PENDING, &priv->status))
 +              return;
 +
 +      if (!ctx->is_active)
 +              return;
 +
 +      ctx->qos_data.def_qos_parm.qos_flags = 0;
 +
 +      if (ctx->qos_data.qos_active)
 +              ctx->qos_data.def_qos_parm.qos_flags |=
 +                      QOS_PARAM_FLG_UPDATE_EDCA_MSK;
 +
 +      if (ctx->ht.enabled)
 +              ctx->qos_data.def_qos_parm.qos_flags |= QOS_PARAM_FLG_TGN_MSK;
 +
 +      IWL_DEBUG_QOS(priv, "send QoS cmd with Qos active=%d FLAGS=0x%X\n",
 +                    ctx->qos_data.qos_active,
 +                    ctx->qos_data.def_qos_parm.qos_flags);
 +
 +      iwl_send_cmd_pdu_async(priv, ctx->qos_cmd,
 +                             sizeof(struct iwl_qosparam_cmd),
 +                             &ctx->qos_data.def_qos_parm, NULL);
 +}
 +
 +/**
 + * iwl_legacy_mac_config - mac80211 config callback
 + */
 +int iwl_legacy_mac_config(struct ieee80211_hw *hw, u32 changed)
 +{
 +      struct iwl_priv *priv = hw->priv;
 +      const struct iwl_channel_info *ch_info;
 +      struct ieee80211_conf *conf = &hw->conf;
 +      struct ieee80211_channel *channel = conf->channel;
 +      struct iwl_ht_config *ht_conf = &priv->current_ht_config;
 +      struct iwl_rxon_context *ctx;
 +      unsigned long flags = 0;
 +      int ret = 0;
 +      u16 ch;
 +      int scan_active = 0;
 +      bool ht_changed[NUM_IWL_RXON_CTX] = {};
 +
 +      if (WARN_ON(!priv->cfg->ops->legacy))
 +              return -EOPNOTSUPP;
 +
 +      mutex_lock(&priv->mutex);
 +
 +      IWL_DEBUG_MAC80211(priv, "enter to channel %d changed 0x%X\n",
 +                                      channel->hw_value, changed);
 +
 +      if (unlikely(!priv->cfg->mod_params->disable_hw_scan &&
 +                      test_bit(STATUS_SCANNING, &priv->status))) {
 +              scan_active = 1;
 +              IWL_DEBUG_MAC80211(priv, "leave - scanning\n");
 +      }
 +
 +      if (changed & (IEEE80211_CONF_CHANGE_SMPS |
 +                     IEEE80211_CONF_CHANGE_CHANNEL)) {
 +              /* mac80211 uses static for non-HT which is what we want */
 +              priv->current_ht_config.smps = conf->smps_mode;
 +
 +              /*
 +               * Recalculate chain counts.
 +               *
 +               * If monitor mode is enabled then mac80211 will
 +               * set up the SM PS mode to OFF if an HT channel is
 +               * configured.
 +               */
 +              if (priv->cfg->ops->hcmd->set_rxon_chain)
 +                      for_each_context(priv, ctx)
 +                              priv->cfg->ops->hcmd->set_rxon_chain(priv, ctx);
 +      }
 +
 +      /* during scanning mac80211 will delay channel setting until
 +       * scan finish with changed = 0
 +       */
 +      if (!changed || (changed & IEEE80211_CONF_CHANGE_CHANNEL)) {
 +              if (scan_active)
 +                      goto set_ch_out;
 +
 +              ch = channel->hw_value;
 +              ch_info = iwl_get_channel_info(priv, channel->band, ch);
 +              if (!is_channel_valid(ch_info)) {
 +                      IWL_DEBUG_MAC80211(priv, "leave - invalid channel\n");
 +                      ret = -EINVAL;
 +                      goto set_ch_out;
 +              }
 +
 +              spin_lock_irqsave(&priv->lock, flags);
 +
 +              for_each_context(priv, ctx) {
 +                      /* Configure HT40 channels */
 +                      if (ctx->ht.enabled != conf_is_ht(conf)) {
 +                              ctx->ht.enabled = conf_is_ht(conf);
 +                              ht_changed[ctx->ctxid] = true;
 +                      }
 +                      if (ctx->ht.enabled) {
 +                              if (conf_is_ht40_minus(conf)) {
 +                                      ctx->ht.extension_chan_offset =
 +                                              IEEE80211_HT_PARAM_CHA_SEC_BELOW;
 +                                      ctx->ht.is_40mhz = true;
 +                              } else if (conf_is_ht40_plus(conf)) {
 +                                      ctx->ht.extension_chan_offset =
 +                                              IEEE80211_HT_PARAM_CHA_SEC_ABOVE;
 +                                      ctx->ht.is_40mhz = true;
 +                              } else {
 +                                      ctx->ht.extension_chan_offset =
 +                                              IEEE80211_HT_PARAM_CHA_SEC_NONE;
 +                                      ctx->ht.is_40mhz = false;
 +                              }
 +                      } else
 +                              ctx->ht.is_40mhz = false;
 +
 +                      /*
 +                       * Default to no protection. Protection mode will
 +                       * later be set from BSS config in iwl_ht_conf
 +                       */
 +                      ctx->ht.protection = IEEE80211_HT_OP_MODE_PROTECTION_NONE;
 +
 +                      /* if we are switching from ht to 2.4 clear flags
 +                       * from any ht related info since 2.4 does not
 +                       * support ht */
 +                      if ((le16_to_cpu(ctx->staging.channel) != ch))
 +                              ctx->staging.flags = 0;
 +
 +                      iwl_set_rxon_channel(priv, channel, ctx);
 +                      iwl_set_rxon_ht(priv, ht_conf);
 +
 +                      iwl_set_flags_for_band(priv, ctx, channel->band,
 +                                             ctx->vif);
 +              }
 +
 +              spin_unlock_irqrestore(&priv->lock, flags);
 +
 +              if (priv->cfg->ops->legacy->update_bcast_stations)
 +                      ret = priv->cfg->ops->legacy->update_bcast_stations(priv);
 +
 + set_ch_out:
 +              /* The list of supported rates and rate mask can be different
 +               * for each band; since the band may have changed, reset
 +               * the rate mask to what mac80211 lists */
 +              iwl_set_rate(priv);
 +      }
 +
 +      if (changed & (IEEE80211_CONF_CHANGE_PS |
 +                      IEEE80211_CONF_CHANGE_IDLE)) {
 +              ret = iwl_power_update_mode(priv, false);
 +              if (ret)
 +                      IWL_DEBUG_MAC80211(priv, "Error setting sleep level\n");
 +      }
 +
 +      if (changed & IEEE80211_CONF_CHANGE_POWER) {
 +              IWL_DEBUG_MAC80211(priv, "TX Power old=%d new=%d\n",
 +                      priv->tx_power_user_lmt, conf->power_level);
 +
 +              iwl_set_tx_power(priv, conf->power_level, false);
 +      }
 +
 +      if (!iwl_is_ready(priv)) {
 +              IWL_DEBUG_MAC80211(priv, "leave - not ready\n");
 +              goto out;
 +      }
 +
 +      if (scan_active)
 +              goto out;
 +
 +      for_each_context(priv, ctx) {
 +              if (memcmp(&ctx->active, &ctx->staging, sizeof(ctx->staging)))
 +                      iwlcore_commit_rxon(priv, ctx);
 +              else
 +                      IWL_DEBUG_INFO(priv,
 +                              "Not re-sending same RXON configuration.\n");
 +              if (ht_changed[ctx->ctxid])
 +                      iwl_update_qos(priv, ctx);
 +      }
 +
 +out:
 +      IWL_DEBUG_MAC80211(priv, "leave\n");
 +      mutex_unlock(&priv->mutex);
 +      return ret;
 +}
 +EXPORT_SYMBOL(iwl_legacy_mac_config);
 +
 +void iwl_legacy_mac_reset_tsf(struct ieee80211_hw *hw)
 +{
 +      struct iwl_priv *priv = hw->priv;
 +      unsigned long flags;
 +      /* IBSS can only be the IWL_RXON_CTX_BSS context */
 +      struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS];
 +
 +      if (WARN_ON(!priv->cfg->ops->legacy))
 +              return;
 +
 +      mutex_lock(&priv->mutex);
 +      IWL_DEBUG_MAC80211(priv, "enter\n");
 +
 +      spin_lock_irqsave(&priv->lock, flags);
 +      memset(&priv->current_ht_config, 0, sizeof(struct iwl_ht_config));
 +      spin_unlock_irqrestore(&priv->lock, flags);
 +
 +      spin_lock_irqsave(&priv->lock, flags);
 +
 +      /* new association get rid of ibss beacon skb */
 +      if (priv->beacon_skb)
 +              dev_kfree_skb(priv->beacon_skb);
 +
 +      priv->beacon_skb = NULL;
 +
 +      priv->timestamp = 0;
 +
 +      spin_unlock_irqrestore(&priv->lock, flags);
 +
 +      iwl_scan_cancel_timeout(priv, 100);
 +      if (!iwl_is_ready_rf(priv)) {
 +              IWL_DEBUG_MAC80211(priv, "leave - not ready\n");
 +              mutex_unlock(&priv->mutex);
 +              return;
 +      }
 +
 +      /* we are restarting association process
 +       * clear RXON_FILTER_ASSOC_MSK bit
 +       */
 +      ctx->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK;
 +      iwlcore_commit_rxon(priv, ctx);
 +
 +      iwl_set_rate(priv);
 +
 +      mutex_unlock(&priv->mutex);
 +
 +      IWL_DEBUG_MAC80211(priv, "leave\n");
 +}
 +EXPORT_SYMBOL(iwl_legacy_mac_reset_tsf);
 +
 +static void iwl_ht_conf(struct iwl_priv *priv,
 +                      struct ieee80211_vif *vif)
 +{
 +      struct iwl_ht_config *ht_conf = &priv->current_ht_config;
 +      struct ieee80211_sta *sta;
 +      struct ieee80211_bss_conf *bss_conf = &vif->bss_conf;
 +      struct iwl_rxon_context *ctx = iwl_rxon_ctx_from_vif(vif);
 +
 +      IWL_DEBUG_ASSOC(priv, "enter:\n");
 +
 +      if (!ctx->ht.enabled)
 +              return;
 +
 +      ctx->ht.protection =
 +              bss_conf->ht_operation_mode & IEEE80211_HT_OP_MODE_PROTECTION;
 +      ctx->ht.non_gf_sta_present =
 +              !!(bss_conf->ht_operation_mode & IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT);
 +
 +      ht_conf->single_chain_sufficient = false;
 +
 +      switch (vif->type) {
 +      case NL80211_IFTYPE_STATION:
 +              rcu_read_lock();
 +              sta = ieee80211_find_sta(vif, bss_conf->bssid);
 +              if (sta) {
 +                      struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap;
 +                      int maxstreams;
 +
 +                      maxstreams = (ht_cap->mcs.tx_params &
 +                                    IEEE80211_HT_MCS_TX_MAX_STREAMS_MASK)
 +                                      >> IEEE80211_HT_MCS_TX_MAX_STREAMS_SHIFT;
 +                      maxstreams += 1;
 +
 +                      if ((ht_cap->mcs.rx_mask[1] == 0) &&
 +                          (ht_cap->mcs.rx_mask[2] == 0))
 +                              ht_conf->single_chain_sufficient = true;
 +                      if (maxstreams <= 1)
 +                              ht_conf->single_chain_sufficient = true;
 +              } else {
 +                      /*
 +                       * If at all, this can only happen through a race
 +                       * when the AP disconnects us while we're still
 +                       * setting up the connection, in that case mac80211
 +                       * will soon tell us about that.
 +                       */
 +                      ht_conf->single_chain_sufficient = true;
 +              }
 +              rcu_read_unlock();
 +              break;
 +      case NL80211_IFTYPE_ADHOC:
 +              ht_conf->single_chain_sufficient = true;
 +              break;
 +      default:
 +              break;
 +      }
 +
 +      IWL_DEBUG_ASSOC(priv, "leave\n");
 +}
 +
 +static inline void iwl_set_no_assoc(struct iwl_priv *priv,
 +                                  struct ieee80211_vif *vif)
 +{
 +      struct iwl_rxon_context *ctx = iwl_rxon_ctx_from_vif(vif);
 +
 +      iwl_led_disassociate(priv);
 +      /*
 +       * inform the ucode that there is no longer an
 +       * association and that no more packets should be
 +       * sent
 +       */
 +      ctx->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK;
 +      ctx->staging.assoc_id = 0;
 +      iwlcore_commit_rxon(priv, ctx);
 +}
 +
 +static void iwlcore_beacon_update(struct ieee80211_hw *hw,
 +                                struct ieee80211_vif *vif)
 +{
 +      struct iwl_priv *priv = hw->priv;
 +      unsigned long flags;
 +      __le64 timestamp;
 +      struct sk_buff *skb = ieee80211_beacon_get(hw, vif);
 +
 +      if (!skb)
 +              return;
 +
 +      IWL_DEBUG_MAC80211(priv, "enter\n");
 +
 +      lockdep_assert_held(&priv->mutex);
 +
 +      if (!priv->beacon_ctx) {
 +              IWL_ERR(priv, "update beacon but no beacon context!\n");
 +              dev_kfree_skb(skb);
 +              return;
 +      }
 +
 +      spin_lock_irqsave(&priv->lock, flags);
 +
 +      if (priv->beacon_skb)
 +              dev_kfree_skb(priv->beacon_skb);
 +
 +      priv->beacon_skb = skb;
 +
 +      timestamp = ((struct ieee80211_mgmt *)skb->data)->u.beacon.timestamp;
 +      priv->timestamp = le64_to_cpu(timestamp);
 +
 +      IWL_DEBUG_MAC80211(priv, "leave\n");
 +      spin_unlock_irqrestore(&priv->lock, flags);
 +
 +      if (!iwl_is_ready_rf(priv)) {
 +              IWL_DEBUG_MAC80211(priv, "leave - RF not ready\n");
 +              return;
 +      }
 +
 +      priv->cfg->ops->legacy->post_associate(priv);
 +}
 +
 +void iwl_legacy_mac_bss_info_changed(struct ieee80211_hw *hw,
 +                                   struct ieee80211_vif *vif,
 +                                   struct ieee80211_bss_conf *bss_conf,
 +                                   u32 changes)
 +{
 +      struct iwl_priv *priv = hw->priv;
 +      struct iwl_rxon_context *ctx = iwl_rxon_ctx_from_vif(vif);
 +      int ret;
 +
 +      if (WARN_ON(!priv->cfg->ops->legacy))
 +              return;
 +
 +      IWL_DEBUG_MAC80211(priv, "changes = 0x%X\n", changes);
 +
 +      if (!iwl_is_alive(priv))
 +              return;
 +
 +      mutex_lock(&priv->mutex);
 +
 +      if (changes & BSS_CHANGED_QOS) {
 +              unsigned long flags;
 +
 +              spin_lock_irqsave(&priv->lock, flags);
 +              ctx->qos_data.qos_active = bss_conf->qos;
 +              iwl_update_qos(priv, ctx);
 +              spin_unlock_irqrestore(&priv->lock, flags);
 +      }
 +
 +      if (changes & BSS_CHANGED_BEACON_ENABLED) {
 +              /*
 +               * the add_interface code must make sure we only ever
 +               * have a single interface that could be beaconing at
 +               * any time.
 +               */
 +              if (vif->bss_conf.enable_beacon)
 +                      priv->beacon_ctx = ctx;
 +              else
 +                      priv->beacon_ctx = NULL;
 +      }
 +
 +      if (changes & BSS_CHANGED_BEACON && vif->type == NL80211_IFTYPE_AP) {
 +              dev_kfree_skb(priv->beacon_skb);
 +              priv->beacon_skb = ieee80211_beacon_get(hw, vif);
 +      }
 +
 +      if (changes & BSS_CHANGED_BEACON_INT && vif->type == NL80211_IFTYPE_AP)
 +              iwl_send_rxon_timing(priv, ctx);
 +
 +      if (changes & BSS_CHANGED_BSSID) {
 +              IWL_DEBUG_MAC80211(priv, "BSSID %pM\n", bss_conf->bssid);
 +
 +              /*
 +               * If there is currently a HW scan going on in the
 +               * background then we need to cancel it else the RXON
 +               * below/in post_associate will fail.
 +               */
 +              if (iwl_scan_cancel_timeout(priv, 100)) {
 +                      IWL_WARN(priv, "Aborted scan still in progress after 100ms\n");
 +                      IWL_DEBUG_MAC80211(priv, "leaving - scan abort failed.\n");
 +                      mutex_unlock(&priv->mutex);
 +                      return;
 +              }
 +
 +              /* mac80211 only sets assoc when in STATION mode */
 +              if (vif->type == NL80211_IFTYPE_ADHOC || bss_conf->assoc) {
 +                      memcpy(ctx->staging.bssid_addr,
 +                             bss_conf->bssid, ETH_ALEN);
 +
 +                      /* currently needed in a few places */
 +                      memcpy(priv->bssid, bss_conf->bssid, ETH_ALEN);
 +              } else {
 +                      ctx->staging.filter_flags &=
 +                              ~RXON_FILTER_ASSOC_MSK;
 +              }
 +
 +      }
 +
 +      /*
 +       * This needs to be after setting the BSSID in case
 +       * mac80211 decides to do both changes at once because
 +       * it will invoke post_associate.
 +       */
 +      if (vif->type == NL80211_IFTYPE_ADHOC && changes & BSS_CHANGED_BEACON)
 +              iwlcore_beacon_update(hw, vif);
 +
 +      if (changes & BSS_CHANGED_ERP_PREAMBLE) {
 +              IWL_DEBUG_MAC80211(priv, "ERP_PREAMBLE %d\n",
 +                                 bss_conf->use_short_preamble);
 +              if (bss_conf->use_short_preamble)
 +                      ctx->staging.flags |= RXON_FLG_SHORT_PREAMBLE_MSK;
 +              else
 +                      ctx->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK;
 +      }
 +
 +      if (changes & BSS_CHANGED_ERP_CTS_PROT) {
 +              IWL_DEBUG_MAC80211(priv, "ERP_CTS %d\n", bss_conf->use_cts_prot);
 +              if (bss_conf->use_cts_prot && (priv->band != IEEE80211_BAND_5GHZ))
 +                      ctx->staging.flags |= RXON_FLG_TGG_PROTECT_MSK;
 +              else
 +                      ctx->staging.flags &= ~RXON_FLG_TGG_PROTECT_MSK;
 +              if (bss_conf->use_cts_prot)
 +                      ctx->staging.flags |= RXON_FLG_SELF_CTS_EN;
 +              else
 +                      ctx->staging.flags &= ~RXON_FLG_SELF_CTS_EN;
 +      }
 +
 +      if (changes & BSS_CHANGED_BASIC_RATES) {
 +              /* XXX use this information
 +               *
 +               * To do that, remove code from iwl_set_rate() and put something
 +               * like this here:
 +               *
 +              if (A-band)
 +                      ctx->staging.ofdm_basic_rates =
 +                              bss_conf->basic_rates;
 +              else
 +                      ctx->staging.ofdm_basic_rates =
 +                              bss_conf->basic_rates >> 4;
 +                      ctx->staging.cck_basic_rates =
 +                              bss_conf->basic_rates & 0xF;
 +               */
 +      }
 +
 +      if (changes & BSS_CHANGED_HT) {
 +              iwl_ht_conf(priv, vif);
 +
 +              if (priv->cfg->ops->hcmd->set_rxon_chain)
 +                      priv->cfg->ops->hcmd->set_rxon_chain(priv, ctx);
 +      }
 +
 +      if (changes & BSS_CHANGED_ASSOC) {
 +              IWL_DEBUG_MAC80211(priv, "ASSOC %d\n", bss_conf->assoc);
 +              if (bss_conf->assoc) {
 +                      priv->timestamp = bss_conf->timestamp;
 +
 +                      iwl_led_associate(priv);
 +
 +                      if (!iwl_is_rfkill(priv))
 +                              priv->cfg->ops->legacy->post_associate(priv);
 +              } else
 +                      iwl_set_no_assoc(priv, vif);
 +      }
 +
 +      if (changes && iwl_is_associated_ctx(ctx) && bss_conf->aid) {
 +              IWL_DEBUG_MAC80211(priv, "Changes (%#x) while associated\n",
 +                                 changes);
 +              ret = iwl_send_rxon_assoc(priv, ctx);
 +              if (!ret) {
 +                      /* Sync active_rxon with latest change. */
 +                      memcpy((void *)&ctx->active,
 +                              &ctx->staging,
 +                              sizeof(struct iwl_rxon_cmd));
 +              }
 +      }
 +
 +      if (changes & BSS_CHANGED_BEACON_ENABLED) {
 +              if (vif->bss_conf.enable_beacon) {
 +                      memcpy(ctx->staging.bssid_addr,
 +                             bss_conf->bssid, ETH_ALEN);
 +                      memcpy(priv->bssid, bss_conf->bssid, ETH_ALEN);
 +                      iwl_led_associate(priv);
 +                      priv->cfg->ops->legacy->config_ap(priv);
 +              } else
 +                      iwl_set_no_assoc(priv, vif);
 +      }
 +
 +      if (changes & BSS_CHANGED_IBSS) {
 +              ret = priv->cfg->ops->legacy->manage_ibss_station(priv, vif,
 +                                                      bss_conf->ibss_joined);
 +              if (ret)
 +                      IWL_ERR(priv, "failed to %s IBSS station %pM\n",
 +                              bss_conf->ibss_joined ? "add" : "remove",
 +                              bss_conf->bssid);
 +      }
 +
 +      mutex_unlock(&priv->mutex);
 +
 +      IWL_DEBUG_MAC80211(priv, "leave\n");
 +}
 +EXPORT_SYMBOL(iwl_legacy_mac_bss_info_changed);
 +
 +irqreturn_t iwl_isr_legacy(int irq, void *data)
 +{
 +      struct iwl_priv *priv = data;
 +      u32 inta, inta_mask;
 +      u32 inta_fh;
 +      unsigned long flags;
 +      if (!priv)
 +              return IRQ_NONE;
 +
 +      spin_lock_irqsave(&priv->lock, flags);
 +
 +      /* Disable (but don't clear!) interrupts here to avoid
 +       *    back-to-back ISRs and sporadic interrupts from our NIC.
 +       * If we have something to service, the tasklet will re-enable ints.
 +       * If we *don't* have something, we'll re-enable before leaving here. */
 +      inta_mask = iwl_read32(priv, CSR_INT_MASK);  /* just for debug */
 +      iwl_write32(priv, CSR_INT_MASK, 0x00000000);
 +
 +      /* Discover which interrupts are active/pending */
 +      inta = iwl_read32(priv, CSR_INT);
 +      inta_fh = iwl_read32(priv, CSR_FH_INT_STATUS);
 +
 +      /* Ignore interrupt if there's nothing in NIC to service.
 +       * This may be due to IRQ shared with another device,
 +       * or due to sporadic interrupts thrown from our NIC. */
 +      if (!inta && !inta_fh) {
 +              IWL_DEBUG_ISR(priv,
 +                      "Ignore interrupt, inta == 0, inta_fh == 0\n");
 +              goto none;
 +      }
 +
 +      if ((inta == 0xFFFFFFFF) || ((inta & 0xFFFFFFF0) == 0xa5a5a5a0)) {
 +              /* Hardware disappeared. It might have already raised
 +               * an interrupt */
 +              IWL_WARN(priv, "HARDWARE GONE?? INTA == 0x%08x\n", inta);
 +              goto unplugged;
 +      }
 +
 +      IWL_DEBUG_ISR(priv, "ISR inta 0x%08x, enabled 0x%08x, fh 0x%08x\n",
 +                    inta, inta_mask, inta_fh);
 +
 +      inta &= ~CSR_INT_BIT_SCD;
 +
 +      /* iwl_irq_tasklet() will service interrupts and re-enable them */
 +      if (likely(inta || inta_fh))
 +              tasklet_schedule(&priv->irq_tasklet);
 +
 +unplugged:
 +      spin_unlock_irqrestore(&priv->lock, flags);
 +      return IRQ_HANDLED;
 +
 +none:
 +      /* re-enable interrupts here since we don't have anything to service. */
++      /* only Re-enable if disabled by irq */
 +      if (test_bit(STATUS_INT_ENABLED, &priv->status))
 +              iwl_enable_interrupts(priv);
 +      spin_unlock_irqrestore(&priv->lock, flags);
 +      return IRQ_NONE;
 +}
 +EXPORT_SYMBOL(iwl_isr_legacy);
 +
 +/*
 + *  iwl_legacy_tx_cmd_protection: Set rts/cts. 3945 and 4965 only share this
 + *  function.
 + */
 +void iwl_legacy_tx_cmd_protection(struct iwl_priv *priv,
 +                             struct ieee80211_tx_info *info,
 +                             __le16 fc, __le32 *tx_flags)
 +{
 +      if (info->control.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) {
 +              *tx_flags |= TX_CMD_FLG_RTS_MSK;
 +              *tx_flags &= ~TX_CMD_FLG_CTS_MSK;
 +              *tx_flags |= TX_CMD_FLG_FULL_TXOP_PROT_MSK;
 +
 +              if (!ieee80211_is_mgmt(fc))
 +                      return;
 +
 +              switch (fc & cpu_to_le16(IEEE80211_FCTL_STYPE)) {
 +              case cpu_to_le16(IEEE80211_STYPE_AUTH):
 +              case cpu_to_le16(IEEE80211_STYPE_DEAUTH):
 +              case cpu_to_le16(IEEE80211_STYPE_ASSOC_REQ):
 +              case cpu_to_le16(IEEE80211_STYPE_REASSOC_REQ):
 +                      *tx_flags &= ~TX_CMD_FLG_RTS_MSK;
 +                      *tx_flags |= TX_CMD_FLG_CTS_MSK;
 +                      break;
 +              }
 +      } else if (info->control.rates[0].flags &
 +                 IEEE80211_TX_RC_USE_CTS_PROTECT) {
 +              *tx_flags &= ~TX_CMD_FLG_RTS_MSK;
 +              *tx_flags |= TX_CMD_FLG_CTS_MSK;
 +              *tx_flags |= TX_CMD_FLG_FULL_TXOP_PROT_MSK;
 +      }
 +}
 +EXPORT_SYMBOL(iwl_legacy_tx_cmd_protection);
Simple merge
Simple merge
index ce3d31f98c555cf8fa36171b36f3d53b59e615c0,046acb816d2f135970c4ee48830ce3903e597018..9050dd9b62d2e9ec46d3860a54b7f6781249e78e
@@@ -416,11 -506,7 +416,11 @@@ int wl1271_plt_stop(struct wl1271 *wl)
  
  /* WL1271 needs a 200ms sleep after power on, and a 20ms sleep before power
     on in case is has been shut down shortly before */
- #define WL1271_PRE_POWER_ON_SLEEP 20 /* in miliseconds */
- #define WL1271_POWER_ON_SLEEP 200 /* in miliseconds */
+ #define WL1271_PRE_POWER_ON_SLEEP 20 /* in milliseconds */
+ #define WL1271_POWER_ON_SLEEP 200 /* in milliseconds */
  
 +/* Macros to handle wl1271.sta_rate_set */
 +#define HW_BG_RATES_MASK      0xffff
 +#define HW_HT_RATES_OFFSET    16
 +
  #endif
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 4e2eb92ba028f48610872ff29d40e7e22ece8c20,de989fc158dd9b8f688ca23d207d725a59c7ea76..43fa986bb5860b5d932365036dbf8098867b20a5
@@@ -5646,9 -5682,9 +5646,9 @@@ bfa_cb_lps_fdisc_comp(void *bfad, void 
        switch (status) {
        case BFA_STATUS_OK:
                /*
-                * Initialiaze the V-Port fields
+                * Initialize the V-Port fields
                 */
 -              __vport_fcid(vport) = bfa_lps_get_pid(vport->lps);
 +              __vport_fcid(vport) = vport->lps->lp_pid;
                vport->vport_stats.fdisc_accepts++;
                bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_OK);
                break;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc fs/coda/inode.c
Simple merge
diff --cc fs/ext4/ext4.h
index bab2387fba43722837b6877abfb02626943abc20,1f253a9a141d3558fb5f278793f52e881c79d708..1de65f5720336c84c27f80e66310660f846e4f31
@@@ -561,7 -561,23 +561,7 @@@ struct ext4_new_group_data 
  #define EXT4_IOC32_SETVERSION_OLD     FS_IOC32_SETVERSION
  #endif
  
- /* Max physical block we can addres w/o extents */
 -
 -/*
 - *  Mount options
 - */
 -struct ext4_mount_options {
 -      unsigned long s_mount_opt;
 -      uid_t s_resuid;
 -      gid_t s_resgid;
 -      unsigned long s_commit_interval;
 -      u32 s_min_batch_time, s_max_batch_time;
 -#ifdef CONFIG_QUOTA
 -      int s_jquota_fmt;
 -      char *s_qf_names[MAXQUOTAS];
 -#endif
 -};
 -
+ /* Max physical block we can address w/o extents */
  #define EXT4_MAX_BLOCK_FILE_PHYS      0xFFFFFFFF
  
  /*
Simple merge
diff --cc fs/ext4/inode.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc init/Kconfig
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/sched.c
Simple merge
Simple merge
Simple merge
diff --cc lib/nlattr.c
Simple merge
Simple merge
diff --cc mm/percpu.c
Simple merge
diff --cc net/Kconfig
Simple merge
diff --cc net/core/dev.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge