Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[pandora-kernel.git] / drivers / net / wireless / iwlwifi / iwl-agn.c
index f71b3f3..b8407d5 100644 (file)
@@ -73,7 +73,7 @@
 #define VD
 #endif
 
-#ifdef CONFIG_IWL4965_SPECTRUM_MEASUREMENT
+#ifdef CONFIG_IWLAGN_SPECTRUM_MEASUREMENT
 #define VS "s"
 #else
 #define VS
@@ -86,6 +86,7 @@ MODULE_DESCRIPTION(DRV_DESCRIPTION);
 MODULE_VERSION(DRV_VERSION);
 MODULE_AUTHOR(DRV_COPYRIGHT);
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("iwl4965");
 
 /*************** STATION TABLE MANAGEMENT ****
  * mac80211 should be examined to determine if sta_info is duplicating
@@ -883,7 +884,7 @@ static void iwl4965_set_rate(struct iwl_priv *priv)
                   (IWL_OFDM_BASIC_RATES_MASK >> IWL_FIRST_OFDM_RATE) & 0xFF;
 }
 
-#ifdef CONFIG_IWL4965_SPECTRUM_MEASUREMENT
+#ifdef CONFIG_IWLAGN_SPECTRUM_MEASUREMENT
 
 #include "iwl-spectrum.h"
 
@@ -1087,7 +1088,7 @@ static void iwl4965_rx_csa(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
 static void iwl4965_rx_spectrum_measure_notif(struct iwl_priv *priv,
                                          struct iwl_rx_mem_buffer *rxb)
 {
-#ifdef CONFIG_IWL4965_SPECTRUM_MEASUREMENT
+#ifdef CONFIG_IWLAGN_SPECTRUM_MEASUREMENT
        struct iwl_rx_packet *pkt = (struct iwl_rx_packet *)rxb->skb->data;
        struct iwl4965_spectrum_notification *report = &(pkt->u.spectrum_notif);
 
@@ -2231,17 +2232,16 @@ static int __iwl4965_up(struct iwl_priv *priv)
        }
 
        /* If platform's RF_KILL switch is NOT set to KILL */
-       if (iwl_read32(priv, CSR_GP_CNTRL) &
-                               CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW)
+       if (iwl_read32(priv, CSR_GP_CNTRL) & CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW)
                clear_bit(STATUS_RF_KILL_HW, &priv->status);
        else
                set_bit(STATUS_RF_KILL_HW, &priv->status);
 
-       if (!test_bit(STATUS_IN_SUSPEND, &priv->status) &&
-           iwl_is_rfkill(priv)) {
+       if (iwl_is_rfkill(priv)) {
+               iwl4965_enable_interrupts(priv);
                IWL_WARNING("Radio disabled by %s RF Kill switch\n",
                    test_bit(STATUS_RF_KILL_HW, &priv->status) ? "HW" : "SW");
-               return -ENODEV;
+               return 0;
        }
 
        iwl_write32(priv, CSR_INT, 0xFFFFFFFF);
@@ -2277,11 +2277,6 @@ static int __iwl4965_up(struct iwl_priv *priv)
        memcpy(priv->ucode_data_backup.v_addr, priv->ucode_data.v_addr,
               priv->ucode_data.len);
 
-       /* We return success when we resume from suspend and rf_kill is on. */
-       if (test_bit(STATUS_RF_KILL_HW, &priv->status) ||
-           test_bit(STATUS_RF_KILL_SW, &priv->status))
-               return 0;
-
        for (i = 0; i < MAX_HW_RESTARTS; i++) {
 
                iwl_clear_stations_table(priv);
@@ -2476,7 +2471,7 @@ static void iwl4965_post_associate(struct iwl_priv *priv)
        unsigned long flags;
 
        if (priv->iw_mode == IEEE80211_IF_TYPE_AP) {
-               IWL_ERROR("%s Should not be called in AP mode\n", __FUNCTION__);
+               IWL_ERROR("%s Should not be called in AP mode\n", __func__);
                return;
        }
 
@@ -2552,7 +2547,7 @@ static void iwl4965_post_associate(struct iwl_priv *priv)
 
        default:
                IWL_ERROR("%s Should not be called in %d mode\n",
-                               __FUNCTION__, priv->iw_mode);
+                         __func__, priv->iw_mode);
                break;
        }
 
@@ -2650,6 +2645,9 @@ static int iwl4965_mac_start(struct ieee80211_hw *hw)
        if (ret)
                goto out_release_irq;
 
+       if (iwl_is_rfkill(priv))
+               goto out;
+
        IWL_DEBUG_INFO("Start UP work done.\n");
 
        if (test_bit(STATUS_IN_SUSPEND, &priv->status))
@@ -2669,6 +2667,7 @@ static int iwl4965_mac_start(struct ieee80211_hw *hw)
                }
        }
 
+out:
        priv->is_open = 1;
        IWL_DEBUG_MAC80211("leave\n");
        return 0;
@@ -3786,7 +3785,7 @@ static ssize_t store_filter_flags(struct device *d,
 static DEVICE_ATTR(filter_flags, S_IWUSR | S_IRUGO, show_filter_flags,
                   store_filter_flags);
 
-#ifdef CONFIG_IWL4965_SPECTRUM_MEASUREMENT
+#ifdef CONFIG_IWLAGN_SPECTRUM_MEASUREMENT
 
 static ssize_t show_measurement(struct device *d,
                                struct device_attribute *attr, char *buf)
@@ -3794,7 +3793,7 @@ static ssize_t show_measurement(struct device *d,
        struct iwl_priv *priv = dev_get_drvdata(d);
        struct iwl4965_spectrum_notification measure_report;
        u32 size = sizeof(measure_report), len = 0, ofs = 0;
-       u8 *data = (u8 *) & measure_report;
+       u8 *data = (u8 *)&measure_report;
        unsigned long flags;
 
        spin_lock_irqsave(&priv->lock, flags);
@@ -3857,7 +3856,7 @@ static ssize_t store_measurement(struct device *d,
 
 static DEVICE_ATTR(measurement, S_IRUSR | S_IWUSR,
                   show_measurement, store_measurement);
-#endif /* CONFIG_IWL4965_SPECTRUM_MEASUREMENT */
+#endif /* CONFIG_IWLAGN_SPECTRUM_MEASUREMENT */
 
 static ssize_t store_retry_rate(struct device *d,
                                struct device_attribute *attr,
@@ -3934,7 +3933,7 @@ static ssize_t show_power_level(struct device *d,
        p += sprintf(p, "\tMODE:%s", (mode < IWL_POWER_AUTO)?"fixed":"auto");
        p += sprintf(p, "\tINDEX:%d", level);
        p += sprintf(p, "\n");
-       return (p - buf + 1);
+       return p - buf + 1;
 }
 
 static DEVICE_ATTR(power_level, S_IWUSR | S_IRUSR, show_power_level,
@@ -4009,7 +4008,7 @@ static ssize_t show_statistics(struct device *d,
        struct iwl_priv *priv = dev_get_drvdata(d);
        u32 size = sizeof(struct iwl_notif_statistics);
        u32 len = 0, ofs = 0;
-       u8 *data = (u8 *) & priv->statistics;
+       u8 *data = (u8 *)&priv->statistics;
        int rc = 0;
 
        if (!iwl_is_alive(priv))
@@ -4105,7 +4104,7 @@ static struct attribute *iwl4965_sysfs_entries[] = {
        &dev_attr_channels.attr,
        &dev_attr_flags.attr,
        &dev_attr_filter_flags.attr,
-#ifdef CONFIG_IWL4965_SPECTRUM_MEASUREMENT
+#ifdef CONFIG_IWLAGN_SPECTRUM_MEASUREMENT
        &dev_attr_measurement.attr,
 #endif
        &dev_attr_power_level.attr,
@@ -4457,8 +4456,10 @@ static int iwl4965_pci_resume(struct pci_dev *pdev)
 
 /* Hardware specific file defines the PCI IDs table for that hardware module */
 static struct pci_device_id iwl_hw_card_ids[] = {
+#ifdef CONFIG_IWL4965
        {IWL_PCI_DEVICE(0x4229, PCI_ANY_ID, iwl4965_agn_cfg)},
        {IWL_PCI_DEVICE(0x4230, PCI_ANY_ID, iwl4965_agn_cfg)},
+#endif /* CONFIG_IWL4965 */
 #ifdef CONFIG_IWL5000
        {IWL_PCI_DEVICE(0x4232, 0x1205, iwl5100_bg_cfg)},
        {IWL_PCI_DEVICE(0x4232, 0x1305, iwl5100_bg_cfg)},