diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/net/wireless/hostap | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'drivers/net/wireless/hostap')
-rw-r--r-- | drivers/net/wireless/hostap/hostap_ap.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_ap.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_config.h | 4 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_cs.c | 117 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_hw.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_ioctl.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_main.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_wlan.h | 2 |
8 files changed, 36 insertions, 118 deletions
diff --git a/drivers/net/wireless/hostap/hostap_ap.c b/drivers/net/wireless/hostap/hostap_ap.c index dbb986946e1a..3d05dc15c6b8 100644 --- a/drivers/net/wireless/hostap/hostap_ap.c +++ b/drivers/net/wireless/hostap/hostap_ap.c | |||
@@ -858,7 +858,10 @@ void hostap_free_data(struct ap_data *ap) | |||
858 | return; | 858 | return; |
859 | } | 859 | } |
860 | 860 | ||
861 | flush_work_sync(&ap->add_sta_proc_queue); | ||
862 | |||
861 | #ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT | 863 | #ifndef PRISM2_NO_KERNEL_IEEE80211_MGMT |
864 | flush_work_sync(&ap->wds_oper_queue); | ||
862 | if (ap->crypt) | 865 | if (ap->crypt) |
863 | ap->crypt->deinit(ap->crypt_priv); | 866 | ap->crypt->deinit(ap->crypt_priv); |
864 | ap->crypt = ap->crypt_priv = NULL; | 867 | ap->crypt = ap->crypt_priv = NULL; |
@@ -2356,7 +2359,7 @@ int prism2_ap_get_sta_qual(local_info_t *local, struct sockaddr addr[], | |||
2356 | } | 2359 | } |
2357 | 2360 | ||
2358 | 2361 | ||
2359 | /* Translate our list of Access Points & Stations to a card independant | 2362 | /* Translate our list of Access Points & Stations to a card independent |
2360 | * format that the Wireless Tools will understand - Jean II */ | 2363 | * format that the Wireless Tools will understand - Jean II */ |
2361 | int prism2_ap_translate_scan(struct net_device *dev, | 2364 | int prism2_ap_translate_scan(struct net_device *dev, |
2362 | struct iw_request_info *info, char *buffer) | 2365 | struct iw_request_info *info, char *buffer) |
diff --git a/drivers/net/wireless/hostap/hostap_ap.h b/drivers/net/wireless/hostap/hostap_ap.h index 655ceeba9612..334e2d0b8e11 100644 --- a/drivers/net/wireless/hostap/hostap_ap.h +++ b/drivers/net/wireless/hostap/hostap_ap.h | |||
@@ -114,7 +114,7 @@ struct sta_info { | |||
114 | * has passed since last received frame from the station, a nullfunc data | 114 | * has passed since last received frame from the station, a nullfunc data |
115 | * frame is sent to the station. If this frame is not acknowledged and no other | 115 | * frame is sent to the station. If this frame is not acknowledged and no other |
116 | * frames have been received, the station will be disassociated after | 116 | * frames have been received, the station will be disassociated after |
117 | * AP_DISASSOC_DELAY. Similarily, a the station will be deauthenticated after | 117 | * AP_DISASSOC_DELAY. Similarly, a the station will be deauthenticated after |
118 | * AP_DEAUTH_DELAY. AP_TIMEOUT_RESOLUTION is the resolution that is used with | 118 | * AP_DEAUTH_DELAY. AP_TIMEOUT_RESOLUTION is the resolution that is used with |
119 | * max inactivity timer. */ | 119 | * max inactivity timer. */ |
120 | #define AP_MAX_INACTIVITY_SEC (5 * 60) | 120 | #define AP_MAX_INACTIVITY_SEC (5 * 60) |
diff --git a/drivers/net/wireless/hostap/hostap_config.h b/drivers/net/wireless/hostap/hostap_config.h index 30acd39d76a2..2c8f71f0ed45 100644 --- a/drivers/net/wireless/hostap/hostap_config.h +++ b/drivers/net/wireless/hostap/hostap_config.h | |||
@@ -30,9 +30,9 @@ | |||
30 | 30 | ||
31 | /* Following defines can be used to remove unneeded parts of the driver, e.g., | 31 | /* Following defines can be used to remove unneeded parts of the driver, e.g., |
32 | * to limit the size of the kernel module. Definitions can be added here in | 32 | * to limit the size of the kernel module. Definitions can be added here in |
33 | * hostap_config.h or they can be added to make command with EXTRA_CFLAGS, | 33 | * hostap_config.h or they can be added to make command with ccflags-y, |
34 | * e.g., | 34 | * e.g., |
35 | * 'make pccard EXTRA_CFLAGS="-DPRISM2_NO_DEBUG -DPRISM2_NO_PROCFS_DEBUG"' | 35 | * 'make pccard ccflags-y="-DPRISM2_NO_DEBUG -DPRISM2_NO_PROCFS_DEBUG"' |
36 | */ | 36 | */ |
37 | 37 | ||
38 | /* Do not include debug messages into the driver */ | 38 | /* Do not include debug messages into the driver */ |
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c index ba54d1b04d22..c052a0d5cbdd 100644 --- a/drivers/net/wireless/hostap/hostap_cs.c +++ b/drivers/net/wireless/hostap/hostap_cs.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/wireless.h> | 12 | #include <linux/wireless.h> |
13 | #include <net/iw_handler.h> | 13 | #include <net/iw_handler.h> |
14 | 14 | ||
15 | #include <pcmcia/cs.h> | ||
16 | #include <pcmcia/cistpl.h> | 15 | #include <pcmcia/cistpl.h> |
17 | #include <pcmcia/cisreg.h> | 16 | #include <pcmcia/cisreg.h> |
18 | #include <pcmcia/ds.h> | 17 | #include <pcmcia/ds.h> |
@@ -437,7 +436,6 @@ static int hostap_cs_probe(struct pcmcia_device *p_dev) | |||
437 | int ret; | 436 | int ret; |
438 | 437 | ||
439 | PDEBUG(DEBUG_HW, "%s: setting Vcc=33 (constant)\n", dev_info); | 438 | PDEBUG(DEBUG_HW, "%s: setting Vcc=33 (constant)\n", dev_info); |
440 | p_dev->conf.IntType = INT_MEMORY_AND_IO; | ||
441 | 439 | ||
442 | ret = prism2_config(p_dev); | 440 | ret = prism2_config(p_dev); |
443 | if (ret) { | 441 | if (ret) { |
@@ -468,74 +466,11 @@ static void prism2_detach(struct pcmcia_device *link) | |||
468 | } | 466 | } |
469 | 467 | ||
470 | 468 | ||
471 | /* run after a CARD_INSERTION event is received to configure the PCMCIA | 469 | static int prism2_config_check(struct pcmcia_device *p_dev, void *priv_data) |
472 | * socket and make the device available to the system */ | ||
473 | |||
474 | static int prism2_config_check(struct pcmcia_device *p_dev, | ||
475 | cistpl_cftable_entry_t *cfg, | ||
476 | cistpl_cftable_entry_t *dflt, | ||
477 | unsigned int vcc, | ||
478 | void *priv_data) | ||
479 | { | 470 | { |
480 | if (cfg->index == 0) | 471 | if (p_dev->config_index == 0) |
481 | return -ENODEV; | 472 | return -EINVAL; |
482 | |||
483 | PDEBUG(DEBUG_EXTRA, "Checking CFTABLE_ENTRY 0x%02X " | ||
484 | "(default 0x%02X)\n", cfg->index, dflt->index); | ||
485 | |||
486 | /* Does this card need audio output? */ | ||
487 | if (cfg->flags & CISTPL_CFTABLE_AUDIO) { | ||
488 | p_dev->conf.Attributes |= CONF_ENABLE_SPKR; | ||
489 | p_dev->conf.Status = CCSR_AUDIO_ENA; | ||
490 | } | ||
491 | |||
492 | /* Use power settings for Vcc and Vpp if present */ | ||
493 | /* Note that the CIS values need to be rescaled */ | ||
494 | if (cfg->vcc.present & (1 << CISTPL_POWER_VNOM)) { | ||
495 | if (vcc != cfg->vcc.param[CISTPL_POWER_VNOM] / | ||
496 | 10000 && !ignore_cis_vcc) { | ||
497 | PDEBUG(DEBUG_EXTRA, " Vcc mismatch - skipping" | ||
498 | " this entry\n"); | ||
499 | return -ENODEV; | ||
500 | } | ||
501 | } else if (dflt->vcc.present & (1 << CISTPL_POWER_VNOM)) { | ||
502 | if (vcc != dflt->vcc.param[CISTPL_POWER_VNOM] / | ||
503 | 10000 && !ignore_cis_vcc) { | ||
504 | PDEBUG(DEBUG_EXTRA, " Vcc (default) mismatch " | ||
505 | "- skipping this entry\n"); | ||
506 | return -ENODEV; | ||
507 | } | ||
508 | } | ||
509 | |||
510 | if (cfg->vpp1.present & (1 << CISTPL_POWER_VNOM)) | ||
511 | p_dev->conf.Vpp = cfg->vpp1.param[CISTPL_POWER_VNOM] / 10000; | ||
512 | else if (dflt->vpp1.present & (1 << CISTPL_POWER_VNOM)) | ||
513 | p_dev->conf.Vpp = dflt->vpp1.param[CISTPL_POWER_VNOM] / 10000; | ||
514 | |||
515 | /* Do we need to allocate an interrupt? */ | ||
516 | p_dev->conf.Attributes |= CONF_ENABLE_IRQ; | ||
517 | |||
518 | /* IO window settings */ | ||
519 | PDEBUG(DEBUG_EXTRA, "IO window settings: cfg->io.nwin=%d " | ||
520 | "dflt->io.nwin=%d\n", | ||
521 | cfg->io.nwin, dflt->io.nwin); | ||
522 | p_dev->resource[0]->end = p_dev->resource[1]->end = 0; | ||
523 | if ((cfg->io.nwin > 0) || (dflt->io.nwin > 0)) { | ||
524 | cistpl_io_t *io = (cfg->io.nwin) ? &cfg->io : &dflt->io; | ||
525 | p_dev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; | ||
526 | p_dev->resource[0]->flags |= | ||
527 | pcmcia_io_cfg_data_width(io->flags); | ||
528 | p_dev->io_lines = io->flags & CISTPL_IO_LINES_MASK; | ||
529 | p_dev->resource[0]->start = io->win[0].base; | ||
530 | p_dev->resource[0]->end = io->win[0].len; | ||
531 | if (io->nwin > 1) { | ||
532 | p_dev->resource[1]->flags = p_dev->resource[0]->flags; | ||
533 | p_dev->resource[1]->start = io->win[1].base; | ||
534 | p_dev->resource[1]->end = io->win[1].len; | ||
535 | } | ||
536 | } | ||
537 | 473 | ||
538 | /* This reserves IO space but doesn't actually enable it */ | ||
539 | return pcmcia_request_io(p_dev); | 474 | return pcmcia_request_io(p_dev); |
540 | } | 475 | } |
541 | 476 | ||
@@ -557,6 +492,10 @@ static int prism2_config(struct pcmcia_device *link) | |||
557 | } | 492 | } |
558 | 493 | ||
559 | /* Look for an appropriate configuration table entry in the CIS */ | 494 | /* Look for an appropriate configuration table entry in the CIS */ |
495 | link->config_flags |= CONF_AUTO_SET_VPP | CONF_AUTO_AUDIO | | ||
496 | CONF_AUTO_CHECK_VCC | CONF_AUTO_SET_IO | CONF_ENABLE_IRQ; | ||
497 | if (ignore_cis_vcc) | ||
498 | link->config_flags &= ~CONF_AUTO_CHECK_VCC; | ||
560 | ret = pcmcia_loop_config(link, prism2_config_check, NULL); | 499 | ret = pcmcia_loop_config(link, prism2_config_check, NULL); |
561 | if (ret) { | 500 | if (ret) { |
562 | if (!ignore_cis_vcc) | 501 | if (!ignore_cis_vcc) |
@@ -579,43 +518,23 @@ static int prism2_config(struct pcmcia_device *link) | |||
579 | hw_priv->link = link; | 518 | hw_priv->link = link; |
580 | 519 | ||
581 | /* | 520 | /* |
582 | * Make sure the IRQ handler cannot proceed until at least | 521 | * We enable IRQ here, but IRQ handler will not proceed |
583 | * dev->base_addr is initialized. | 522 | * until dev->base_addr is set below. This protect us from |
523 | * receive interrupts when driver is not initialized. | ||
584 | */ | 524 | */ |
585 | spin_lock_irqsave(&local->irq_init_lock, flags); | ||
586 | |||
587 | ret = pcmcia_request_irq(link, prism2_interrupt); | 525 | ret = pcmcia_request_irq(link, prism2_interrupt); |
588 | if (ret) | 526 | if (ret) |
589 | goto failed_unlock; | 527 | goto failed; |
590 | 528 | ||
591 | /* | 529 | ret = pcmcia_enable_device(link); |
592 | * This actually configures the PCMCIA socket -- setting up | ||
593 | * the I/O windows and the interrupt mapping, and putting the | ||
594 | * card and host interface into "Memory and IO" mode. | ||
595 | */ | ||
596 | ret = pcmcia_request_configuration(link, &link->conf); | ||
597 | if (ret) | 530 | if (ret) |
598 | goto failed_unlock; | 531 | goto failed; |
599 | 532 | ||
533 | spin_lock_irqsave(&local->irq_init_lock, flags); | ||
600 | dev->irq = link->irq; | 534 | dev->irq = link->irq; |
601 | dev->base_addr = link->resource[0]->start; | 535 | dev->base_addr = link->resource[0]->start; |
602 | |||
603 | spin_unlock_irqrestore(&local->irq_init_lock, flags); | 536 | spin_unlock_irqrestore(&local->irq_init_lock, flags); |
604 | 537 | ||
605 | /* Finally, report what we've done */ | ||
606 | printk(KERN_INFO "%s: index 0x%02x: ", | ||
607 | dev_info, link->conf.ConfigIndex); | ||
608 | if (link->conf.Vpp) | ||
609 | printk(", Vpp %d.%d", link->conf.Vpp / 10, | ||
610 | link->conf.Vpp % 10); | ||
611 | if (link->conf.Attributes & CONF_ENABLE_IRQ) | ||
612 | printk(", irq %d", link->irq); | ||
613 | if (link->resource[0]) | ||
614 | printk(" & %pR", link->resource[0]); | ||
615 | if (link->resource[1]) | ||
616 | printk(" & %pR", link->resource[1]); | ||
617 | printk("\n"); | ||
618 | |||
619 | local->shutdown = 0; | 538 | local->shutdown = 0; |
620 | 539 | ||
621 | sandisk_enable_wireless(dev); | 540 | sandisk_enable_wireless(dev); |
@@ -626,8 +545,6 @@ static int prism2_config(struct pcmcia_device *link) | |||
626 | 545 | ||
627 | return ret; | 546 | return ret; |
628 | 547 | ||
629 | failed_unlock: | ||
630 | spin_unlock_irqrestore(&local->irq_init_lock, flags); | ||
631 | failed: | 548 | failed: |
632 | kfree(hw_priv); | 549 | kfree(hw_priv); |
633 | prism2_release((u_long)link); | 550 | prism2_release((u_long)link); |
@@ -703,7 +620,7 @@ static int hostap_cs_resume(struct pcmcia_device *link) | |||
703 | return 0; | 620 | return 0; |
704 | } | 621 | } |
705 | 622 | ||
706 | static struct pcmcia_device_id hostap_cs_ids[] = { | 623 | static const struct pcmcia_device_id hostap_cs_ids[] = { |
707 | PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7100), | 624 | PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7100), |
708 | PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7300), | 625 | PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7300), |
709 | PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0777), | 626 | PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0777), |
@@ -779,9 +696,7 @@ MODULE_DEVICE_TABLE(pcmcia, hostap_cs_ids); | |||
779 | 696 | ||
780 | 697 | ||
781 | static struct pcmcia_driver hostap_driver = { | 698 | static struct pcmcia_driver hostap_driver = { |
782 | .drv = { | 699 | .name = "hostap_cs", |
783 | .name = "hostap_cs", | ||
784 | }, | ||
785 | .probe = hostap_cs_probe, | 700 | .probe = hostap_cs_probe, |
786 | .remove = prism2_detach, | 701 | .remove = prism2_detach, |
787 | .owner = THIS_MODULE, | 702 | .owner = THIS_MODULE, |
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c index e9d9d622a9b0..a8bddd81b4d1 100644 --- a/drivers/net/wireless/hostap/hostap_hw.c +++ b/drivers/net/wireless/hostap/hostap_hw.c | |||
@@ -2621,7 +2621,7 @@ static irqreturn_t prism2_interrupt(int irq, void *dev_id) | |||
2621 | iface = netdev_priv(dev); | 2621 | iface = netdev_priv(dev); |
2622 | local = iface->local; | 2622 | local = iface->local; |
2623 | 2623 | ||
2624 | /* Detect early interrupt before driver is fully configued */ | 2624 | /* Detect early interrupt before driver is fully configured */ |
2625 | spin_lock(&local->irq_init_lock); | 2625 | spin_lock(&local->irq_init_lock); |
2626 | if (!dev->base_addr) { | 2626 | if (!dev->base_addr) { |
2627 | if (net_ratelimit()) { | 2627 | if (net_ratelimit()) { |
@@ -3317,7 +3317,13 @@ static void prism2_free_local_data(struct net_device *dev) | |||
3317 | 3317 | ||
3318 | unregister_netdev(local->dev); | 3318 | unregister_netdev(local->dev); |
3319 | 3319 | ||
3320 | flush_scheduled_work(); | 3320 | flush_work_sync(&local->reset_queue); |
3321 | flush_work_sync(&local->set_multicast_list_queue); | ||
3322 | flush_work_sync(&local->set_tim_queue); | ||
3323 | #ifndef PRISM2_NO_STATION_MODES | ||
3324 | flush_work_sync(&local->info_queue); | ||
3325 | #endif | ||
3326 | flush_work_sync(&local->comms_qual_update); | ||
3321 | 3327 | ||
3322 | lib80211_crypt_info_free(&local->crypt_info); | 3328 | lib80211_crypt_info_free(&local->crypt_info); |
3323 | 3329 | ||
diff --git a/drivers/net/wireless/hostap/hostap_ioctl.c b/drivers/net/wireless/hostap/hostap_ioctl.c index a85e43a8d758..12de46407c71 100644 --- a/drivers/net/wireless/hostap/hostap_ioctl.c +++ b/drivers/net/wireless/hostap/hostap_ioctl.c | |||
@@ -1696,7 +1696,7 @@ static int prism2_request_scan(struct net_device *dev) | |||
1696 | hostap_set_word(dev, HFA384X_RID_CNFROAMINGMODE, | 1696 | hostap_set_word(dev, HFA384X_RID_CNFROAMINGMODE, |
1697 | HFA384X_ROAMING_FIRMWARE); | 1697 | HFA384X_ROAMING_FIRMWARE); |
1698 | 1698 | ||
1699 | return 0; | 1699 | return ret; |
1700 | } | 1700 | } |
1701 | 1701 | ||
1702 | #else /* !PRISM2_NO_STATION_MODES */ | 1702 | #else /* !PRISM2_NO_STATION_MODES */ |
@@ -1945,7 +1945,7 @@ static char * __prism2_translate_scan(local_info_t *local, | |||
1945 | } | 1945 | } |
1946 | 1946 | ||
1947 | 1947 | ||
1948 | /* Translate scan data returned from the card to a card independant | 1948 | /* Translate scan data returned from the card to a card independent |
1949 | * format that the Wireless Tools will understand - Jean II */ | 1949 | * format that the Wireless Tools will understand - Jean II */ |
1950 | static inline int prism2_translate_scan(local_info_t *local, | 1950 | static inline int prism2_translate_scan(local_info_t *local, |
1951 | struct iw_request_info *info, | 1951 | struct iw_request_info *info, |
@@ -2043,7 +2043,7 @@ static inline int prism2_ioctl_giwscan_sta(struct net_device *dev, | |||
2043 | * until results are ready for various reasons. | 2043 | * until results are ready for various reasons. |
2044 | * First, managing wait queues is complex and racy | 2044 | * First, managing wait queues is complex and racy |
2045 | * (there may be multiple simultaneous callers). | 2045 | * (there may be multiple simultaneous callers). |
2046 | * Second, we grab some rtnetlink lock before comming | 2046 | * Second, we grab some rtnetlink lock before coming |
2047 | * here (in dev_ioctl()). | 2047 | * here (in dev_ioctl()). |
2048 | * Third, the caller can wait on the Wireless Event | 2048 | * Third, the caller can wait on the Wireless Event |
2049 | * - Jean II */ | 2049 | * - Jean II */ |
diff --git a/drivers/net/wireless/hostap/hostap_main.c b/drivers/net/wireless/hostap/hostap_main.c index 25a2722c8a98..d5084829c9e5 100644 --- a/drivers/net/wireless/hostap/hostap_main.c +++ b/drivers/net/wireless/hostap/hostap_main.c | |||
@@ -79,13 +79,8 @@ struct net_device * hostap_add_interface(struct local_info *local, | |||
79 | if (!rtnl_locked) | 79 | if (!rtnl_locked) |
80 | rtnl_lock(); | 80 | rtnl_lock(); |
81 | 81 | ||
82 | ret = 0; | ||
83 | if (strchr(dev->name, '%')) | ||
84 | ret = dev_alloc_name(dev, dev->name); | ||
85 | |||
86 | SET_NETDEV_DEV(dev, mdev->dev.parent); | 82 | SET_NETDEV_DEV(dev, mdev->dev.parent); |
87 | if (ret >= 0) | 83 | ret = register_netdevice(dev); |
88 | ret = register_netdevice(dev); | ||
89 | 84 | ||
90 | if (!rtnl_locked) | 85 | if (!rtnl_locked) |
91 | rtnl_unlock(); | 86 | rtnl_unlock(); |
@@ -891,7 +886,6 @@ void hostap_setup_dev(struct net_device *dev, local_info_t *local, | |||
891 | 886 | ||
892 | SET_ETHTOOL_OPS(dev, &prism2_ethtool_ops); | 887 | SET_ETHTOOL_OPS(dev, &prism2_ethtool_ops); |
893 | 888 | ||
894 | netif_stop_queue(dev); | ||
895 | } | 889 | } |
896 | 890 | ||
897 | static int hostap_enable_hostapd(local_info_t *local, int rtnl_locked) | 891 | static int hostap_enable_hostapd(local_info_t *local, int rtnl_locked) |
diff --git a/drivers/net/wireless/hostap/hostap_wlan.h b/drivers/net/wireless/hostap/hostap_wlan.h index 1c66b3c1030d..88dc6a52bdf1 100644 --- a/drivers/net/wireless/hostap/hostap_wlan.h +++ b/drivers/net/wireless/hostap/hostap_wlan.h | |||
@@ -853,7 +853,7 @@ struct local_info { | |||
853 | struct work_struct comms_qual_update; | 853 | struct work_struct comms_qual_update; |
854 | 854 | ||
855 | /* RSSI to dBm adjustment (for RX descriptor fields) */ | 855 | /* RSSI to dBm adjustment (for RX descriptor fields) */ |
856 | int rssi_to_dBm; /* substract from RSSI to get approximate dBm value */ | 856 | int rssi_to_dBm; /* subtract from RSSI to get approximate dBm value */ |
857 | 857 | ||
858 | /* BSS list / protected by local->lock */ | 858 | /* BSS list / protected by local->lock */ |
859 | struct list_head bss_list; | 859 | struct list_head bss_list; |